Snowflake GitHub Actions曝命令注入,GitHub議題標題可被用於取得Jira憑證

Snowflake一個公開GitHub儲存庫的GitHub Actions自動化流程,日前被發現存在命令注入漏洞,外部使用者只要建立含有特製標題的GitHub議題,就可能讓系統執行攻擊者指定的指令,取得Snowflake內部Jira系統使用的登入憑證。漏洞於6月18日隨Snowflake合併GitHub Actions工作流程修改而上線,5天後被自主AI資安代理找出並完成實際驗證,Snowflake在接獲通報當天完成修補。

資安業者Wiz於8月17日 公開 事件細節。snowflakedb/snowflake-connector-net儲存庫內有一套串接Jira的GitHub Actions流程,每當有人建立GitHub議題,系統便會自動執行,並透過Jira API在Snowflake內部Jira建立對應問題單。

GitHub議題標題的處理方式是造成漏洞的原因,原本做法會先把標題當成資料交給腳本處理,修改後卻直接把使用者輸入的標題插進命令列指令。GitHub在執行自動化流程前會先代入議題標題,因此攻擊者只要在標題加入特定符號,就可能改變原有指令內容,讓系統執行額外命令。

而問題之所以進一步擴大,是因為該自動化流程同時能使用連接Jira所需的帳號與API憑證。研究人員完成概念驗證後取得qa@snowflake.net帳號使用的Jira憑證,並確認可讀取Snowflake工程、安全合規及漏洞懸賞追蹤等內部專案。

研究人員指出,自主AI代理第一次嘗試外傳憑證時因指令語法錯誤而失敗,但代理自行分析錯誤訊息並修改攻擊指令,第二次即成功取得Jira憑證。漏洞從上線到被發現只有5天。

引發漏洞的PR #1218於6月18日合併,最終提交紀錄將Copilot Autofix列為共同作者。Wiz説明,Copilot曾參與檢查合併的PR與程式碼變更,但未發現相關問題,目前無法確認造成漏洞的程式碼是否由AI協助產生。

Snowflake接獲通報後,同日修改GitHub Actions流程,恢復較安全的外部輸入處理方式,避免議題標題直接進入執行指令。Snowflake表示,調查未發現未經授權存取,而Wiz則指出,稽核紀錄中未發現除其測試外的其他外部存取行為。