ChatGPT 被曝存在爬蟲漏洞,OpenAI 未公開承認(rèn)
本月,德國(guó)安全研究員Benjamin Flesch通過(guò)微軟的GitHub分享了一篇文章,解釋了如何通過(guò)向ChatGPT API發(fā)送單個(gè)HTTP請(qǐng)求,利用ChatGPT爬蟲(特別是 ChatGPT-User)向目標(biāo)網(wǎng)站發(fā)起大量網(wǎng)絡(luò)請(qǐng)求。攻擊者可以將單個(gè)API請(qǐng)求放大為每秒20到5000次甚至更多的請(qǐng)求,持續(xù)不斷地發(fā)送到目標(biāo)網(wǎng)站。從實(shí)際操作來(lái)看,這種連接的洪流雖然不足以使任何網(wǎng)站癱瘓,但仍被認(rèn)為是一種潛在的危險(xiǎn),也暴露了OpenAI 的疏忽。
Flesch在他的報(bào)告中指出:“ChatGPT API在處理向 https://chatgpt.com/backend-api/attributions發(fā)送的HTTP POST請(qǐng)求時(shí),表現(xiàn)出嚴(yán)重的質(zhì)量缺陷。”他提到的API端點(diǎn),被ChatGPT用于返回聊天機(jī)器人輸出中引用的網(wǎng)絡(luò)來(lái)源信息。當(dāng)ChatGPT提到特定網(wǎng)站時(shí),它會(huì)調(diào)用“attributions”接口,并附帶這些網(wǎng)站的URL列表,供爬蟲訪問(wèn)并獲取相關(guān)信息。如果向API發(fā)送一個(gè)包含大量URL的列表,每個(gè)URL略有不同但都指向同一個(gè)網(wǎng)站,爬蟲會(huì)立即訪問(wèn)所有這些URL 。
Flesch寫道:“API期望在參數(shù)urls中接收一個(gè)超鏈接列表。眾所周知,指向同一網(wǎng)站的超鏈接可以以多種不同的方式編寫。由于編程實(shí)踐不當(dāng),OpenAI沒有檢查列表中是否多次出現(xiàn)指向同一資源的超鏈接。 OpenAI也沒有對(duì)urls參數(shù)中存儲(chǔ)的超鏈接數(shù)量設(shè)置上限,從而允許在單個(gè)HTTP請(qǐng)求中傳輸數(shù)千個(gè)超鏈接。”
因此,攻擊者可以使用Curl等工具向ChatGPT端點(diǎn)發(fā)送HTTP POST請(qǐng)求,無(wú)需身份驗(yàn)證令牌。OpenAI在微軟Azure上的服務(wù)器將響應(yīng)此請(qǐng)求,并為通過(guò)urls[]參數(shù)提交的每個(gè)超鏈接發(fā)起HTTP請(qǐng)求。當(dāng)這些請(qǐng)求指向同一個(gè)網(wǎng)站時(shí),可能會(huì)使目標(biāo)網(wǎng)站不堪重負(fù),出現(xiàn)DDoS癥狀——由Cloudflare代理的爬蟲每次都會(huì)從不同的IP地址訪問(wèn)目標(biāo)網(wǎng)站。
“受害者永遠(yuǎn)不會(huì)知道發(fā)生了什么,因?yàn)樗麄冎豢吹酵粫r(shí)間,ChatGPT機(jī)器人從大約20個(gè)不同的IP地址訪問(wèn)他們的網(wǎng)站。”Flesch說(shuō)。他還補(bǔ)充道,即使受害者啟用了防火墻來(lái)阻止ChatGPT機(jī)器人使用的IP地址范圍,機(jī)器人仍然會(huì)發(fā)送請(qǐng)求。“因此,一個(gè)失敗或被阻止的請(qǐng)求,不會(huì)阻止ChatGPT機(jī)器人在下一毫秒再次請(qǐng)求受害者網(wǎng)站。由于這種放大效應(yīng),攻擊者可以向ChatGPT API發(fā)送少量請(qǐng)求,但受害者將收到大量請(qǐng)求。”
Flesch 通過(guò)多個(gè)渠道報(bào)告了這一未經(jīng)身份驗(yàn)證的反射型DDoS漏洞,包括OpenAI的BugCrowd漏洞報(bào)告平臺(tái)、OpenAI安全團(tuán)隊(duì)的電子郵件、微軟和HackerOne,但至今未收到任何回復(fù)。
Flesch認(rèn)為更大的問(wèn)題是這個(gè)API還容易受到提示注入攻擊。Flesch質(zhì)疑,為什么OpenAI機(jī)器人沒有實(shí)現(xiàn)簡(jiǎn)單且成熟的方法,以正確去重請(qǐng)求列表中的URL,或者限制列表的大小,也沒有解決在ChatGPT主界面中已修復(fù)的提示注入漏洞。
Flesch 說(shuō):“在我看來(lái),這個(gè)小API似乎是ChatGPT AI代理的一個(gè)示例項(xiàng)目,任務(wù)是從用戶提供的數(shù)據(jù)中解析出URL,然后使用Azure抓取網(wǎng)站。‘AI代理’沒有內(nèi)置安全功能嗎?因?yàn)樨?fù)責(zé)處理urls[]參數(shù)的‘AI代理’似乎完全沒有資源耗盡的概念,也不明白為什么同一秒內(nèi)向同一個(gè)網(wǎng)站發(fā)送數(shù)千個(gè)請(qǐng)求是愚蠢的行為。難道它沒有意識(shí)到victim.com/1和victim.com/2都是指向同一個(gè)網(wǎng)站victim.com嗎?如果victim.com/1的請(qǐng)求失敗了,為什么還會(huì)立即向victim.com/2發(fā)送請(qǐng)求呢?這些都是人們多年來(lái)一直在軟件中實(shí)施的驗(yàn)證邏輯,以防止此類濫用現(xiàn)象出現(xiàn)。 ”
Flesch表示,唯一能想到的解釋是OpenAI正在使用AI代理來(lái)觸發(fā)這些HTTP請(qǐng)求。“我無(wú)法想象一個(gè)高薪的硅谷工程師會(huì)設(shè)計(jì)出這樣的軟件,因?yàn)镃hatGPT爬蟲已經(jīng)像谷歌爬蟲一樣在網(wǎng)絡(luò)上爬行了多年。如果爬蟲不限制對(duì)同一網(wǎng)站的請(qǐng)求數(shù)量,它們會(huì)立即被屏蔽。”
參考來(lái)源:https://www.theregister.com/2025/01/19/openais_chatgpt_crawler_vulnerability/