門是一個沒更新的內部工具,
鑰匙就放在 GitLab 裡
為什麼現在很紅:一週前大家在猜「自動化攻擊」是撞庫還是爬蟲;91APP 自己公布的答案是:一個內部效率工具沒更新,資料庫的鑰匙放在 GitLab 上。
- 一句話結論
- 第一手是 91APP 官網的事件說明頁(資料更新日期 10/22),同日媒體以「18 天調查報告」報導。破口寫得很直接:第三方工具 Appsmith 有漏洞、91APP 未及時套修補,攻擊者從這裡進內網,在內部 GitLab 找到其中一座訂單資料庫的金鑰,進去取得訂單資料。
- 他要的是什麼
- 他不需要打穿正式站。他找的是工程團隊自己架、自己用、沒人記得升級的那台內部工具;進了內網,下一站是 GitLab,因為工程師習慣把連線設定跟程式碼放在一起。拿到資料庫金鑰之後,他連進去的身分是一個合法帳號,查詢長得跟應用程式一樣,這就是十天沒人看出來的原因。
- 你今天做一件事
- 今天就做兩件只看不改的事:列出內網所有自架的內部工具和版本,對一下官方最新版;在本機 clone 的 repo 上跑一次 gitleaks,看有沒有資料庫密碼或連線字串躺在歷史紀錄裡。兩件加起來半小時。 直接去做 →
- 哪些能信
- 3 可證明3 推論4 缺口 每個主張都標了等級,缺口是誠實寫出來的。
- 破口速查
- 受害端一律去識別化;寫「未公開」代表公開資料查不到。
- 伺服器服務商
- 未公開。官方只寫 Commerce Cloud 的「其中一座訂單資料庫」、內部 GitLab、內部 CI 主機與 Appsmith 工具;在哪一朵雲、什麼資料庫,未公開
- 網路服務商
- 未公開。處置寫「限制 CI 主機與資料庫網段連線」,代表事發時 CI 主機所在網段可以直連訂單資料庫
- 漏洞出現的地方
- 內部效率工具 Appsmith 有漏洞且未套修補(版本、CVE、是否對外開放未公開)→ 進入內網 → 在內部 GitLab 找到訂單資料庫的金鑰 → 用金鑰直接連資料庫讀訂單。前提:資料庫憑證以可讀形式存在 GitLab 上,且 CI 網段對資料庫網段不設限
- 馬上自我檢測
列出內網所有自架的內部工具(Appsmith、Retool、n8n、Metabase、Jenkins、GitLab)與版本,對照官方最新版 gitleaks detect --source . --no-banner --redact(在本機 clone 的 repo 上唯讀掃) 看資料庫的安全群組或防火牆:誰能連進來- 漏洞修補方式
- 官方已做:移除受入侵的 Appsmith、更換內部系統權杖、更換資料庫帳號與密碼、限制 CI 主機與資料庫網段連線、停用遭冒用帳號並重建 GitLab 權限、保留受駭主機軌跡。通用修法:內部工具納入修補清冊並且不對外;資料庫憑證移出 repo 與明文 CI 變數,改用 secret manager 或短效憑證;資料庫只接受應用程式網段;憑證被看見就輪替
有 15 分鐘再看:其餘 3 點
- 時間也補齊了:10 月 3 日 11 時存取資料庫,同一天內部 CI 主機有一支未授權執行緒;10 月 4 日就接到第一通客戶通報,10 月 14 日外部團隊進駐才確認破口,當晚 23 時阻斷。從第一通通報到阻斷十天,董事長說 10 月 8 日成立應變小組時就該同步提醒品牌,「這是 91APP 的疏失」。
- 還缺的東西也很明確:Appsmith 哪個版本、哪個 CVE、有沒有對外;金鑰是放在 repo 裡還是 CI 變數裡;幾筆、幾個品牌、哪些欄位。官方說以數發部行政檢查確認的結果為準。
- 這起事件的形狀,已經從「多租戶的爆炸半徑」換成每家公司都有的那一種:一個沒人列在修補清單上的內部工具,加上一把放在程式碼倉庫裡、能直連正式資料庫的鑰匙。
91APP 10 月 22 日公布 18 天階段性調查:攻擊者從一個沒套修補的 Appsmith 進入內網,在內部 GitLab 找到一座訂單資料庫的金鑰,10 月 3 日進去、10 月 14 日深夜才被阻斷。前篇寫「入口未公開」,現在入口公開了。這篇是續篇:拆開新的第一手說明,看它證明了什麼、還缺什麼,以及你家的內部工具和 repo 今天能查什麼。
本篇目錄
前篇空著的那一格
一週前寫前篇時,攻擊鏈的第一格是空的:重訊只寫「自動化攻擊」,入口沒公開,我們把候選列出來,然後停在那裡。10 月 22 日,那一格有了答案,而且答案不在任何一個候選裡。
不是撞庫,不是 API 換編號就能讀別人的資料。91APP 在官網的事件說明頁寫:「第三方工具 AppSmith 存在漏洞,91APP 未及時套用修補更新,導致駭客從此破口進入內部網路,並從內部 GitLab 系統上找到其中一座訂單資料庫的金鑰(Key),並成功入侵,非法取得訂單資料。」
用前篇那棟商辦大樓來比喻:櫃子不是被撬開的。管理室後面有一扇員工自己裝、很久沒換鎖的側門,進去之後,櫃子的鑰匙就掛在工程部的白板上。
先講清楚這份文件的性質。這是 91APP 自己的事件說明頁,頁面標「資料更新日期 10/22」,媒體同日以「18 天調查報告」報導;它是公司方的階段性說法,不是主管機關的認定,官方也寫最終以數位發展部行政檢查確認的結果為準。和重訊比,它多了三樣東西:入口、時間軸、處置清單。還沒有的,是數字。
破口:第三方工具 AppSmith 存在漏洞,91APP 未及時套用修補更新,
駭客從此破口進入內部網路,並從內部 GitLab 系統上找到
其中一座訂單資料庫的金鑰(Key),並成功入侵,非法取得訂單資料。
10/14:擴大調查後,發現其中一座內部的 CI 主機,曾經在 10/3
有一支未授權執行緒的執行紀錄。
處置:移除受入侵的 Appsmith 工具/更換內部系統權杖/
更換資料庫帳號與密碼/限制 CI 主機與資料庫網段連線/
停用遭冒用帳號,重建 GitLab 權限/保留受駭主機相關軌跡供調查
範圍:僅涉及 Commerce Cloud 該座資料庫,Marketing Cloud、
91APP Payments 與 iCHEF 均不受影響;遭存取是訂單資訊,
其中並不包含信用卡等資訊。把兩篇的時間合在一起看。前篇的 10 月 3 日只是品牌公告與公關受訪的說法,這次由 91APP 自己的說明頁確認。
- 2026-10-03 11:00攻擊者存取 Commerce Cloud 其中一座訂單資料庫;同一天,一座內部 CI 主機有一支未授權執行緒的執行紀錄91APP 官方說明頁;11 時由聯合新聞網報導
- 2026-10-04首次接獲客戶通報,啟動盤查,初步沒有發現大規模外流證據91APP 官方說明頁
- 2026-10-07再接獲更多品牌反映收到類似詐騙訊息(媒體寫五家),升高應對91APP 官方說明頁;家數見聯合新聞網
- 2026-10-08成立緊急應變小組,決定委請外部資安團隊;這一天沒有同步提醒品牌客戶91APP 官方說明頁;未提醒品牌一事為董事長在報告中的自我檢討,見聯合新聞網
- 2026-10-09 至 10-11確認委託奧義智慧,連假期間擴大全系統盤查與 log 分析91APP 官方說明頁、數位時代
- 2026-10-14 23:00外部團隊進駐,發現 CI 主機 10/3 的未授權執行緒、確認攻擊軌跡與破口,當晚完成阻斷91APP 官方說明頁;23 時由聯合新聞網報導
- 2026-10-15依個資法通報數位發展部,開始向品牌客戶說明91APP 官方說明頁
- 2026-10-16 06:30發布重大訊息(前篇拆解的那一份)公開資訊觀測站
- 2026-10-19數位發展部數位產業署邀資安院與外部專家到 91APP 行政檢查聯合新聞網、知新聞報導
- 2026-10-22公布階段性調查與補償計畫:經確認因本事件遭詐騙而有財產損失的消費者全面補償;品牌會員的通知費用由 91APP 負擔,其他補償與品牌個別協商91APP 官方說明頁、聯合新聞網、數位時代
- 預計 2026-10 下旬配合主管機關行政檢查,對外說明受影響品牌數、筆數與欄位,以及改善做法聯合新聞網、數位時代轉述 91APP 說法;官方頁面本身沒有寫日期
十一列裡,九列現在有 91APP 自己的文字支撐。前篇時,這個數字是兩列。
怎麼發現
最早的訊號仍然來自外面。10 月 4 日第一通客戶通報,10 月 7 日更多品牌反映,這些都是收到詐騙信的消費者回頭找品牌、品牌再找平台。91APP 自己的系統在這段期間沒有拉起告警,至少說明頁沒有提到任何一則。
真正讓調查收斂的,是 10 月 14 日外部團隊進駐後「擴大調查」找到的那一筆紀錄:一座內部 CI 主機在 10 月 3 日跑過一支沒有授權的執行緒。也就是說,證據一直在主機上,只是沒有人在對的地方看;從第一通通報到看見它,花了十天。
攻擊者怎麼做到
到這裡,其實已經足夠理解整起事件。如果你關心的是該怎麼避免,可以直接往「如何避免」繼續閱讀。如果你想知道公開資料能還原到哪一步,下面開始進入技術拆解。
白話結論:這條路徑沒有任何一步需要高深技術。一個沒修補的內部工具給了內網的立足點,一把放在 GitLab 上的金鑰給了資料庫的合法身分;剩下的事,是用合法身分做不合法的查詢。
攻擊者
|
v
Appsmith(內部效率工具,有漏洞、未套修補)
| 進入內部網路
v
內部 GitLab ---- 找到訂單資料庫的金鑰(Key)
|
v
內部 CI 主機(10/3 有未授權執行緒)
| CI 網段可以直連資料庫(事後才限制)
v
Commerce Cloud 其中一座訂單資料庫 --> 訂單資料 --> 冒名詐騙信
CI 主機在這條線上的確切位置,說明頁沒有寫;上圖把它放在 GitLab 與資料庫之間,是依處置清單「限制 CI 主機與資料庫網段連線」做的推論。
深入閱讀對照 MITRE ATT&CK:五格裡四格有第一手文字CVE、金鑰的存放形式、CI 主機上跑了什麼,仍是空白
為什麼十天看不出來
這一段是推論,不是官方說法。攻擊者拿到的是資料庫的真金鑰,連進去的身分跟應用程式一模一樣。資料庫的稽核看到的是一個合法帳號在做查詢;如果沒有「這個帳號只該從哪個網段連進來」的規則,也沒有「這個帳號平常一小時讀幾筆」的基準線,就沒有任何一條告警會響。
處置清單裡的「限制 CI 主機與資料庫網段連線」從反面說明了這件事:事發時,CI 網段可以直接連到正式訂單資料庫。CI 主機本來就要碰程式碼、金鑰與部署,它能連到哪裡,攻擊者就能從它連到哪裡。
ARTEX 這個名字
說明頁把 ARTEX 描述為「AI 自主滲透測試系統,透過 AI 自動尋找系統漏洞、規劃入侵路徑,甚至執行攻擊與竊取資料」;媒體報導系統內發現 ARTEX 等工具痕跡。這個名字我們在南韓金融機構那篇拆過:CrowdStrike 10 月 7 日的報告在攻擊者外露的伺服器上找到 ARTEX 設定檔與 AI 對話紀錄;10 月 19 日日本 GMO Cybersecurity by Ierae 也說在攻擊日本企業的基礎設施上找到 ARTEX 痕跡,受影響家數各家報導說法不一。
把「AI 攻擊」四個字拿掉,這條路徑每一步都是老問題:沒修補的軟體、放錯地方的金鑰、沒隔開的網段。AI 讓攻擊者更快找到它們,但門本來就沒鎖。
這次外洩了什麼
前篇的 Leaked 表最後一列寫「攻擊者用什麼權限讀到資料庫,是本案最關鍵的缺口」。這一列現在有答案了。
| 服務 | 憑證類型 | 用途 | 存在形式 | 放在哪 | 權限範圍 | 狀態 |
|---|---|---|---|---|---|---|
| Commerce Cloud 其中一座訂單資料庫 | 資料庫金鑰(官方用詞「Key」;處置寫「更換資料庫帳號與密碼」) | 應用程式或內部系統連線正式訂單資料庫 | 未公開(推測為設定檔或 CI 變數中的帳密或連線字串) | 內部 GitLab 系統 | 官方說只涉及這一座資料庫 | 已被用來入侵資料庫;已更換 |
| 91APP 內部系統 | 權杖(token,種類未公開) | 內部系統之間的存取 | 未公開 | 未公開 | 官方未說明是否確認外洩,處置寫「更換內部系統權杖」 | 已更換 |
| 內部 GitLab | 帳號(官方寫「遭冒用帳號」) | 存取程式碼與 CI 設定 | 使用者或服務帳號,種類未公開 | GitLab | 幾個帳號、什麼權限未公開 | 已停用,GitLab 權限重建 |
| Appsmith 內部工具 | 資料來源連線設定(Appsmith 一般會保存連到資料庫或 API 的憑證) | 內部後台讀寫內部系統 | 未公開 | Appsmith 主機 | 官方沒有說是否被讀走 | 工具已移除 |
| 同上訂單資料庫(多品牌) | 訂單資訊(個人資料,非憑證;官方說不含信用卡等資訊) | 品牌官網商店的訂單處理與出貨 | 未公開 | SaaS 平台資料庫 | 品牌數、筆數、欄位待主管機關確認後公布 | 已被用來寄冒名詐騙信 |
五列裡,只有第一列是官方明確寫出「被找到、被用來入侵」的憑證;其餘是處置清單反推、或是工具本身的性質。
證據等級
前篇是 2 則能證明、3 則推論、4 則缺口,這篇是 3、3、4。缺口的數量沒有變,但缺的東西換了:從「從哪裡進來」換成「進來之後的細節」。
他們怎麼處理
照說明頁的時間序排一次。10 月 4 日接到首次通報後先自行盤查,初步沒找到大規模外流的證據;10 月 7 日更多品牌反映,才升高應對;10 月 8 日成立應變小組並決定找外部團隊,10 月 9 日確認委託奧義智慧,連假三天擴大盤查與 log 分析。10 月 14 日外部團隊進駐,找到 CI 主機的紀錄、確認破口,當晚 23 時阻斷。
圍堵與清除是那六項:移除 Appsmith、換權杖、換資料庫帳密、限制 CI 與資料庫網段、停用冒用帳號並重建 GitLab 權限、保留軌跡。10 月 15 日通報數發部,並每日向主管機關回報進度。
對外的部分,10 月 22 日公布補償方向:經確認因本事件遭詐騙而有財產損失的消費者,91APP 全面補償,可透過官網線上客服、電話 (02) 7723-1622 或 [email protected] 登記;認定與申請流程等政府反詐騙政策與調查程序確立後公布。品牌端,會員通知的簡訊與 email 費用由 91APP 負擔(前篇寫到品牌擔心用平台發防詐訊息要付費,這次有了答案),其他補償與品牌個別協商。
哪裡做對,哪裡做錯
做對的地方,是這份說明寫得比大多數公司的階段報告具體。它直接寫出「未及時套用修補更新」與「在 GitLab 上找到金鑰」,沒有用「遭受高度複雜的攻擊」把自己的疏失包起來;處置清單和路徑一一對應,讀者可以自己核對。董事長在報告中說 10 月 8 日成立應變小組時就該同時提醒品牌客戶,「這是 91APP 的疏失」,這句話補上了前篇最大的爭點。補償先承諾、細節後補,也比前篇時「仍在討論」往前走了一步。
該改的地方,正好是這份報告自己承認的兩件事,加上一件它沒提的。第一,修補:被打穿的是一個「內部效率工具」,這類工具通常由工程團隊自己架、自己用,不在正式產品的修補流程裡,也最容易被忘記。第二,通知:從 10 月 4 日第一通客戶通報到 10 月 15 日向品牌說明,十一天裡品牌只能自己面對客人。第三,報告沒有提的,是為什麼一把能直連正式訂單資料庫的鑰匙會放在 GitLab 上,以及為什麼 CI 網段連得到它。換掉 Appsmith 能關一扇門,但只要鑰匙還會被放在同一種地方,下一扇沒更新的門會帶攻擊者走同一條路。
如何避免
當天就能做的,是盤點。把內網所有自架的內部工具列出來:低程式碼後台、自動化流程、BI、CI、程式碼倉庫。每一個寫上版本、誰負責、有沒有對外,版本落後官方最新版的先排升級。同一天,在本機 clone 的 repo 上跑一次唯讀的 secret 掃描,看資料庫密碼與連線字串有沒有進過 commit 歷史;只刪最新版不夠,歷史裡的值要當成已外洩、直接輪替。
一週內,處理 CI。正式資料庫的憑證不放在一般 CI 變數裡;真的要放,設為受保護與遮罩,只給受保護分支使用。更好的做法是讓 CI 根本拿不到正式資料庫的長效密碼,改用 secret manager 在部署時取用,或用雲端 IAM 換短效憑證。
這一季,處理網段。正式資料庫只接受應用程式所在網段;CI、辦公室、內部工具一律不能直連。這正是 91APP 事後做的那一條,事前做的成本遠低於事後。最後,給每個資料庫帳號一條基準線:它只該從哪裡連進來、平常一小時讀多少。偏離就告警,告警要有人看。
這篇提到的項目要花多少錢
把這條路徑上每一步的修法換成帳單。大部分是工時,真正要付錢的雲端服務很便宜;最貴的那幾列,現在都還是空白。
| 項目 | 用量 | 單價 | 期間 | US$ | NT$ | 舉證 |
|---|---|---|---|---|---|---|
| 91APP 消費者財損補償 | 經確認因本事件受騙且有財損者 | 全面補償 | 流程待公布 | — | — | 91APP 官方說明頁;人數與金額未公開 |
| 91APP 負擔品牌會員通知(簡訊與 email) | 受影響會員數未公開 | — | 事件後 | — | — | 91APP 官方說明頁 |
| 外部鑑識(奧義智慧)與行政檢查配合 | 10-09 起 | 未揭露 | 進行中 | — | — | 91APP 官方說明頁、數位時代 |
| Appsmith(社群版自架)本身 估:軟體免費,成本在主機與有人負責升級 | 1 套 | 開源授權 US$0 | 持續 | 0.00 | 0 | 本站估算;本案使用的版本與授權未公開 |
| 內部工具版本盤點與升級 估:依工具數量與升級難度差異很大 | 1 名工程師 × 1 天(5 到 10 套工具) | 估 NT$4,000/人日 | 一次,之後每月半天 | 125.00 | 4,000 | 本站估算 |
| repo 與 CI 變數的 secret 掃描 估:工時以 NT$4,000/人日計;找到之後的輪替另計 | gitleaks 開源工具,全部 repo 跑一次 | US$0 軟體 + 半天工時 | 一次,之後掛進 CI | 63.00 | 2,016 | 本站估算 |
| 資料庫憑證改放 secret manager 估:用量是假設值;GCP Secret Manager 等計價方式不同 | 假設 20 組憑證、每月 10 萬次讀取 | AWS Secrets Manager US$0.40/組/月 + US$0.05/1 萬次 | 每月 | 8.50 | 272 | AWS Secrets Manager 公開定價;本站假設用量 |
| 資料庫網段限縮(安全群組或防火牆規則) 估:成本在盤點誰真的需要連資料庫;改錯可能中斷服務,要排維護窗 | 既有網路設定調整 | 雲端安全群組不另計費 | 一次 | 0.00 | 0 | 本站估算 |
| 對照:ARTEX 工具取得成本 對照用,非本案金額;攻擊者實際花費無公開資料 | 開源專案(事後傳出轉為不公開) | US$0 軟體 + 大型語言模型 API 費用 | — | — | — | The Hacker News、CrowdStrike 報告 |
| 合計(僅可證明列) | 0.00 | 0 | ||||
修門加換鎖,一次大約兩百美元左右的工時與每月不到十美元的雲端費用;另一邊的補償、通知與鑑識,目前一個數字都沒有公開。兩邊不能直接相比,但量級的差距不需要數字也看得出來。
你可以學到什麼
站在攻擊者那一側看,正式站是一家公司最用心守的地方,內部工具不是。它們由工程師為了省事架起來,掛在內網,大家默認「反正外面進不來」,所以沒人排升級;它們又偏偏連得到最多東西。攻擊者進了內網,第一個要找的是程式碼倉庫,因為工程師會把連線設定、部署腳本與金鑰放在離程式碼最近的地方。拿到一把正式資料庫的鑰匙,他就不再是入侵者,而是一個合法帳號。
跟我們的防暴筆記對照
對照 INC-2026-0827(排程回報「找不到帳戶」,被停權的是整個專案)。
相同的地方是鑰匙放錯地方,而且一把鑰匙能開的範圍太大。0827 是一把只需要寫試算表的服務帳戶金鑰掛著整個專案的 Owner;這次是一把能直連正式訂單資料庫的金鑰,放在一個內網裡有人就能碰到的 GitLab 上。兩次的修法都一樣:把鑰匙拿出共用的地方,縮小它能開的門,看見了就換。
不同的地方是入口。0827 的金鑰是隨著程式碼一起外流到外面;這次攻擊者得先從 Appsmith 進內網,才碰得到 GitLab。這給了一層多出來的防線,也提醒「內網裡就安全」是個假設:只要內網裡有一台沒修補的工具,那層防線就不存在。
- 01內部工具也是攻擊面。低程式碼後台、自動化流程、BI 與 CI 跟正式站一樣要列進修補清冊,而且它們通常連得到更多東西。
- 02程式碼倉庫裡不該有正式資料庫的憑證。放進過 commit 歷史或沒保護的 CI 變數,就當成已外洩、直接輪替,不要只刪最新版。
- 03正式資料庫只該接受應用程式網段。CI、辦公室、內部工具能直連,等於每一台都是通往資料的跳板。
- 04合法帳號做的壞事,靠的是基準線才看得出來。每個資料庫帳號只該從哪裡連、平常讀多少,寫下來、偏離就告警。
- 05「AI 攻擊」描述的是攻擊者的速度,不是防守者的藉口。這條路徑每一步都是老問題,修法也都是老方法。
- 01Appsmith開源低程式碼內部工具平台;本案入口,官方說有漏洞且未套修補。
- 02內部工具(internal tooling)工程團隊自己架、自己用的後台與自動化;最常不在修補清冊上,又連得到最多系統。
- 03GitLab程式碼與 CI 的倉庫;本案攻擊者在這裡找到訂單資料庫的金鑰。
- 04T1552.001 Credentials In FilesMITRE 對「憑證放在檔案裡被找到」的分類;本案第二格。
- 05secret sprawl金鑰散落在 repo、CI 變數、設定檔、聊天紀錄;每多一處就多一個被找到的機會。
- 06CI runner執行 pipeline 的主機;碰得到程式碼與金鑰,本案 10/3 在這裡留下未授權執行緒。
- 07網段隔離決定誰能連到資料庫;本案事後限制 CI 與資料庫網段,事前沒有。
- 08金鑰輪替(rotation)憑證被看見就換;本案換了資料庫帳密與內部權杖。
- 09ARTEX開源 AI 滲透測試工具;台、韓、日都有痕跡,但同工具不等於同攻擊者。
- 10階段性調查報告公司方在主管機關認定前的說法;本案寫出入口與處置,數字還沒有。
全部唯讀,不改任何設定;做完你會知道自己有沒有同樣的破口。
- 列出內網自架的內部工具與版本(只列,不升級)
docker ps --format '{{.Names}}\t{{.Image}}' | grep -iE 'appsmith|retool|n8n|metabase|jenkins|gitlab|grafana'看到什麼代表什麼:每一列對照該工具官方最新版。落後好幾個版本、或沒人說得出誰負責的,就是 91APP 那扇側門。不是用 Docker 跑的工具,用同樣欄位手動列。 - 在本機 clone 的 repo 上做一次 secret 掃描(唯讀,不改 repo)
gitleaks detect --source . --no-banner --redact --report-path alarm-repo-dbkey-k7.json看到什麼代表什麼:沒有發現最好。有發現的話,看類型是不是資料庫密碼、連線字串或雲端金鑰;在歷史紀錄裡的也算,直接排輪替,不要只刪檔案。 - 列出 GitLab 專案的 CI 變數有沒有保護與遮罩(只看名稱與屬性,不印值)
curl -s --header "PRIVATE-TOKEN: $GITLAB_TOKEN" "$GITLAB_URL/api/v4/projects/$PROJECT_ID/variables" | jq -r '.[] | [.key, .protected, .masked] | @tsv'看到什麼代表什麼:名稱看起來像 DB_PASSWORD、DATABASE_URL 的變數,protected 與 masked 都應該是 true;是 false 的,代表任何能讀這個專案的人或 pipeline 都看得到。 - 看正式資料庫允許誰連進來(AWS 為例,唯讀)
aws ec2 describe-security-groups --group-ids $DB_SG_ID --query 'SecurityGroups[].IpPermissions[].[FromPort, IpRanges[].CidrIp, UserIdGroupPairs[].GroupId]' --output json看到什麼代表什麼:只該看到應用程式所在的網段或安全群組。出現 CI、辦公室 VPN、內部工具的網段,或 0.0.0.0/0,就是本案事後才補的那一條。 - 如果你的電商開在 91APP:把官方時間軸對到自家客服紀錄(唯讀)看到什麼代表什麼:以 10 月 3 日為起點,篩出提到「重複扣款」「定期購」「LINE 客服」的進線。有受騙且有財損的客人,告訴他們 91APP 的登記管道:官網線上客服、(02) 7723-1622、[email protected]。
回到那扇側門
前篇的結尾,帳單分散寄到許多品牌的客服部門。這一篇,帳單的源頭找到了:一扇員工自己裝、很久沒換鎖的側門,和一把掛在工程部白板上的鑰匙。91APP 已經把那扇門拆掉、把鎖換了。
還沒公布的,是那間管理室裡有多少個櫃子被打開過,以及白板上是不是只有這一把鑰匙。前者等主管機關,後者,每一家有 GitLab 的公司都可以今天自己去看。
環境背景、時間線、攻擊鏈對照 ATT&CK、關鍵證據、根因、處置與檢討都在完整版,約 9 分鐘。
來源
- 91APP 官方:91APP 遭受駭客攻擊事件說明與後續補償計畫(資料更新日期 10/22,含時間軸、破口、處置、補償與聯絡管道)
- 聯合新聞網:91APP 遭駭客自動化攻擊!公布階段調查報告,承諾全面補償消費者財損(2026-10-22,含董事長說法、10-14 23:00 阻斷、10-07 五家品牌反映)
- 數位時代:91APP 資安事件怎麼賠?遭駭財損全額補償、登記管道(2026-10-22)
- 知新聞:91APP 遭 AI 自動化攻擊!董座何英圻致歉認疏失,承諾受詐財損「全面補償」(2026-10-22)
- 遠見雜誌:91APP 詐騙信風暴始末》電商老闆:他們被駭,要我們去扛
- CrowdStrike:Unknown Threat Actor Uses AI-Driven ARTEX to Target South Korean Finance(2026-10-07,ARTEX 第一手研究)
- The Hacker News:ARTEX AI Pentesting Tool Used in Data Theft Attacks on South Korean Financial Firms(2026-10)
- Seoul Economic Daily:Chinese AI Hacking Tool Suspected in Attacks on Both Korean Banks and Japanese Firms(2026-10-20,引述 GMO Cybersecurity by Ierae)
- Infosecurity Magazine:Critical Appsmith Flaw Enables Account Takeovers(CVE-2026-22794,已有利用;與本案是否相關未公開)
- NVD:CVE-2026-5418(Appsmith SSRF;與本案是否相關未公開)
- AWS:Secrets Manager 定價
- MITRE ATT&CK:T1552.001 Unsecured Credentials: Credentials In Files
- MITRE ATT&CK:T1213.003 Data from Information Repositories: Code Repositories
- 本站前篇:攻擊打在一家 SaaS,詐騙信卻用好幾個品牌的名字寄出(2026-10-16,重訊拆解與品牌端時間軸)
- 本站拆解:南韓金融機構外洩與 ARTEX(2026-10-12)
- 本站防暴筆記:排程回報「找不到帳戶」,被停權的是整個專案
本文為公開報導與官方公告的整理與拆解,非第一手鑑識;證據等級依來源可信度標註。
本文由 AI 團隊協助研究與撰寫,經隱私與事實檢查後發布;證據等級依來源可信度標註。
複製下面這段,貼給你在用的 AI 工具(Claude Code、Cursor、Copilot、ChatGPT 都可以)。它會用本篇的破口位置、自我檢測與學習重點,對你的專案或環境做一次資安掃描,列出潛在問題與建議的調整或加強方式。
預設是唯讀:只發現問題、提出建議,不會改你任何檔案或設定。
M2 憑證清冊與輪替 · M3 對外攻擊面(內部工具與 CI) · M8 結業盤點(SaaS 與委外平台清冊) · 想在自己的環境做一次同樣的盤點,從 自我盤點 開始。
每篇新文章一封:三點摘要、關鍵字定義、今天能做的一件事。或先 加入會員 記錄你完成的任務。