資安雷達 2026 年 8 月 22 日

2026-08-22 — JSONata、Hydra 爆任意程式碼執行漏洞,libgit2 SSH 指令注入本週隨 Debian 更新修補

primary=https://github.com/advisories/GHSA-66mm-25pp-rfff primary=https://github.com/advisories/GHSA-2cp2-2r3c-7p7r primary=https://github.com/libgit2/libgit2/security/advisories/GHSA-qqwh-747c-fpx2 primary=https://lists.debian.org/debian-security-announce/2026/msg00364.html

JSONata 運算式引擎爆嚴重漏洞:三個邏輯缺陷串連可讓使用者輸入變成任意程式碼

GitHub Security Advisory · 2026-08-21

JSONata 是廣泛用於 Node.js 生態系中做 JSON 查詢與轉換的運算式語言,被 Zapier、n8n 等自動化平台用來處理使用者提供的轉換規則。GitHub 於 2026 年 8 月 21 日發布 GHSA-66mm-25pp-rfff(對應 CVE-2026-77415),指出攻擊者只要能控制傳入 JSONata 求值器的運算式字串,就能在伺服器端執行任意系統指令,CVSS 評分達 9.3,屬嚴重等級的程式碼注入(CWE-94)。

漏洞機制

問題來自三個各自看似無害、串接後卻能繞過沙箱的設計缺陷。第一個是內建的 $clone 函式可在 transform 運算中被覆寫,使物件複製行為可被攻擊者接管;第二個是 JSONata 的函式與 lambda 物件支援解構語法(如 $merge.*),讓原本應封裝的內部函式物件被攤平取出。

第三個缺陷位於 applyProcedure,其引數迭代方式未遵循標準呼叫慣例,在核心求值路徑上留了可被操縱的縫隙。攻擊者串連三者:先解構出內部函式物件,再透過改寫過的 $clone 汙染原型鏈,最終讓 applyProcedure 呼叫到指定函式,達成任意程式碼執行。

受影響版本與修補

  • jsonata >= 2.0.0 且 < 2.2.1
  • jsonata < 1.8.8(含 1.x 全系列舊版)

官方在 jsonata-js/jsonata 倉庫透過 PR #799#800#802 修補,對應提交包含 c41ef18d49dcdde362dfd,分別鎖死 $clone 覆寫路徑、限制函式物件解構、修正 applyProcedure 引數處理。升級2.2.1(2.x)或 1.8.8(1.x)即可修補;任何把使用者輸入直接餵給 JSONata 求值的服務都應立即檢查版本。

原始來源:GHSA-66mm-25pp-rfff


Meta 設定框架 Hydra 修補設定注入漏洞:instantiate() 可被惡意設定誘導執行任意程式碼

GitHub Security Advisory · 2026-08-21

Hydra 是 Meta(Facebook Research)開發、廣泛用於機器學習實驗管理的 Python 設定框架,核心功能是依 YAML 設定檔動態實例化出 Python 物件。GitHub 於 2026 年 8 月 21 日發布 GHSA-2cp2-2r3c-7p7rCVE-2026-68508),指出 hydra.utils.instantiate() 處理不受信任的設定內容時可能導致任意程式碼執行,CVSS v3.1 評為 7.8(高風險)。

漏洞機制

instantiate() 的設計是讀取設定中的 _target_ 欄位(一個模組路徑字串),解析為 Python 物件並以其餘欄位當建構參數呼叫。問題在於該函式對 _target_ 沒有任何白名單限制,只要應用程式把外部可控的設定、模型 metadata 或命令列覆寫值餵進 instantiate(),攻擊者就能把 _target_ 指向危險呼叫並注入任意參數。

受影響版本與修補

  • hydra-core(PyPI)<= 1.3.3 受影響
  • 1.3.4 起修補

對應修補見 hydra-ecosystem/hydraissue #3259PR #32611.3.4 為已知危險呼叫目標加上黑名單阻擋。官方也坦言黑名單只是暫時緩解,真正完整的白名單機制要等尚未發布的 1.4 版才會落地;在此之前,把外部輸入接到 instantiate() 的專案應在應用層自行限制可被實例化的目標範圍。

原始來源:GHSA-2cp2-2r3c-7p7r


libgit2 SSH 後端路徑未逸出:惡意 submodule 網址就能在遠端伺服器植入指令

libgit2 Security Advisory (GHSA-qqwh-747c-fpx2) · 2026-08-15

libgit2 是被大量 Git 用戶端、GitHub Desktop 等工具內嵌使用的底層 Git 函式庫。2026 年 8 月 15 日發布的 GHSA-qqwh-747c-fpx2CVE-2026-5917,CVSS 3.1 評分 9.6)指出,以 libssh2 作為 SSH 傳輸後端建置的 libgit2,組出遠端指令字串時未對儲存庫路徑逸出,導致遠端指令注入。此修補於 8 月 20 日透過 Debian DSA-6453-1 推送給終端使用者,是本週 LWN 資安摘要中最值得留意的單一漏洞。

漏洞機制

負責組出 git-upload-packgit-receive-pack 指令的 gen_proto() 函式,只用單引號把儲存庫路徑包起來就交給 libssh2_channel_exec() 執行,並未檢查路徑本身是否含有單引號。路徑中一旦出現單引號就會提早結束引號包裹,其後字元被遠端帳號的登入 shell 當指令解讀。攻擊者可把惡意 SSH URL 藏進 .gitmodules 的 submodule 網址,等受害者遞迴 clone/update submodule 時觸發。

ssh://localhost/x';id > /tmp/cve-proof.txt;echo '

如上例,路徑中的單引號讓 shell 提前結束原字串,id > /tmp/cve-proof.txt 被當成獨立指令在遠端 SSH 帳號權限下執行。

受影響版本與修補

  • libgit2 1.9.01.9.6(修補至 1.9.7
  • libgit2 <= 1.8.6(修補至 1.8.7

官方修法是套用既有的 git_str_puts_escaped() 逸出函式(PR #7163),與未受影響的 ssh_exec 後端做法一致。USE_SSH=libssh2 編譯的版本受影響,會對不受信任儲存庫執行遞迴 clone 或 submodule 更新的服務應優先升級。

原始來源:GHSA-qqwh-747c-fpx2Debian DSA-6453-1


End of article
0
Would love your thoughts, please comment.x
()
x