作者分析

開發者筆電上,躺著一堆明文金鑰

雲端金鑰的設定檔、寫死資料庫密碼的測試腳本、從同事那裡複製來的 token、好幾年沒換的 SSH 私鑰。這些檔案不在 git 裡,所以感覺很安全;但筆電只要中了惡意程式或被偷,它們就一起被帶走。

30 秒看懂
  • 開發者家目錄常放著雲端金鑰設定檔、寫死密碼的腳本和多年沒換的 SSH 私鑰;不在 git 裡,不代表安全。
  • 惡意套件與竊密程式專找常見的設定檔路徑,本機金鑰又常是長期有效、權限過大,一台筆電就能交出管理員權限。
  • 不用先買工具:用開源掃描器自我盤點、改用 SSO 短期憑證、縮小權限、停用閒置金鑰,並把撤銷金鑰寫進離職流程。

一個看似正常的開發套件

假設有一家二十人的 SaaS 新創。工程師 N 安裝了一個看似正常的開發套件,裡面藏著竊取程式,會把家目錄的設定檔打包上傳。幾天後,公司的雲端帳號出現陌生的存取金鑰。調查發現,那把被盜的雲端金鑰是 N 兩年前建立、存在本機設定檔裡的,而且權限是管理員等級。

先說清楚,這是示意情境,不是真實事件,公司、人物與經過都是為了說明而設。但打開任何一位工程師的家目錄,你多半會找到類似的東西:放著雲端金鑰的設定檔、寫死資料庫密碼的測試腳本、從同事那裡複製來的 API token、好幾年沒換的 SSH 私鑰。

這篇要講的只有一件事:不在 git 裡,不代表安全;本機上的長期金鑰,要換成會自己過期的憑證。

本機不等於安全

第一層是位置。惡意套件、竊密程式專找常見的設定檔路徑,家目錄是它們最先翻的地方。

第二層是壽命。本機金鑰很少輪換,建立那天到被偷那天,可能已經好幾年。

第三層是權限。為了方便,常常直接給了管理員權限,一把金鑰就能做所有事。

最後是清單。公司不知道哪台筆電上有哪些金鑰,出事時也就答不出還要撤銷哪幾把。

這篇示意情境裡,被帶走的是什麼

這是示意情境,沒有實際外洩;下表列的是開發者筆電上最常見、也最常被竊密程式帶走的憑證。

leaked credentials這次外洩了什麼:服務、用途、存在形式
服務憑證類型用途存在形式放在哪權限範圍狀態
雲端帳號(IAM)長期存取金鑰工程師在本機用命令列操作雲端明文寫在家目錄的雲端設定檔工程師 N 的筆電管理員等級(示意情境中被拿來建立陌生的存取金鑰)示意情境;兩年前建立、從未輪換,撤銷前持續有效
其他本機憑證(資料庫密碼、第三方 API token、SSH 私鑰)密碼/API token/私鑰測試腳本、呼叫第三方服務、登入主機腳本內常數、純文字檔、PEM 私鑰檔同一台筆電的家目錄依各服務而定是否一起被帶走無法確認
憑證本身已遮蔽或失效;這裡只說明它是哪個服務、拿來做什麼、以什麼形式存放,讓你能對照自己的環境。

第二列標成缺口,是因為竊取程式打包了哪些檔案,要做惡意程式分析才知道。

能證明的、只能推論的

這篇是觀點文,情境是示意的,所以能證明的只有官方文件與專案頁寫明的事;情境裡的經過只能算推論,不知道的就寫成缺口。

不花錢就能做的流程

到這裡,其實已經足夠理解問題在哪。如果你想直接動手,可以跳到「今天就可以來試試」;下面是完整的六步流程。

第一步,自我盤點。 請每位工程師用開源掃描器掃自己的家目錄。結果只給本人看,自己處理,降低抗拒。

第二步,能換成短期憑證的就換。 雲端存取改用 SSO 登入、取得短期憑證(主要雲端平台的命令列工具多半支援),不要在本機放長期存取金鑰。

第三步,權限縮小。 開發用的帳號只給開發環境的權限;正式環境的金鑰不放在個人電腦上。

第四步,找出閒置金鑰。 AWS IAM Access Analyzer 可以找出未使用的存取金鑰(付費功能);Google Cloud 的 IAM 建議工具可以提出縮小角色的建議。

第五步,全碟加密和套件衛生。 開啟全碟加密;安裝套件前確認來源,鎖定版本。

第六步,離職時撤銷。 離職檢查表加上「撤銷此人建立的所有金鑰」。

什麼時候不需要買工具

工程師在十人以下的話,開源掃描加上「改用短期憑證」就能處理大部分問題。需要集中看到全公司裝置上的金鑰狀況時,才需要端點層級的工具。

市面上大致分四類。開源掃描器:Gitleaks、TruffleHog。雲端原生:短期憑證登入、AWS IAM Access Analyzer、Google Cloud IAM 建議工具。密鑰管理:雲端原生的 AWS Secrets Manager、Google Cloud Secret Manager;開源的 Infisical、OpenBao;商用的密碼和密鑰管理器(例如 1Password 的開發者密鑰管理,官網說程式可以在執行時透過 CLI 或 SDK 取出密鑰)。端點管理:MDM 和端點偵測回應類產品,可以搭配政策檢查。

限制也要一起看:把金鑰移進保管庫可以減少明文檔案,但如果電腦已經被入侵,執行時取出的金鑰還是可能被攔截,這無法取代端點防護;掃描靠規則比對,會有漏判。選的時候問三件事:雲端平台本身有沒有短期憑證機制(有就先用)、團隊規模(人少靠自我盤點,人多需要集中可見性)、裝置管理現況(沒有 MDM 的話,端點層級的工具很難推行)。

後續更新兩則。2026/07/28,1Password 宣布 Developer Watchtower 正式提供,官網說可以找出開發者裝置上的明文密鑰,並移進受管理的保管庫。2026/10/17 查證時,1Password Device Trust 的英文產品頁列出「AI 與密鑰探索」功能(推出日期未在頁面上註明);另外,Gitleaks 的 README 寫明專案「功能完整」,之後只發布安全修補,作者轉而開發 Betterleaks。

這篇提到的項目要花多少錢

來源沒有列損失金額與商用方案價格,表裡照實標成未公開或估算。

cost清掉筆電上明文金鑰的成本
項目用量單價期間US$NT$舉證
每位工程師自我掃描家目錄並處理
估
每人估 30–60 分鐘一次性——本站估算
Gitleaks/TruffleHog開源軟體免費—0.000各專案 GitHub 頁
AWS IAM Access Analyzer 未使用存取發現依帳號與角色數付費功能,本文未取得價格每月——AWS 官方文件註明為付費功能
Google Cloud IAM 角色建議依專案本文來源未列價格———官方文件未在本文引用處列價格
示意情境中被盜管理員金鑰造成的損失未公開未公開———示意情境,無實際帳單
合計(僅可證明列)0.000
匯率假設 1 USD ≈ NT$32。單價為公開牌價或帳單實付,來源:本站估算;AWS、Google Cloud 官方文件、各開源專案頁(2026-10-17 讀取)。「舉證」欄標明每筆損失的證據來源與等級( 可證明 推論 缺口)。

最便宜的一列是掃描,最貴的一列是那把兩年沒換、權限是管理員的金鑰被拿去之後,你還不知道它做了什麼。

你可以學到什麼

站在攻擊者那一側看,開發者的家目錄是一個路徑固定、內容豐富的保險箱。他不用猜,只要知道常見設定檔放在哪;裡面的金鑰多半長期有效、權限又大,一台筆電就夠了。

lessons本案的 5 個教訓
  1. 01
    開發者家目錄裡的雲端設定檔、測試腳本、SSH 私鑰都可能存著明文金鑰;不在 git 裡,不代表安全。
  2. 02
    竊密程式專找常見的設定檔路徑,所以本機長期金鑰要換成用 SSO 取得、會自己過期的短期憑證。
  3. 03
    開發帳號只給開發環境權限,正式環境的金鑰不放在個人電腦上,被偷時影響範圍才會小。
  4. 04
    用 IAM Access Analyzer 或 IAM 建議工具找出閒置金鑰與過大的角色,該停用的先停用。
  5. 05
    把金鑰移進保管庫能減少明文檔案,但無法取代端點防護;電腦已被入侵時,執行時取出的金鑰仍可能被攔截。
keywords重點學習:最需要學習的 10 個關鍵字10 個
  1. 01
    明文金鑰
    這篇的主角:不加密地躺在設定檔與腳本裡,誰拿到檔案誰就能用。
  2. 02
    長期存取金鑰
    建立後不會自己過期,被偷的那天距離建立可能已經好幾年。
  3. 03
    短期憑證(SSO 登入)
    取代本機長期金鑰的做法,就算被偷也很快失效。
  4. 04
    家目錄設定檔
    竊密程式最先翻的地方,自我盤點也從這裡開始。
  5. 05
    最小權限
    開發帳號只給開發環境權限,決定被偷時損失有多大。
  6. 06
    IAM Access Analyzer
    找出未使用存取金鑰的 AWS 官方工具,注意這是付費功能。
  7. 07
    IAM 角色建議
    Google Cloud 依實際使用建議縮小角色,處理「為了方便給了管理員」。
  8. 08
    Gitleaks dir
    不只掃 repo,也能掃本機目錄,適合工程師自我盤點。
  9. 09
    全碟加密
    筆電被偷時保護檔案的最後一道防線。
  10. 10
    離職撤銷
    人走了,他建立的金鑰也要一起收回,否則清單永遠補不齊。
try today今天就可以來試試約 15 分鐘

全部唯讀,不改任何設定;做完你會知道自己有沒有同樣的破口。

  1. 看一眼自己家目錄裡的雲端與 SSH 設定資料夾有哪些檔案(唯讀,不要打開貼給別人)
    ls -la ~/.aws ~/.ssh
    看到什麼代表什麼:看到 credentials 這類檔案,代表本機可能放著長期金鑰;私鑰檔的建立日期越早,越該檢查。
  2. 已安裝 Gitleaks 的話,掃一次自己的家目錄,結果遮蔽顯示,只給自己看(唯讀)
    gitleaks dir --redact ~
    看到什麼代表什麼:列出的每一筆都是明文密鑰候選;掃描器會漏判,沒有發現也不代表沒有。
  3. AWS 使用者:列出自己帳號下的存取金鑰(唯讀)
    aws iam list-access-keys
    看到什麼代表什麼:看到建立日期很久以前、狀態為 Active 的金鑰,就是示意情境裡那一把的同類;把每一把的 ID 末 4 碼與建立日期記進「laptop-key-ledger-n4.csv」,第六步離職撤銷時才有清單可對。
  4. 對上一步列出的每把金鑰,查它上次被使用的時間(唯讀)
    aws iam get-access-key-last-used --access-key-id <你的金鑰 ID>
    看到什麼代表什麼:很久沒用過的金鑰,是可以優先停用的候選;最近有使用但你不記得用過的,要特別追查。
  5. 確認筆電已開啟全碟加密(macOS:系統設定 → 隱私權與安全性 → FileVault;Windows:設定 → 裝置加密或 BitLocker)(唯讀)
    看到什麼代表什麼:顯示已關閉的,筆電一旦遺失,家目錄裡的檔案就沒有任何保護。

揭露:本文未受任何廠商贊助,提及的產品僅為舉例。

來源

分享
精選拆解直送信箱

每篇新文章一封:三點摘要、關鍵字定義、今天能做的一件事。

延伸閱讀

新聞稿拆解

門是一個沒更新的內部工具,鑰匙就放在 GitLab 裡

91APP 10 月 22 日公布 18 天階段性調查:攻擊者從一個沒套修補的 Appsmith 進入內網,在內部 GitLab 找到一座訂單資料庫的金鑰,10 月 3 日進去、10 月 14 日深夜才被阻斷。前篇寫「入口未公開」,現在入口公開了。這篇是續篇:拆開新的第一手說明,看它證明了什麼、還缺什麼,以及你家的內部工具和 repo 今天能查什麼。

  • 2026/10/22
  • 每日拆解