拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 来自管道作业的Jenkinslog4j漏洞测验

来自管道作业的Jenkinslog4j漏洞测验

白鹭 - 2022-01-26 2204 0 0
赏金过期5天此问题的答案有资格获得 300声望奖励。 Remember_me引起更多人对这个问题的关注

我试图确保我的 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$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

uj5u.com热心网友回复:

这可能是检查 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: Script1你很好,否则你就不好。

这样您就不必像其他答案中提到的那样更改管道以进行测验或通过审批流程,您只需粘贴和验证即可,无需额外配置。

uj5u.com热心网友回复:

我不认为类名会被直接解释为宣告性管道中的 groovy codeSource 自变量(而不是脚本化管道)

尝试“如何在 Jenkins 管道中汇入类档案? ”的方法,使用:

node{
    def cl = load 'Classes.groovy'
    def a = cl.getProperty("org.apache.logging.log4j.core.lookup.JndiLookup").protectionDomain.codeSource
    ...
}

请注意,getCLassLoader()默认情况下是不允许的,并且应该需要Jenkins 管理员 In-process Script Approval

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *