[ https://issues.apache.org/jira/browse/LOG4J2-3117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17379438#comment-17379438 ]
Paul Burrowes edited comment on LOG4J2-3117 at 7/12/21, 10:31 PM: ------------------------------------------------------------------ I don't expect async actions to need a {{doPrivileged()}} wrapper as they are being run in a thread created in a privileged context. The difficulty with sync actions and file creation is caused by them being executed in the security context of the code that called {{log().}} If plugins were to be injected from an unprivileged context this would be necessary but supporting that seems unhelpful. I will check this belief that async actions have sufficient privileges. was (Author: pburrowesoc): I don't expect async actions to need a {{doPrivileged()}} wrapper as they are being run in a thread created in a privileged context. The difficulty with sync actions and file creation is caused by them being executed in the security context of the code that called {{log().}} If plugins were to be injected from an unprivileged context this would be necessary but supporting that seems unhelpful. I will check this belief. > Log rollover throws AccessControlException if called from an unprivileged > context > --------------------------------------------------------------------------------- > > Key: LOG4J2-3117 > URL: https://issues.apache.org/jira/browse/LOG4J2-3117 > Project: Log4j 2 > Issue Type: Bug > Reporter: Paul Burrowes > Priority: Minor > > Similar to LOG4J2-150. When using a security manager, logging from an > unprivileged context can attempt to access system properties directly. > Attempting to hack around this with a custom {{RolloverStrategy}} shows that > other privileged actions such as creating files during rollover (done > directly in {{RollingFileManager}}) also fail. I believe rollover should be > performed inside a {{doPrivileged}} block to address these issues. > {code:java} > java.security.AccessControlException: access denied > ("java.util.PropertyPermission" "user.dir" "read") > at > java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) > at > java.security.AccessController.checkPermission(AccessController.java:884) > at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) > at > java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1294) > at java.lang.System.getProperty(System.java:717) > at java.io.UnixFileSystem.resolve(UnixFileSystem.java:133) > at java.io.File.getAbsolutePath(File.java:556) > at > org.apache.logging.log4j.core.appender.rolling.action.FileRenameAction.execute(FileRenameAction.java:161) > at > org.apache.logging.log4j.core.appender.rolling.action.FileRenameAction.execute(FileRenameAction.java:66) > at > org.apache.logging.log4j.core.appender.rolling.RollingFileManager.rollover(RollingFileManager.java:369) > at > org.apache.logging.log4j.core.appender.rolling.RollingFileManager.rollover(RollingFileManager.java:278) > at > org.apache.logging.log4j.core.appender.rolling.RollingFileManager.checkRollover(RollingFileManager.java:218) > at > org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:267) > at > org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156) > at > org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129) > at > org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120) > at > org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84) > at > org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:448) > at > org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:433) > at > org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417) > at > org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:403) > at > org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63) > at org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146) > at org.apache.log4j.Category.maybeLog(Category.java:452) > at org.apache.log4j.Category.info(Category.java:262) > at MySipServlet.sendInviteToMediaServer(MySipServlet.java:614) > at MySipServlet.doInvite(MySipServlet.java:119) > at javax.servlet.sip.SipServlet.doRequest(Unknown Source) > at MySipServlet.doRequest(MySipServlet.java:768) > at javax.servlet.sip.SipServlet.service(Unknown Source) > at MyServletHandler$2.call(MyServletHandler.java:344) > at MyServletHandler$2.call(MyServletHandler.java:341) > at MyEventHandler.doInvocation(MyEventHandler:182) > at MyEventHandler.deliverEvent(MyEventHandler:154) > at MyEventHandler.processEvent(MyEventHandler:98) > at MyEventRouter.run(MyEventRouter:100) > at MyContextLogger$1.run(MyContextLogger:24) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at MyExecutorThreadFactory$1$1.run(MyExecutorThreadFactory:458) > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)