Airflow同日三洞:cookie越權、登出未撤、越權讀事件
oss-security mailing list · 2026-09-21
當一個請求同時帶著session cookie與Authorization bearer header時,Apache Airflow的核心API會直接採信cookie並忽略bearer token,等於把身份判斷權交給攻擊者比較容易操控的cookie。這是CVE-2026-82355的機制,與另外兩個同樣在二〇二六年九月二十一日公開的Airflow授權漏洞出自同一批修補。三個漏洞都指向Airflow身份驗證與授權層的邊界設計問題,而且都在3.3.2版一次修掉。Airflow是資料工程團隊最常見的排程平台之一,許多公司把多個團隊的DAG跑在同一個Airflow環境裡、靠per-DAG權限與API身份驗證做隔離,這三個漏洞剛好同時打在「身份判斷」與「授權過濾」這兩個隔離機制的地基上。
漏洞機制
優先權反轉是第一個問題的核心。官方說明寫道:Airflow會「從cookie解析出呼叫者身份、並忽略bearer token、顛倒了bearer應優先於cookie的預期順序」。攻擊者只要透過cookie tossing或XSS等手法、把自己控制的session cookie注入受害者瀏覽器,就能讓對方明明帶著自己的bearer token發出請求、卻被系統誤判成攻擊者的身份,形成session fixation與稽核紀錄錯置。這不是直接的權限提升、而是身份混淆與稽核可信度的破壞。
第二個問題出在登出機制。CVE-2026-86473影響3.0.0到3.3.2之前的所有版本,登出端點只會撤銷以cookie形式送出的token;如果客戶端改用Authorization bearer header帶著token登出,「端點會回傳正常的登出回應、但實際上什麼都沒撤銷、token會一直有效到自然過期為止」。由於預設token效期長達二十四小時,攻擊者只要事先竊得一組bearer token,受害者按下登出也救不回來,這段時間都是可用的攻擊窗口。
第三個問題與跨DAG越權讀取有關。CVE-2026-75158指出/assets/events API沒有依照個別DAG權限做過濾,只要使用者擁有asset讀取權限,就能「列舉出所有DAG的asset事件、包含來源Dag ID、task ID、run ID與事件時間戳記,即使他原本沒有權限看到那些DAG」。更麻煩的是分頁與計數查詢也沒有加上授權過濾,導致total_entries本身就會洩漏隱藏DAG的存在,即使呼叫者從未真正讀到那些DAG的內容。
| CVE編號 | 機制 | 修復版本 |
|---|---|---|
CVE-2026-82355 | session cookie蓋過bearer token,身份判斷順序反轉 | 3.3.2 |
CVE-2026-86473 | 登出只撤銷cookie、bearer token不受影響 | 3.3.2 |
CVE-2026-75158 | /assets/events未依DAG權限過濾、越權讀取事件 | 3.3.2 |
受影響版本
三個漏洞的受影響範圍不完全重疊,多租戶部署要特別注意自己踩在哪個版本區間。
CVE-2026-82355:Apache Airflow3.3.0與3.3.1。CVE-2026-86473:Apache Airflow3.0.0起至3.3.2之前的所有版本。CVE-2026-75158:Apache Airflow3.3.2之前的版本(原文未載明明確起始版本)。
修補與緩解
三個漏洞的修補收斂在同一個版本:Apache Airflow 3.3.2。官方把bearer token的優先權明確調回cookie之前,登出端點改成同時檢查並撤銷Authorization header帶入的token,/assets/events的事件查詢與計數查詢也補上依DAG權限的授權過濾。換句話說、改的不是三個互不相干的補丁,而是同一批對「身份判斷來源」與「授權檢查覆蓋範圍」的收斂。
對跑Airflow的資料工程與平台團隊來說,行動很直接:全部升級到3.3.2或之後版本,尤其是把Airflow當成多租戶排程平台、用per-DAG權限隔離不同團隊的環境要優先處理。升級前建議盤點兩件事:一是有沒有服務同時用cookie與bearer token兩種方式呼叫API;二是登出流程是否仰賴bearer token撤銷來做安全性假設。這兩種情境在舊版本上都不成立,升級前可先在應用層加上額外檢查、或縮短token效期作為過渡緩解。對已經啟用per-DAG授權(DAG-level access control)的環境,也建議在升級後重新確認asset相關端點回傳的資料範圍是否符合預期,因為CVE-2026-75158造成的洩漏不需要任何額外權限、只要有基本的asset讀取權限就能觸發,很容易被忽略。
原始來源:oss-security CVE-2026-82355、oss-security CVE-2026-86473、oss-security CVE-2026-75158