「Jenkins」- No valid crumb was included in request for /ajaxExecutors @20210305


問題描述

在 Jenkins 2.275 中,出現如下日志消息:

# tail -f /var/log/jenkins/jenkins.log
...
2021-03-01 11:13:06.565+0000 [id=15]    WARNING hudson.security.csrf.CrumbFilter#doFilter: No valid crumb was included in request for /ajaxBuildQueue by k4nz. Returning 403.
2021-03-01 11:13:10.571+0000 [id=11]    WARNING hudson.security.csrf.CrumbFilter#doFilter: Found invalid crumb a433bb1e4447c0afe7ca04cda88bfd3c0ebddf300f0b52399cf2c47559152b1c. If you are calling this URL with a script, please use the API Token instead. More information: https://jenkins.io/redirect/crumb-cannot-be-used-for-script
...

問題原因

在新版本中,CSRF Token 只能用於創建它們的會話。就是說 Session A 創建某個 CSRF Token,則該 CSRF Token 只能被 Session A 使用。這是為了限制攻擊者獲取到它們后的影響,即使攻擊者拿到 CSRF Token,如果攻擊者沒有會話信息,依舊無法使用該 CSRF Token 請求。

以前的某些腳本,通過 /crumbIssuer/api 獲取 CSRF Token,然后訪問接口。現在,由於腳本是沒有會話信息的,因此在執行受 CSRF 保護的動作時,會失敗。

除非這些腳本能夠攜帶會話信息,或者使用 API token 進行請求。

解決方案

Manage Jenkins / Configure Global Security,禁用 Prevent Cross Site Request Forgery exploits 選項。但是,由於我們 Jenkins 版本較新,沒有找到該選項。

或者,如果文檔 Upgrading to Jenkins LTS 2.176.x 建議,設置 hudson.security.csrf.DefaultCrumbIssuer.EXCLUDE_SESSION_ID 屬性為 true,這是個系統屬性,也是在關閉 CSRF Token 與會話的關聯。在啟動 Jenkins 服務時,通過 java -Dhudson.security.csrf.DefaultCrumbIssuer.EXCLUDE_SESSION_ID=true ... 選項設置。

或者,安裝 Strict Crumb Issuer 擴展,該插件提供更細粒度的控制,可以關閉 Session ID 檢查,以“基於過期時間”的機制進行控制。

在我們的場景中,多半是內部實現的原因(因為 /ajaxBuildQueue 地址,而且我們沒有類似的腳本)。

減小日志數量

1)Manage Jenkins > System Log > Log Levels
2)設置 Adjust Levels 部分,Name 填寫 hudson.security.csrf.CrumbFilter,Level 選擇 SEVERE,然后 Submit 提交。

補充說明

關於 Crumb 使用,參考 CSRF Protection Explained – CloudBees Support 文檔。

參考文獻

Strict Crumb Issuer | Jenkins plugin
Why do I receive lots of Found Invalid Crumb warnings in the logs? – CloudBees Support
Upgrading to Jenkins LTS 2.176.x
nginx - Cannot install Jenkins: no valid crumb - Stack Overflow
Jenkins Features Controlled with System Properties



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM