ZeroXJacks opened a new issue, #4064:
URL: https://github.com/apache/logging-log4j2/issues/4064

   ## Background:
   Log4j 2 currently enables XInclude Aware processing by default within its 
XML configuration parser (XmlConfiguration.java). While this is a documented 
feature for modularizing configuration files, it provides powerful 
primitives—specifically the ability to fetch external local or remote 
resources—that can be leveraged in post-exploitation scenarios.
   
   ## The Security Concern:
   In modern distributed and cloud environments, the logging configuration 
source is often influenced by environment variables (e.g., 
LOG4J_CONFIGURATION_FILE). If an environment is partially compromised, an 
attacker can use the default-enabled XInclude feature to perform:
   
   Local File Read: Exfiltrating sensitive system files /etc/passwd, cloud 
instance credentials.
   SSRF: Pivoting to internal network services or querying cloud metadata 
endpoints (169.254.169.254).
   
   Defense in Depth Argument:
   While the Log4j threat model considers the configuration file a "trusted 
data source," modern security best practices (Secure by Default) suggest that 
high-risk features should not be active unless explicitly required.
   
   Other logging frameworks have recently moved towards restricting similar 
capabilities in their parsers (e.g., Logback CVE-2025-11226) to mitigate the 
risk of configuration-level attacks. Making XInclude an opt-in feature would 
significantly reduce the "blast radius" in cases where the configuration path 
or environment variables are controlled by an adversary.
   
   Proposed Change:
   Modify XmlConfiguration to disable XInclude by default and introduce a 
dedicated system property or configuration attribute to enable it.
   
   Suggested Property: log4j2.enableXInclude (defaults to false).
   Implementation:
   ```java
   // factory initialization in XmlConfiguration.java
   boolean enableXInclude = 
PropertiesUtil.getProperties().getBooleanProperty("log4j2.enableXInclude", 
false);
   factory.setXIncludeAware(enableXInclude);
   ```
   This change ensures that users who do not require modular XML includes are 
protected by default, while those who do can easily re-enable the feature.
   ## Conclusion:
   Following private discussions with the Log4j security team, I am opening 
this public issue to gather community feedback on aligning Log4j's default XML 
parser settings with "Secure by Default" principles without breaking existing 
workflows for power users.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to