作者:張簡皓祥/臺灣大學計算機及資訊網路中心網路組北區學術資訊安全維運中心資安工程師、陳思蘊/臺灣大學計算機及資訊網路中心行政專員
ChatGPT的一個PHP專案中被發現SSRF漏洞,連接有該專案之伺服器即有可能遭到駭客竊取資料…本文將介紹SSRF的攻擊原理與常見利用情境,分析CVE-2024-27564漏洞,並提出防禦方法,以降低該漏洞所造成的危害。
前言
OpenAI ChatGPT的一個PHP專案(commit ID:f9f4bbc)中被發現伺服器端請求偽造(Server-Side Request Forgery, SSRF)漏洞,編號CVE-2024-27564,連接有該專案之伺服器極有可能遭到駭客竊取資料。因該應用程式未妥善驗證輸入參數URL,導致攻擊者可透過注入特製的URL,使伺服器在未授權的情況下對任意位置發送請求,造成內部資訊洩漏等重大風險。
本文將介紹SSRF的攻擊原理與常見利用情境,分析CVE-2024-27564漏洞,並提出防禦方法,以降低該漏洞所造成的危害。
一、SSRF漏洞
-
簡介
SSRF(Server-Side Request Forgery)漏洞是一種由攻擊者利用伺服器端發起偽造請求的攻擊手法。在SSRF攻擊中,攻擊者透過向伺服器發送特製的請求,促使伺服器向內部資源或其他服務發起請求,並將得到的資料回傳攻擊者,從而訪問本應受限制的內部系統或機敏資料。
SSRF漏洞通常出現在處理用戶輸入並轉發HTTP請求的應用程式。被攻擊的應用程式因為未能正確驗證或過濾來自用戶端的URL請求,導致攻擊者能夠將惡意URL植入請求,以繞過安全機制,進而對受限制的權限及資料進行訪問。
-
攻擊原理
[1] 攻擊者發送一個HTTP請求,請求中包含一個惡意的URL。該URL通常指向內部資源或攻擊者控制的服務。
[2] 受影響的伺服器接收到該請求後,在沒有對URL進行驗證及過濾的情況下,將URL作為參數進行處理,並訪問該URL。
[3] 伺服器會向內部網絡、內部服務或攻擊者設置的伺服器發送請求,並將機敏資料回傳給攻擊者,導致機敏資料洩露、內部服務被攻擊或內部資源被存取。

圖1、SSRF漏洞示意圖;來源:自行整理
-
危險性
攻擊者可能以SSRF漏洞進行以下攻擊行為:
- 內部資源存取:攻擊者得以存取內部網絡的服務或資源,例如內部資料庫、管理介面、文件系統等。
- 機敏資料洩露:攻擊者得以獲得密鑰、密碼、服務器配置等內部服務的機敏資料。
- 攻擊外部服務:攻擊者得以發起對外部服務的攻擊,進而利用這些服務進行進一步的滲透。
- 攻擊情境
攻擊者利用SSRF漏洞的常見情境:
- 訪問內部文件系統:攻擊者透過傳遞參數值「file:///etc/passwd」請求,嘗試訪問伺服器的使用者帳號資訊。
- 訪問內部API或服務:攻擊者利用http://127.0.0.1或 http://localhost訪問本地或內部服務。
- 滲透內部網路:攻擊者對內部IP進行掃描,獲取內部網路或外部服務的其他資源。
- 防禦方法
- 驗證與過濾:
- 針對用戶輸入的URL進行強化驗證和過濾,拒絕或限制指向本地地址(如127.0.0.1、localhost)和私有IP的請求。
- 內部API、資料庫等內部資源應設置更嚴格的訪問控制,並強化驗證機制,避免內部資源遭受攻擊。
- 設置防火牆規則:
- 在防火牆中設置規則,防止伺服器發起未經授權的請求,或阻擋外部的機敏資料請求。
- 定期漏洞掃描:

圖2、SSRF漏洞防禦方法;來源:自行整理
二、CVE-2024-27564
-
漏洞概述
- 漏洞編號:CVE-2024-27564
- 漏洞類型:SSRF(Server-Side Request Forgery,伺服器端請求偽造)
- 影響組件:pictureproxy.php(來自OpenAI ChatGPT專案,Commit ID:f9f4bbc,PHP程式)
- 觸發條件:下載並執行該專案,或連上具有該專案的伺服器並輸入個人資訊
- CVSS分數:6.5
- EPSS分數:初期評分小於1%,近期攻擊案例增加上升至91.72%
- 利用程度:已被廣泛利用
-
漏洞細節
- 漏洞描述:”pictureproxy.php”中的程式碼未對輸入的URL參數值進行嚴格驗證,導致攻擊者可以注入任意URL參數值 (即SSRF攻擊)。
- 受影響的程式碼
if (isset($_GET['URL'])) {
$image = file_get_contents($_GET['URL']);
header("Content-type: image/jpeg");
echo $image;
}
|
-
程式說明
- isset($_GET['URL']):檢查是否有提供名為URL的查詢參數值。
- file_get_contents($_GET['URL']):若存在URL參數值,將其輸入file_get_contents()函數。
- 程式會回傳對應URL的內容。
-
漏洞成因
此程式碼的核心問題在於未對使用者輸入的URL參數進行任何過濾或驗證。攻擊者可以傳入如下格式的URL:
- file:///etc/passwd(讀取系統檔案)
- http://localhost:8080/internal-api(存取僅供內部使用的API)
- http://169.254.169.254/latest/meta-data/(AWSmetadata竊取)
因為file_get_contents()函數支援http、https、ftp、file等多種協定,而程式沒有設定限制,造成攻擊者可以利用此程式充當proxy,向目標內部資源發送請求,進而達到內網掃描、敏感資訊探勘、敏感資料竊取及跨系統橫向移動攻擊等目的。
-
概念驗證(Proof of Concept, POC)

圖 3、POC說明及設定檔;圖片來源:github
- chatgpt.yaml:為nuclei掃描工具之設定檔,用來設定弱點掃描所需參數,如嘗試次數、連線方法、連線路徑、連線狀態及回傳資料格式等。

圖4、nuclei掃描工具設定檔;圖片來源:github
詳細步驟
- 利用nuclei自動化漏洞掃描開源工具,檢測疑似存在SSRF漏洞的伺服器,chatgpt.txt為掃描清單txt檔,chatgpt.yaml為nuclei掃描工具設定檔。掃描後會列出可請求機敏資料的URL,其中包含帶有該漏洞的伺服器IP及機敏資料路徑。

圖5、掃描疑似存在漏洞的伺服器;圖片來源:POC影片
- 輸入指令:curl -i -s –k,後面加上掃描得到的任一URL,會顯示連線成功(HTTP/1.1 200 OK),以及下方登入資料等機敏資料。

圖6、POC連線結果;圖片來源:POC影片
- 漏洞利用情況
- 該漏洞正在被積極利用,單一惡意IP的攻擊次數已超過一萬次。
- 分析的組織中有35%因IPS、WAF和防火牆設定錯誤而未受保護。
- 最常被鎖定的產業與地區為美國的政府、金融機構。

圖7、全球駭客攻擊情況;圖片來源:VERITI漏洞報告
- 初始EPSS評分偏低(低於1%),3月中成為大量實際攻擊途徑,逐漸上調EPSS評分至91.63%,說明漏洞嚴重性評分並不等同於實際風險。

圖8、漏洞EPSS歷史評分圖;圖片來源:cvedetails.com網站

圖9、漏洞EPSS歷史評分數據;圖片來源:cvedetails.com網站
- 目前已知利用CVE-2024-27564漏洞的攻擊者IP
- 31.56.56[.]156
- 38.60.191[.]7
- 94.156.177[.]106
- 159.192.123[.]190
- 119.82.255[.]34
- 103.251.223[.]127
- 104.143.229[.]115
- 114.10.44[.]40
- 116.212.150[.]192
- 145.223.59[.]188
- 167.100.106[.]99
- 174.138.27[.]119
- 212.237.124[.]38
- 216.158.205[.]221
- 去年公布的ChatGPT附加元件SSRF漏洞出現攻擊行動,美國政府機關是頭號目標
https://www.ithome.com.tw/news/167993
- CVE-2024-27564 Actively Exploited in the Wild
https://veriti.ai/blog/veriti-research/cve-2024-27564-actively-exploited/
- Blackwell Helix Threat Bulletin: ChatGPT SSRF Vulnerability (CVE-2024-27564) Exploited in Healthcare Attacks
https://blackwellsecurity.com/resources/threat-bulletin/blackwell-helix-threat-bulletin-chatgpt-ssrf-vulnerability-cve-2024-27564-exploited-in-healthcare-attacks/?utm_source=chatgpt.com
- Github 概念驗證(POC)
https://github.com/gh-ost00/SSRF_Vulnerability
- A Server-Side Request Forgery (SSRF) in pictureproxy.php of ChatGPT || CVE-2024-27564
https://www.youtube.com/watch?v=wflibs2jAos
- CVE-2024-27564 EPSS score history
https://www.cvedetails.com/epss/CVE-2024-27564/epss-score-history.html