KeyFrame內部研究專用

Black Hat Europe 2025 | ORMageddon: Leaking More Than You Joined For

Black Hat·7月8日週三·26 min英文

三句話摘要

ORM 漏洞利用:開發者常見的過度暴露查詢功能,導致敏感數據洩露的攻擊方法。 ORM 漏洞已成為現代 Web 應用最常見的邏輯漏洞,因開發者常識不足於其設計複雜性,比 SQL 注入危害更難察覺、影響更廣。 開發者常假設只暴露「查詢功能」就是安全的,卻忽略了 ORM 的關聯查詢威力。當使用者可控過濾表達式中的欄位名與運算符時,攻擊者能跨越模型邊界,查詢設計上不應暴露的欄位(如密碼雜湊)。

重點整理

重點
  • 1

    開發者常假設只暴露「查詢功能」就是安全的,卻忽略了 ORM 的關聯查詢威力。當使用者可控過濾表達式中的欄位名與運算符時,攻擊者能跨越模型邊界,查詢設計上不應暴露的欄位(如密碼雜湊)。

  • 2

    許多流行 ORM 的運算符解析具有邏輯漏洞。Beego 在連續處理過濾表達式時會被非關聯屬性覆蓋,開發者的黑名單檢查能被簡單繞過,例如「email__password__startswith」這類組合。

  • 3

    Prisma 的漏洞在於假設過濾輸入必為字符串,但 Node.js/JavaScript 應用中物件注入十分容易,攻擊者可透過 URL 編碼、Cookie 或 JSON 負載將運算符物件注入 where 條件。

  • 4

    OData API 與 Entity Framework 組合會自動將所有關聯類型與其屬性包含在資料模型中,若開發者未明確用 IgnoreDataMember 標記敏感欄位,邏輯運算符與字符串函數都能洩露資料,即使停用展開選項亦然。

實用技巧與重點

乾貨
  • 工具與平台名稱
  • Django ORM(Python,最常被模仿的設計)
  • Beego ORM(Golang Web 框架)
  • Prisma ORM(Node.js)
  • Entity Framework(.NET)+ OData API
  • Harbor 開源容器 Registry(Beego 真實案例)
  • 具體攻擊技術
  • 密碼爆破:用 `password__startswith=A` 逐字符判斷非空回應
  • 多對多關係繞過:透過部門或團隊字段找到其他使用者
  • Beego 運算符繞過:`email__password__startswith` 被前字段覆蓋
  • Prisma 物件注入:`{"$ne": "known_token"}` 透過 URL 編碼或 Cookie 注入
  • OData 字符串函數:`substringof`、`startswith` 在過濾時洩露資料
  • OData 邏輯運算符:`$filter=APIToken gt 'value'` 用大小比較洩露資料
  • 真實案例:Harbor
  • 漏洞位置:`setFilters` 函數用於所有 API 列表端點
  • 第一次補丁:黑名單 + `filterable=false` 標記,被 Beego 覆蓋繞過
  • 第二次補丁:限制雙下底線使用一次,遭 `~` 字符繞過
  • 最終修復:白名單驗證允許的運算符

結論

結論

ORM 漏洞已成為現代 Web 應用最常見的邏輯漏洞,因開發者常識不足於其設計複雜性,比 SQL 注入危害更難察覺、影響更廣。

完整解析

詳細

ORM(物件關聯對映)的本質是在應用程式碼與資料庫之間建立抽象層,讓開發者用物件導向語言操作複雜關聯資料,而無需手寫 SQL。Django ORM 因其強大且易用的設計而廣為採用,其獨特之處在於自動生成表連接。當開發者要實現搜尋功能時,只需定義過濾條件即可,例如 `Article.objects.filter(title__contains=search_term)`。

問題出現在過度便利的背後。某些開發者為節省程式碼行數,直接將使用者輸入傳入過濾表達式,甚至讓使用者選擇欄位名與運算符。在這種情況下,攻擊者就能透過 `password__startswith=A` 來逐字符爆破密碼。更糟的是,多對多關係設計的本意是連接使用者與部門,卻被攻擊者用來跳轉至未直接相關的使用者,從而洩露本應隱藏的資料。

Django 的設計深刻影響了後來的 ORM,Beego(Golang 最流行 Web 框架)幾乎完全複製了這套過濾語法。Alex Brown 在開源容器 Registry Harbor 中發現此漏洞,開發團隊三次補丁都被迴避:黑名單被 Beego 的欄位覆蓋特性繞過、運算符限制被自訂對應繞過、最終才加入白名單。這段歷史說明了 ORM 運算符解析的複雜性與開發者對邏輯漏洞的常見誤判。

Prisma 在 Node.js 生態中廣泛應用,其漏洞在於 JavaScript 的型別靈活性。密碼重設流程通常驗證 `reset_token` 與請求中的值相等,但若框架(如 Express.js)啟用擴展 URL 編碼解析,攻擊者可用 `reset_token[ne]=known_value` 注入 `{"$ne": "..."}` 物件,繞過認證。同樣的漏洞也見於 Cookie JSON 解析。

OData 是微軟定義的查詢標準,與 Entity Framework 結合時危害最大。開發者生成實體資料模型時會自動追蹤所有關聯型別與屬性,若未明確標記敏感欄位為隱藏,密碼與 API 令牌會暴露在 API 上。即使限制展開選項,字符串函數(如 `substringof`、`startswith`)與邏輯運算符(如 `gt`、`lt`)仍能洩露資料。此類漏洞可導致批次洩露大量使用者認證資訊。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

Risky Bulletin: Russia starts blocking DoH and DoT
編輯精選
8 min
Web2 安全英文PODCAST8月26日

Risky Bulletin: Russia starts blocking DoH and DoT

Risky Business

  • 國家級網路管制層級提升:俄羅斯主動封鎖加密 DNS 協定對抗審查工具,中國加速淘汰 Windows 系統並遷移自主 Linux 發行版,各國正透過技術與法律手段強化網路主權與信息控制能力。
  • 詐騙犯罪走向精密化與自動化:從冒充警察的聲音詐騙(竊取 7.2 百萬美元)、AI 語音代理自動化破解 iPhone 啟用鎖、到跨越數百網站的投資詐騙(詐騙 7400 萬美元),犯罪組織正利用自動化工具與 AI 技術大幅降低成本並擴大規模。
  • AI 惡意軟體威脅實際上被嚴重誇大:405 個整合 AI 的惡意軟體樣本中僅 12 個於真實感染被偵測,其餘來自測試環境,證明當前 AI 惡意軟體仍停留於實驗階段,尚未構成主流威脅。
SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;
5 min
Web2 安全英文PODCAST8月26日

SANS Stormcast Wednesday, August 26th, 2026: Obfuscating SSRF; Paint and Photos AI Watermarks; FTP Banner C2;

SANS Stormcast

  • SSRF 攻擊者已進化出高級繞過手段,不直接使用元數據服務 IP(169.254.169.254),而改用專門域名服務將請求轉址,支援點或破折號分隔 IP,甚至可自部署 DNS 伺服器進行 DNS 重綁定攻擊,使傳統簡易過濾機制失效。
  • 本地 AI 模型並非完全隱私:微軟 Paint 雖在本地執行生成邏輯,但安全檢查需上傳提示文字至遠程伺服器,返回時圖像內嵌不易移除的伺服器 GUID 隱形浮水印,可見浮水印(Copilot 圖標)則易被移除。
  • 傳統 FTP 協議被新型惡意軟體重新利用為命令控制通道,透過 FTP banner 傳遞指令於連接埠 21,防守者應視任何出站 FTP 流量為異常信號。
SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。