来自管道作业的 Jenkins log4j 漏洞测试

Rem*_*_me 5 java security log4j jenkins

我试图确保我的 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 ."
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

但我得到的错误与此处描述的错误不同,我不确定我是否正确检查了这一点。这是错误:

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$7.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
Run Code Online (Sandbox Code Playgroud)

ant*_*ant 2

这可能是检查 Jenkins 是否存在 log4j 漏洞的最简单方法(通过插件或其他方式)。

  1. 转到https://your-jenkins.domain/script
  2. 粘贴org.apache.logging.log4j.core.lookup.JndiLookup.class.protectionDomain.codeSource

如果输出是groovy.lang.MissingPropertyException: No such property: org for class: Script1You're good 那么你就不好。

这样,您就不必像其他答案中提到的那样更改管道来测试或完成审批流程,您只需粘贴并验证即可,无需额外配置。