People have also not noticed the thread folding link after it's been there for a while, or the fact that the site has a footer with links. It's difficult to notice things in a grey-on-grey color scheme.
This vulnerability is equivalent using printf(userData) when you should have done printf("%s", userData). From the perspective of the library developer, the feature is only available in the format string.
The log4j maintainers seem to have realized that this (the "%m" in a PatternLayout doing lookups) is a bad idea around version 2.10 (released in 2017) or even version 2.7[2] (released in 2016). These versions both included changes that allowed you to disable this behavior. Unfortunately, the Java compatibility mindset meant that they didn't take the further logical step of making the behavior that disables lookups the default.
I think this vulnerability should be used as a lesson against the vagaries of the classic Java API design issues that we're now finally starting to turn away from. Having an extensible formatting mechanism is not necessary a bad idea, but the problem with this and so many other "magic" features provided by Java libraries is that they are:
* Opt out, instead of opt-in
* Hard to discover - if you don't read the ENTIRE log4j documentation (which is pretty large!), it's hard know that this stuff is happening.
* Too inclusive - adding JNDI was a bad idea, but even allowing things like environment variables or JMX Beans to be looked-up wholesale from a non-sanitized message is a bad idea.
The problem is much deeper than log4j really. In hindsight, features like JNDI, RMI, and most of all Java Serialization should have never been part of Java in the first place.
Imagine that the Imagination Quotient is a number between 0 and 1, with 0 being the inability to imagine even what you're looking at, and 1 representing the ability to imagine a real thing unseen in full detail. The Imagination Quotient required to imagine that someone's utility is 80 is would be an proper imaginary number.
I'm fine with measuring performance, and sometimes tailoring content, but prefer to opt-out of ad targeting and offline matching.
Most all of them are missing proper opt-outs that really should be there, however it's a good start.
Thinking about it, the one I have the most disdain for is The Guardian's; it has a quick UI but the accept-all button is labelled "Yes I'm Happy".