該賞金過期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 漏洞的最簡單方法(通過插件或其他方式)。
- 轉到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你很好,否則你就不好。
這樣您就不必像其他答案中提到的那樣更改管道以進行測驗或通過審批流程,您只需粘貼和驗證即可,無需額外配置。
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。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/395860.html
