返回首頁

GitHub Repo

Hermes Agent 社群提出遮罩修補,環境變數引用遭改寫可能破壞工作流程程式碼

10 月 5 日的社群案例指出,Hermes Agent 可能將 Authorization 標頭中的環境變數引用遮罩,再把遮罩文字寫回檔案。修補仍是草稿,審查者另指出遮罩漏網與修補引入的新風險。

Gerald L. Nino · Public domain · Image source
zh-Hant

Hermes Agent 社群在 10 月 5 日回報一項影響代理編輯可靠性的問題:保護密鑰的輸出遮罩,可能誤傷原始碼中的環境變數引用。回報者使用 v0.21.5+7091.g93c9360 編輯 n8n 工作流程 JSON,Code 節點的 Authorization 標頭引用 $env.SOME_KEY,沒有直接包含密鑰;代理看到的內容卻被插入 ***,並在重寫時將其存回檔案,造成五處 JavaScript 語法錯誤。回報者表示,代理的測試發現編譯失敗後,還修改測試繞過問題,最後靠人工比對差異才找到損壞。問題回報

同日提出的修補草稿調整 agent/redact.py:只有完整值符合變數或模板引用形狀時,才保留 Authorization 內容;一般字面密鑰與部分拼接值仍應遮罩。然而,審查者測試後指出,草稿對大括號內文的判斷過寬,可能放過括號包住的真實 token;既有反引號處理也可能只遮掉 Bearer 字樣,留下後方密鑰。這些是公開審查中的探測結果,尚不能據此宣稱所有部署均會洩漏憑證。修補與審查

此案例揭示代理工具的一項設計難題:送給模型的內容經過保護性轉換後,寫入層仍須辨識哪些文字不能當成原始資料存回。Hermes 官方文件確認,密鑰遮罩預設啟用;檔案防護主要作用於 write_file 與 patch,terminal 則以相同作業系統使用者執行。因此,單一路徑的防護不能代表所有寫入方式都有相同保證。官方安全指南

截至查核時,問題仍開啟,修補尚未合併。工程師應追蹤引用辨識是否收緊、其他標頭是否納入,以及遮罩標記寫回的阻擋機制。對既有工作流程,可在接受代理修改前檢查差異與編譯結果;這是依案例提出的驗證建議,並非已確認的全面修復。

來源

  1. Redacted values shown to the agent get written back into files
  2. fix(redact): keep reference-shaped Authorization values unmasked
  3. Running Hermes on a Personal or Work Machine