Also note that you can use lists.apache.org <http://lists.apache.org/> to view the emails of any public ASF list to ensure you didn’t miss any.
Ralph > On Oct 9, 2023, at 4:14 PM, Christian Grobmeier <grobme...@apache.org> wrote: > > Since Piotrs response went to spam (thanks for confirming) I'd like to make > sure you reveived Volkans questions as well. Please let me know if you did. > > If you didn't, he sent his response to the mailing list, if you need help > subscribing, please let me know > > On Mon, Oct 9, 2023, at 22:28, Volkan Yazıcı wrote: >> *[I am sharing my earlier response (almost) verbatim below.]* >> >> I would like to address your both old and the most recent email *myself* – >> that is, it only reflects my personal view, and not of the PMC. >> >>> A HTML-safe layout is only achieved if >> >>> defined akin to: >> >>> >> >>> <PatternLayout pattern="%d{HH:... >> >> >> The definition of *HTML-safe* needs some explanation here. If you mean, the >> rendering should be a valid HTML document where the input is sufficiently >> escaped, then certainly the output of the `PatternLayout` configuration you >> shared won't produce that. Indeed the implicit injection of the stack trace >> is unexpected, yet you already garbled the HTML-safe content with the first >> directives you provided. Imagine my thread name is `<html>`, etc. My point >> is, if you want your layout to produce a valid HTML for each rendered log >> event, you should be using `HtmlLayout`. The same applies to JSON too. You >> should use `JsonTemplateLayout`, not `<PatternLayout >> pattern="%enc{%m}{JSON}%n"/>`. >> >> >>> Would Log4j be willing to improve the usability of encoding in pattern >>> layouts to make it less likely for users to shoot themselves in the foot? >> >> >> We provide best in the class support for JSON, HTML, etc. with their >> associated dedicated layouts. If users insist on using `PatternLayout` for >> those purposes, it feels to me somebody is stubbornly trying to pass SQL >> arguments with string concatenation. >> >> >> Nevertheless, if you have any proposals on _"improving the usability of >> encoding in pattern layouts to make it less likely for users to shoot >> themselves in the foot"_, you are more than welcome! The entire Log4j crew >> would be happy to assist you for such contributions. >> >> >>> I did go ahead and create a proof-of-concept encoder for >> >>> log4j that securely encodes exceptions without completely >> >>> mangling the stack traces: >> >>> >> >>> https://github.com/vlkl-sap/log4j-encoder >> >>> >> >>> There are two different implementations of the encoder with >> >>> different trade-offs (to be discussed). I also implemented a >> >>> new, more encompassing text encoder, based on URL >> >>> encoding, but this aspect is independent. >> >> >> Before writing any code, would you mind helping us with the following >> questions, please? >> >> >> 1. Do you have a use case? If so, where does `HtmlLayout` fall short of >> addressing it? >> 2. Assuming `HtmlLayout` doesn't address your needs, can we [in a >> backward-compatible manner] improve `HtmlLayout` to make it work for you? >> 3. Can we [in a backward-compatible manner] incorporate your >> `PatternLayout` changes? >> >> Kind regards. >> >> >> On Mon, Oct 9, 2023 at 5:24 PM Klebanov, Vladimir >> <vladimir.kleba...@sap.com.invalid> wrote: >> >>> Thanks, Piotr. I don't know what happened to your replies (maybe the spam >>> filter dropped them), but I am happy that we recovered from that now. >>> >>> Log injections are definitely security issues, but if you prefer to talk >>> about them in the open, I will follow suit. >>> >>> For context: a log injection occurs when an application logs user-supplied >>> data (which is often the case). Attacker can exploit log injection to forge >>> log records and impede forensics or exploit potential vulnerabilities in >>> log-processing systems. There is a variety of string classes that attackers >>> can try to inject, including newlines, ANSI sequences, Unicode direction >>> markers, Unicode homographs, JavaScript, PHP, etc. >>> >>> Ideally, applications defend against log injection attacks by encoding >>> (aka escaping) user-supplied data before logging. The specific encoding >>> depends on the desired level of protection. URL-encoding, for instance, >>> would protect against all of the above-mentioned attack classes, but weaker >>> encodings may be sometimes acceptable as well. >>> >>> A natural place to implement encoding is in the pattern layout >>> configuration. Some encoding pattern converters are already available in >>> log4j, but there are still gaps that I would like to help fill. I think >>> there are roughly three of them: >>> >>> 1. The documentation should more prominently explain the issue. Today, >>> most users would probably think that the following layout is HTML-safe, >>> while it's not: >>> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level - >>> %enc{%m}{HTML}%n"/> >>> >>> 2. The HTML encoder is not always sufficient. I would like to see an >>> addition of a stricter one, such as a URL-encoder. >>> >>> 3. The current encoders encode all structured data (like the complete >>> exception stacktrace) and not just the injection-prone parts (i.e., the >>> exception message). This means I cannot replace the insecure layout above >>> with the secure layout >>> >>> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level - >>> %enc{%m}{HTML} %enc{%xEx}{HTML}%n"/> >>> >>> without changing how logs are parsed (as the stack frames will not be >>> separated by newlines anymore). >>> >>> I have created a PoC implementation of an improved encoder, but I would >>> obviously need help to make it productive. Is anyone here interested in >>> that? Questions and comments are welcome as well. >>> >>> Thanks, >>> Vladimir >>> >>> >>> -----Original Message----- >>> From: Piotr P. Karwasz <piotr.karw...@gmail.com> >>> Sent: Thursday, 5 October 2023 22:06 >>> To: dev@logging.apache.org; Klebanov, Vladimir <vladimir.kleba...@sap.com> >>> Subject: Re: [log4j] Improving log4j security >>> >>> [You don't often get email from piotr.karw...@gmail.com. Learn why this >>> is important at https://aka.ms/LearnAboutSenderIdentification ] >>> >>> Hi Vladimir, >>> >>> On Thu, 5 Oct 2023 at 21:47, Klebanov, Vladimir >>> <vladimir.kleba...@sap.com.invalid> wrote: >>>> I would like to contribute some code in order to make log4j usage more >>> secure. I have now sent two emails to the log4j security team but did not >>> receive a response. Is anybody here interested? How can we discuss this >>> further? >>> >>> Both times (10 Aug 2023, 23:19 and 29 Aug 2023, 20:49) we sent an >>> answer to your address at sap.com. >>> >>> Anyway the general consensus was that the issue with generating HTML >>> using PatternLayout does not constitute a security problem and you can >>> discuss it on this mailing list or file an issue in Github issues. >>> >>> Piotr >>>