[logback-dev] [JIRA] Created: (LBCLASSIC-294) <if> requires Janino, which is considered harmful
Joachim Durchholz (JIRA)
noreply-jira at qos.ch
Fri Sep 9 12:20:16 CEST 2011
<if> requires Janino, which is considered harmful
-------------------------------------------------
Key: LBCLASSIC-294
URL: http://jira.qos.ch/browse/LBCLASSIC-294
Project: logback-classic
Issue Type: Improvement
Components: joran
Affects Versions: 0.9.29
Environment: (Assuming 0.9.29 is the currently released version)
Reporter: Joachim Durchholz
Assignee: Logback dev list
Priority: Blocker
More on Janino below, here's the proposal:
Have a variant of <if>, namely <if property="property name">.
If the property does not exist or is false, use the <else> part, otherwise, use the <then> part.
Problems with Janino:
1) Bloat. A footprint of 1 megabyte is amazingly small for an almost full Java compiler, but it still more than doubles the footprint for logging.
2) Reliability. If the logging configuration is user editable, they might add a Java expression that calls arbitrary internal APIs.
I am aware that http://logback.qos.ch/manual/configuration.html#conditional claims that the generated code is sandboxed ("only context properties or system properties are accessible"). However, sandboxes require full security audits. Janino would require a security audit. I doubt that there are enough developer resources for this task available; the task could be reduced for Logback by keeping the available API narrow (just a bunch of properties is extremely tight), but I doubt that that is possible for Janino.
Worse, those audits would need to be repeated for every new revision.
3) Security. Expressions that make it outside the sandbox could do any amount of nasty things. Intentionally or not (I can imagine scenarios for both).
These problems do not exist for programmer-defined properties. Only PropertyDefiner descendants can be called from the configuration, and these are statically checkable in source. There is no need to worry about expressions that might try to call arbitrary internal APIs.
(If I wanted to live with that kind of risk I'd be programming in Lisp, dammit!)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.qos.ch/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the logback-dev
mailing list