AI 開發者的資安警訊:熱門 npm 套件暗藏惡意程式?
一起針對 AI 開發者的供應鏈攻擊。名為 `codexui-android` 的熱門 npm 套件被發現暗藏惡意程式碼,會靜默竊取開發者的 OpenAI Codex 身份驗證權杖(Authentication Tokens)。這類攻擊利用開發者對開源工具的信任,在便利的工具背後隱藏了資安風險。
偽裝成合法工具的供應鏈攻擊
資安研究人員提到,這款名為 `codexui-android` 的工具,在 GitHub 和 npm 上被宣傳為 OpenAI Codex 的遠端網頁 UI,每週吸引超過 29,000 次下載。
這起活動特別之處在於,它並非傳統的拼寫錯誤(typosquat)。惡意程式碼是後續才被變更,植入在一個具備實質功能且積極開發的套件中,而其關聯的 GitHub 原始碼庫卻保持乾淨,藉此規避審查。
靜默竊取「不限期」的驗證權杖
據 Aikido Security 的調查,該套件會提取本地快取檔案 `~/.codex/auth.json` 的內容,並外傳至偽裝成 Sentry 監控平台的伺服器。
被竊取的資料包含:
* access_token(存取權杖)
* refresh_token(更新權杖)
* id_token
* 帳號 ID
研究員警告,其中的 refresh_token 是不會過期的。這意味著攻擊者可以無限期地冒充開發者身份,持久且靜默地掌控該帳號擁有的權限。
本地快取機制成為安全破口
當使用者使用 ChatGPT 或 API 金鑰登入相關工具時,登入資訊常以明文形式儲存在本地。OpenAI 曾警告:應將 `auth.json` 視為密碼,切勿提交到程式碼庫或在網路分享。而這類惡意套件直接從系統路徑讀取該檔案,讓防護形同虛設。
Android 惡意 App 淪為幫兇
此威脅不僅限於 npm 套件。研究團隊也發現兩款 Android 應用程式:
1. OpenClaw Codex Claude AI Agent(下載量超過 50,000 次)
2. Codex(下載量超過 10,000 次)
(目前似乎還存在Google Play的商店中)
這些 App 在沙盒環境中執行該惡意 npm 套件,一旦使用者在 App 內登入,OAuth 資料包就會被傳送至攻擊者的伺服器。
補充:Google API 金鑰的「時間差」漏洞
除了套件攻擊,上個月這家資安公司也發現 Google API 金鑰在刪除後,仍可能在線上保持存取狀態長達 23 分鐘。攻擊者可利用這段「時間差」持續發送請求,甚至竊取 Gemini 相關的對話內容。意旨外洩的金鑰就算以緊急停止使用,還是有實際存取時間上的落差。提醒Google必須要重視該問題。
ChatGPT — Release Notes
https://help.openai.com/en/articles/6825453-chatgpt-release-notes
在Open的這個公開的筆記資訊上,幾個小時前也提到如果要查詢是否有可疑的使用行為,也可以檢視您的活動工作階段,初步判斷有沒有可疑的登入資訊:
- 登入 ChatGPT 帳戶。
- 點擊螢幕左下角您的個人頭像或用戶名稱以開啟選單。
- 選擇 Settings(設定)。
- 導航至 Security(安全) 標籤頁。
- 在 Active Sessions(活動工作階段) 區塊下,會看到目前所有已登入您帳戶的裝置列表。
讀後感:在便利與資安之間的權衡
今天早上使用Codex時,發現無法正常生成圖片的回應,起初還擔心是不是Agent改壞了什麼檔案路徑之類的設定問題,還好虛驚一場,查閱社群後才發現這起惡意軟體攻擊的討論。所幸同時間Codex也有更新通知,進行軟體更新後,功能已恢復正常。
加上這次事件讓我意識到,威脅往往隱藏在我們信任的工具。攻擊者可能也會先建立工具的公信力,累積數萬次下載,建立起信任感後,再於後續更新中植入惡意程式碼。這種方式讓使用者在不知不覺中洩漏資訊。
對於非技術專長的使用者(如我)來說,AI 工具極大地擴充了能力邊界,但本質上對技術底層的不了解,也容易造成資安盲區。
以我自己來說,目前是不會主動要求我的AI下載這類套件,但是如果他建議我安裝該套件,我會不會也會盲目地按下同意授權呢?一個點擊背後的代價有時候想想還真的細思極恐。
在享受便利的同時,對於資安的警惕不應降低。這也提醒了我,資訊服務商提供的安全更新保證的重要性。很多時候,更新不只是為了新功能,也是為了修補我們看不見的防禦漏洞。
原始文章連結:
OpenAI Codex Authentication Tokens Stolen in codexui-android npm Supply Chain Attack
https://thehackernews.com/2024/06/openai-codex-authentication-tokens.html



