Black Hat EU 2003 - Design and Software Vulnerabilities In Embedded Systems
三句話摘要
嵌入式系統的安全漏洞:從 Pocket PC 到 HP 印表機、Cisco 路由器的設計缺陷與軟體脆弱性分析。 嵌入式系統無法更新、診斷功能未隔離、HTTP 實作普遍脆弱,但其掌控的網路關鍵基礎設施和個人資料同樣重要——應將其視為與桌面系統等同的威脅,並透過網路隔離、禁用不必要服務、強化認證機制進行防禦。 嵌入式系統安全本質上脆弱。大多數嵌入式系統無法像桌面作業系統那樣快速打補丁,硬體設備一旦發現安全漏洞,用戶往往必須送回經銷商更新,這種滯後性導致漏洞長期存在。同時,嵌入式系統通常無法額外安裝防護軟體,只能依賴出廠配置。
重點整理
重點- 1
嵌入式系統安全本質上脆弱。大多數嵌入式系統無法像桌面作業系統那樣快速打補丁,硬體設備一旦發現安全漏洞,用戶往往必須送回經銷商更新,這種滯後性導致漏洞長期存在。同時,嵌入式系統通常無法額外安裝防護軟體,只能依賴出廠配置。
- 2
設計缺陷是最常見的攻擊入口。包括未文檔化的開發者後門、「開箱即用」功能長期保持啟用、對標準協議的非標準實作(如 Cisco 對 RFC 的自定義解釋),以及因倉促開發導致的功能交互漏洞。例如 S.E.N.D 路由器預設允許 UDP 協議遠端重新配置。
- 3
HTTP 服務實作普遍不堪一擊。逐字稿中提及「我還沒看過一個不完全有問題的嵌入式 HTTP 守護程式」,簡單的長用戶名或畸形 GET 請求即可導致設備當機。這些漏洞跨越多個廠商和產品,並非孤立事件。
- 4
記憶體管理的任意寫入能力可達成完整控制。Cisco iOS 的堆溢位允許攻擊者透過精心構造的記憶體塊頭部,在利用指標交換機制執行任意代碼,進而修改 NVRAM 配置、禁用中斷保護並獲取完整路由器控制權。
實用技巧與重點
乾貨- Pocket PC 密碼繞過:
- 進入 Bootloader 模式:按下電源鍵→軟重啟→按日曆按鈕進入密碼菜單
- 密碼菜單選項:顯示密碼統計、停用密碼、清除密碼
- RAM 容量:32 MB(可複製到 SD 卡檢查)
- 停用後可無密碼登入,無需知道原密碼
- HP 印表機漏洞:
- PGL(印表機工作語言)安全密碼:1 到 65535 間的數字,可在 6 小時內遠端爆破
- SNMP 硬編碼社群字串返回管理員密碼
- 檔案系統存取:早期型號 8 MB 儲存空間,新型號 80+ GB
- Shy VM:Java 虛擬機,內含可修改的 HTML 檔、圖形、固韌體
- CS Config 檔案:修改可載入不同 Java 類別並執行
- S.E.N.D 路由器 ATMP 漏洞:
- 預設啟用 ATMP(S.N. 隧道管理協議)
- 建立 GRE 隧道時檢查本地連接設定檔
- 空設定檔配對空密碼即可通過認證,無需使用者名稱
- Cisco 增強 IGRP 拒絕服務:
- Hello 訊息計時器:16 位元,最大 ~18 小時
- ARP 重試次數:計時器每次遞減時重新 ARP 一次,發送多個非存在 IP 地址導致 CPU/頻寬全佔用
- 影響:所有 iOS 版本,Cisco 未修復
- Cisco 2500/1600 堆溢位利用:
- TFTP 長檔名觸發堆溢位
- 記憶體塊頭部大小:32 位元組(包含魔法數字、指標、大小、紅區)
- 紅區檢查:唯一的記憶體保護機制,每 30 秒執行一次
- 利用步驟:第一次溢位洩漏記憶體佈局→第二次溢位寫入假塊頭→利用指標交換寫入 NVRAM→重啟裝置
- OSPF 漏洞(UPSPF):
- 相鄰路由器數量限制:256(類別 C 網路設計遺物)
- Hello 封包路由器 ID:允許空字符
- I/O 記憶體固定大小區塊,容量達到閾值後新增/釋放
- 最小 iOS 配置:一個介面 IP + 回傳路由
- 防護措施:
- 不信任單一廠商設備(Cisco、Checkpoint 都可能被破解)
- 印表機:設定管理員密碼、更改 SNMP 社群、移除預設 Loader、使用 IP 過濾或實體隔離
- 路由器:移除未使用服務(TFTP)、保持 iOS 更新、啟用 Debug Sanity、配置 NVRAM 保護、分離 Syslog 日誌
- 配置暫存器 0:禁止開機載入配置(需實體存取主控台)
結論
結論“嵌入式系統無法更新、診斷功能未隔離、HTTP 實作普遍脆弱,但其掌控的網路關鍵基礎設施和個人資料同樣重要——應將其視為與桌面系統等同的威脅,並透過網路隔離、禁用不必要服務、強化認證機制進行防禦。”
完整解析
詳細這場演講跨越多位安全研究者的發現,揭示嵌入式系統從設計到實作的系統性安全危機。
Pocket PC 的完整破解涉及硬體層面的直接存取。研究者發現 Pocket PC 的韌體允許使用診斷 SD 卡進入 Bootloader 模式,從而繞過所有軟體層的密碼保護。透過 Bootloader 內建的密碼菜單,攻擊者可以直接停用或清除密碼,隨後取得裝置完全控制權。這個案例說明即使軟體層實作了密碼機制,硬體層的診斷功能若未妥善隔離,將使所有上層防護形同虛設。XDA 開發者社群開發的工具更進一步,能夠直接修改 GSM 模組參數、清除通話記錄,顯示嵌入式系統的安全邊界極其模糊。
HP 印表機漏洞的利用鏈從設計缺陷開始。PGL 協議原本用於列印任務管理,卻允許直接存取印表機檔案系統。安全密碼機制看似有 65535 種可能,但因為沒有嘗試限制和鎖定機制,遠端爆破只需 6 小時。更嚴重的是,SNMP 實作硬編碼了包含管理員密碼的變量,對標準 SNMP 讀取社群字串的查詢直接洩露憑證。演講者展示的工具利用 Shy VM(印表機內的 Java 虛擬機)執行任意代碼。由於 Shy VM 內的各服務完全信任彼此,一旦代碼執行就如同取得 root 權限。HP 甚至提供了郵件服務,攻擊者可透過外部郵箱發送命令,印表機會定期檢查並執行。此外,修改 CS Config 檔案可繞過簽名驗證機制,加載未簽名的 Java 類別。演講者團隊設計的網頁介面工具將這一切簡化,讓任何人都能修改印表機顯示訊息、設定列印份數上限、甚至鎖定實體按鈕。
Cisco 路由器漏洞展示了記憶體管理的根本設計問題。iOS 的堆溢位漏洞基於雙連結串列結構,記憶體塊頭部包含指標、大小、紅區等欄位。攻擊者透過 TFTP 長檔名觸發溢位,精心構造假塊頭部,利用 iOS 的指標交換機制(在釋放記憶體時進行)達成任意記憶體寫入。第一步是洩漏記憶體佈局,通過製造可控的當機並重啟,觀察重啟後的記憶體初始化狀態。第二步構造指向 NVRAM 配置存儲位置的指標,透過一個精心設計的「自修改代碼」區塊,不但能寫入新配置,更能在重啟前禁用中斷並解除 NVRAM 寫保護。最終效果是遠端重寫路由器配置、添加管理帳戶,無需實體存取。對於 OSPF UPSPF 漏洞,攻擊者大量發送偽造的 Hello 封包,使相鄰路由器表溢出。I/O 記憶體採用固定大小區塊池,當溢位發生時保持穩定(因為記憶體管理不使用鏈結串列),但當達到記憶體閾值觸發新增/釋放時,預先溢位的代碼就會執行。這允許攻擊者投放一個「休眠」漏洞,在流量激增時激活。
設計缺陷無所不在。S.E.N.D 路由器預設啟用的 ATMP 協議在無 RADIUS 伺服器情況下,對空使用者名稱和空密碼的認證請求直接返回 GRE 隧道 ID。HP 印表機和 Cisco 路由器的 HTTP 實作都無法正確處理超長輸入,短短一個畸形請求即導致當機。這些問題不是孤立的程式設計錯誤,而是嵌入式系統開發文化的根本缺陷——開發人員往往是電子工程背景,對軟體安全的關注遠不如桌面應用開發社群;同時限制的資源和無法快速迭代的佈署模型,使得安全修復成本極高,因此廠商傾向於對已知漏洞視而不見。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

