来自管道作业的 Jenkins log4j 漏洞测试
Jenkins log4j vulnerability testing from pipeline job
我正在尝试确保我的 Jenkins 实例不能被最新的 log4j 漏洞利用。
我有一个运行的管道脚本,我尝试按照以下说明操作:
https://community.jenkins.io/t/apache-log4j-2-vulnerability-cve-2021-44228/990
这是我的管道脚本的阶段之一:
stage('Building image aaa') {
steps{
script {
sh "echo executing"
org.apache.logging.log4j.core.lookup.JndiLookup.class.protectionDomain.codeSource
sh "docker build --build-arg SCRIPT_ENVIRONMENT=staging -t $IMAGE_REPO_NAME:$IMAGE_TAG ."
}
}
}
但是我遇到了与此处描述的错误不同的错误,我不确定我是否正确检查了这一点。这是错误:
groovy.lang.MissingPropertyException: No such property: org for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:271)
at org.kohsuke.groovy.sandbox.impl.Checker.call(Checker.java:353)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:357)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:333)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:333)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:333)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
at WorkflowScript.run(WorkflowScript:31)
at ___cps.transform___(Native Method)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:74)
at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
....etc
我认为 class 名称不会被直接解释为声明性管道中的 groovy codeSource 参数(与脚本化管道相反)
尝试“”的方法:
node{
def cl = load 'Classes.groovy'
def a = cl.getProperty("org.apache.logging.log4j.core.lookup.JndiLookup").protectionDomain.codeSource
...
}
请注意 getCLassLoader()
默认情况下是不允许的,并且应该要求 。
这可能是检查 Jenkins 是否存在 log4j 漏洞(通过插件或其他方式)的最简单方法。
- 转到https://your-jenkins.domain/script
- 粘贴
org.apache.logging.log4j.core.lookup.JndiLookup.class.protectionDomain.codeSource
如果输出是groovy.lang.MissingPropertyException: No such property: org for class: Script1
那么你就很好,否则你就不好
这样您就不必像中提到的那样更改您的管道来测试或通过审批流程,您只需粘贴并验证即可,无需额外配置。
我正在尝试确保我的 Jenkins 实例不能被最新的 log4j 漏洞利用。
我有一个运行的管道脚本,我尝试按照以下说明操作:
https://community.jenkins.io/t/apache-log4j-2-vulnerability-cve-2021-44228/990
这是我的管道脚本的阶段之一:
stage('Building image aaa') {
steps{
script {
sh "echo executing"
org.apache.logging.log4j.core.lookup.JndiLookup.class.protectionDomain.codeSource
sh "docker build --build-arg SCRIPT_ENVIRONMENT=staging -t $IMAGE_REPO_NAME:$IMAGE_TAG ."
}
}
}
但是我遇到了与此处描述的错误不同的错误,我不确定我是否正确检查了这一点。这是错误:
groovy.lang.MissingPropertyException: No such property: org for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:63)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:271)
at org.kohsuke.groovy.sandbox.impl.Checker.call(Checker.java:353)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:357)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:333)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:333)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:333)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:29)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
at WorkflowScript.run(WorkflowScript:31)
at ___cps.transform___(Native Method)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:74)
at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
....etc
我认为 class 名称不会被直接解释为声明性管道中的 groovy codeSource 参数(与脚本化管道相反)
尝试“
node{
def cl = load 'Classes.groovy'
def a = cl.getProperty("org.apache.logging.log4j.core.lookup.JndiLookup").protectionDomain.codeSource
...
}
请注意 getCLassLoader()
默认情况下是不允许的,并且应该要求
这可能是检查 Jenkins 是否存在 log4j 漏洞(通过插件或其他方式)的最简单方法。
- 转到https://your-jenkins.domain/script
- 粘贴
org.apache.logging.log4j.core.lookup.JndiLookup.class.protectionDomain.codeSource
如果输出是groovy.lang.MissingPropertyException: No such property: org for class: Script1
那么你就很好,否则你就不好
这样您就不必像