女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于cookie、互聯(lián)網(wǎng)代碼和CVE的故事

倩倩 ? 來源:AI前線 ? 作者:AI前線 ? 2022-09-23 15:22 ? 次閱讀
這是一個(gè)關(guān)于 cookie、互聯(lián)網(wǎng)代碼和 CVE(通用漏洞披露)的故事。

本文最初發(fā)布于 Daniel Stenberg 的個(gè)人博客。

curl 作者 Daniel Stenberg 近日在個(gè)人博客分享了一個(gè)存在 23.9 年的 curl 漏洞。curl 是常用的命令行工具,用來請(qǐng)求 Web 服務(wù)器,于 1997 年首次發(fā)行。

據(jù) Stenberg 透露,這個(gè)漏洞是在 curl 發(fā)布后的第 201 天引入的,但是直到第 8930 天,漏洞才修復(fù)好。一個(gè)持續(xù)了 23.9 年的漏洞背后有著怎樣的故事?

一切還得從 1998 年說起。

curl 4.9 與 cookie

1998 年 10 月,Stenberg 帶領(lǐng)團(tuán)隊(duì)推出了 curl 4.9 版本。當(dāng)時(shí),聽過或用過 curl 的人還少得可憐。幾個(gè)月之后,curl 官網(wǎng)才宣布新版本的下載量達(dá)到了 300。那時(shí),無論從何種意義上講, curl 都還很小眾。

curl 4.9 作為第一個(gè)帶有 “cookie 引擎” 的版本,可以接收 HTTP cookie、解析、識(shí)別,并在后續(xù)的請(qǐng)求中把 cookie 正確地返回。在 curl 中,處理 cookie 的大部分代碼都是 Stenberg 編寫的。

那會(huì),cookie 還沒有明確的規(guī)范,僅有的一份描述 cookie 工作原理的規(guī)范,是一份由 Netscape 管理的文檔cookie_spec (感興趣的同學(xué)可以戳鏈接查看文檔副本:https://curl.se/rfc/cookie_spec.html)。這份文檔并不完善,有不少信息需要通過查看其它客戶端才能了解到。

Stenberg 在實(shí)現(xiàn)處理 cookie 的代碼時(shí),就是參考了這份文檔以及當(dāng)時(shí)瀏覽器的大致處理方式。

此后十年,IETF(互聯(lián)網(wǎng)工程任務(wù)組)一直在努力創(chuàng)建 cookie 規(guī)范,但均以失敗而告終。這些早期 cookie 規(guī)范的創(chuàng)建者可能覺得,他們創(chuàng)建了標(biāo)準(zhǔn),世界就會(huì)情不自禁地遵守它們,但事實(shí)并非如此。cookie 的特殊之處在于,有很多不同的作者、代碼庫和網(wǎng)站實(shí)現(xiàn)了它。因此,很難從根本上改變它們的工作方式。

直到 2011 年,cookie RFC 正式發(fā)布了,它記錄并解釋了 cookie 實(shí)際的使用方式,這可以說是真正意義上的 cookie 規(guī)范。Stenberg 本人也參與了規(guī)范的制定過程,并在其中闡述了自己的觀點(diǎn)和意見。對(duì)于這份規(guī)范的內(nèi)容,雖然 Stenberg 并不完全贊同,但與此前的各種 cookie 規(guī)范相比,cookie RFC 的確是一個(gè)巨大的進(jìn)步。

cookie 雙重語法帶來的挑戰(zhàn)

一開始,新的 cookie 規(guī)范并沒有給 Stenberg 造成困擾,但很快,規(guī)范的特殊編寫方式讓 Stenberg 倍感頭疼:它針對(duì)服務(wù)器如何發(fā)送 cookie 提供了一種字段語法,而針對(duì)客戶端應(yīng)該接受什么樣的 cookie 提供了另一種語法。也就是說,同樣的 cookie,需要兩種語法。

這有兩個(gè)很直接的缺點(diǎn):

  1. 規(guī)范很難閱讀。你很容易就停留在其中一種語法上,以為那就是適合自己用例的,但卻沒有意識(shí)到角色描述是錯(cuò)誤的。

  2. 定義如何發(fā)送 cookie 的語法其實(shí)并不重要,因?yàn)槿绾谓邮蘸吞幚?cookie 都是由客戶端決定的。現(xiàn)有的大型 cookie 解析器(瀏覽器)有一定程度的自由決定自己接受什么,所以沒人注意,也沒人關(guān)心服務(wù)器是否嚴(yán)格遵守了規(guī)范中的語法。與此同時(shí),cookie 規(guī)范也在持續(xù)更新。從幾年前開始,IETF 就一直在修訂和更新 2011 年的 cookie 規(guī)范,計(jì)劃將世界上一些已實(shí)際投入使用的 cookie 擴(kuò)展添加到規(guī)范中。這項(xiàng) cookie 規(guī)范更新工作被稱為 6265bis。

curl 也同步進(jìn)行更新,以確保符合 RFC 6265bis 草案版本的規(guī)定。

但是,雙重語法仍然是 cookie 規(guī)范文檔中懸而未決的問題。

隨著時(shí)間的推移,cookie 的發(fā)展變得緩慢。在過去的幾十年里,HTTP 規(guī)范也就更新了有限的幾次,但值得一提的是,HTTP 服務(wù)器實(shí)現(xiàn)已經(jīng)實(shí)施了更嚴(yán)格的解析策略:

如果傳入的 HTTP 請(qǐng)求看上去“非法”或格式不正確,那么 HTTP 服務(wù)器就會(huì)提前拒絕,把它們擋在門外。對(duì)于請(qǐng)求中的控制代碼尤其如此。如果你試圖將一個(gè)包含控制代碼(這里的控制代碼指的是介于 1 到 31 之間的字節(jié)值,不包括 9,9 是 TAB)的請(qǐng)求發(fā)送到一個(gè)相當(dāng)新的 HTTP 服務(wù)器,那么服務(wù)器很可能會(huì)拒絕,并返回 400 響應(yīng)代碼。從 2016 年 12 月發(fā)布的 2.4.25 版本開始,HTTP 服務(wù)器 Apache httpd 就默認(rèn)啟用了此行為。最新版本的 Nginx 似乎也是這樣做的。

如果是現(xiàn)在設(shè)計(jì) cookie,那么肯定會(huì)有所不同。

設(shè)置 cookie 的網(wǎng)站把 cookie 發(fā)送到客戶端,對(duì)于其發(fā)送的每個(gè) cookie,它都會(huì)設(shè)置多個(gè)屬性。尤其是當(dāng)需要客戶端發(fā)回 cookie 時(shí),它會(huì)設(shè)置匹配參數(shù)。

在 cookie 的這些參數(shù)中,其中有一個(gè)是 domain,客戶端發(fā)送 cookie 時(shí)要匹配它。服務(wù)器www.example.com可以設(shè)置 cookie 的有效范圍為整個(gè)example.com域,這時(shí),客戶端在訪問second.example.com 時(shí)也會(huì)發(fā)送 cookie。也就是說,服務(wù)器可以將 cookie 設(shè)置為適用于“兄弟站點(diǎn)”。

值得一提的是,1998 年添加到 curl 中的 Cookie 代碼在接受內(nèi)容方面相當(dāng)自由,當(dāng)然,多年來也經(jīng)過了不少調(diào)整和完善,不過它始終與現(xiàn)實(shí)世界的網(wǎng)站保持了兼容。對(duì)于那部分代碼,Stenberg 修改的主要?jiǎng)恿κ冀K是為了使 curl 的 Cookie 處理方式與其他已有的使用 cookie 的代理保持基本一致,并可以互操作。

curl 的 Bug 詳情與修復(fù)方案

2022 年 6 月底,Stenberg 收到了一份報(bào)告,報(bào)告懷疑 curl 中存在安全問題。正是這份報(bào)告促使 curl 發(fā)布了 CVE-2022-35252。

事實(shí)證明,源于 1998 年的舊 cookie 代碼,會(huì)接受包含控制代碼的 cookie。控制代碼可以是名稱或內(nèi)容的一部分,如果用戶啟用了“cookie 引擎”,那么 curl 就會(huì)存儲(chǔ)那些 cookie,并在后續(xù)的請(qǐng)求中將它們發(fā)送回來。

例如,curl 會(huì)接受下面這樣的 cookie:

Set-cookie: name^a=content^b; domain=.example.com

^a 和 ^b 表示控制代碼。由于域可以將 cookie 標(biāo)記為適用于其他主機(jī),所以發(fā)送到域中所有主機(jī)的請(qǐng)求都會(huì)包含這個(gè) cookie。

當(dāng) curl 將類似那樣的一個(gè) cookie 發(fā)送到 HTTP 服務(wù)器時(shí),它的外發(fā)請(qǐng)求中會(huì)包含下面這樣一個(gè) header 字段:

cookie: name^a=content^b

對(duì)此,Apache httpd 及其他服務(wù)器的默認(rèn)配置都會(huì)返回 400。一個(gè)腳本或應(yīng)用程序在收到這樣的 cookie 后,如果后續(xù)的請(qǐng)求中還繼續(xù)發(fā)送 cookie,就會(huì)遭到拒絕。

Stenberg 復(fù)盤后發(fā)現(xiàn),cookie 規(guī)范 RFC 6265 5.2 節(jié)確實(shí)說了,客戶端應(yīng)該丟棄包含控制代碼的 cookie,但這部分對(duì)用戶來說理解起來比較難,需要對(duì)文檔有深入的研究才能發(fā)現(xiàn)。此外,規(guī)范并沒有提及“控制代碼”或是字節(jié)值范圍。

Stenberg 認(rèn)為,要弄清楚主流瀏覽器是怎么做的還是比較容易的,因?yàn)樗鼈兊脑创a很容易獲得。事實(shí)證明,Chrome 和 Firefox 都已經(jīng)忽略了包含以下任何字節(jié)的傳入 cookie:

%01-%08 / %0b-%0c / %0e-%1f / %7f

其中不包含 %09(TAB)和 %0a / %0d(行結(jié)束符)。

Bug 修復(fù)方面,Stenberg 表示,curl 的修復(fù)補(bǔ)丁處理方式非常簡單:拒絕包含一個(gè)或多個(gè)禁用字節(jié)值的 cookie 字段。Stenberg 認(rèn)為,這種修改基本是沒有風(fēng)險(xiǎn)的。

寫在最后

推算起來,有漏洞的代碼從 curl 4.9 版本開始就一直存在,curl 7.85.0 版本才完成修復(fù)。整個(gè)歷程有 8729 天(23.9 年)。也就是說,這個(gè) Bug 是在項(xiàng)目發(fā)布的第 201 天引入的,到第 8930 天才修復(fù)。

Stenberg 認(rèn)為,代碼在發(fā)布時(shí)是沒什么問題的,并且在用戶的使用過程中,也基本沒有產(chǎn)生什么問題。它的問題出在,HTTP 服務(wù)開始拒絕可能的惡意 HTTP 請(qǐng)求時(shí)。如此一來,這段代碼就變成了一種拒絕服務(wù),這或多或少會(huì)帶來一些副作用。

或許,這個(gè) Bug 誕生于 RFC 6265 發(fā)布之時(shí)。或許,它誕生于 HTTP 服務(wù)器開始拒絕這些請(qǐng)求時(shí)。不管怎樣,這個(gè) Bug 創(chuàng)造了一個(gè)新的項(xiàng)目記錄:它是第四個(gè)被發(fā)現(xiàn)之前存在了 8000 多天的 Bug。


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    13

    文章

    9685

    瀏覽量

    87277
  • Curl
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    8360

原文標(biāo)題:24年了,終于有人發(fā)現(xiàn)curl的這個(gè)Bug了

文章出處:【微信號(hào):AI前線,微信公眾號(hào):AI前線】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    官網(wǎng)下載的stm32cubemx無法連接互聯(lián)網(wǎng),WiFi有一條斜杠,怎么解決?

    有哪位大佬幫忙解決一下,我在官網(wǎng)下載的stm32cubemx無法連接互聯(lián)網(wǎng),WiFi有一條斜杠,感謝您。
    發(fā)表于 03-11 07:35

    一文解析工業(yè)互聯(lián)網(wǎng)

    電子發(fā)燒友網(wǎng)站提供《一文解析工業(yè)互聯(lián)網(wǎng).pptx》資料免費(fèi)下載
    發(fā)表于 02-20 16:42 ?1次下載

    互聯(lián)網(wǎng)是什么意思

    互聯(lián)網(wǎng),通常稱為云計(jì)算,是一種基于互聯(lián)網(wǎng)的計(jì)算模式,它允許用戶通過網(wǎng)絡(luò)訪問和使用遠(yuǎn)程服務(wù)器上的存儲(chǔ)、管理和處理數(shù)據(jù)的資源。主機(jī)推薦小編為您整理發(fā)布云互聯(lián)網(wǎng)的詳細(xì)解釋。
    的頭像 發(fā)表于 01-07 09:50 ?461次閱讀

    Coremail亮相世界互聯(lián)網(wǎng)大會(huì)“互聯(lián)網(wǎng)之光”博覽會(huì)

    11月19-22日,2024年世界互聯(lián)網(wǎng)大會(huì)烏鎮(zhèn)峰會(huì)盛大舉辦,期間,“互聯(lián)網(wǎng)之光”博覽會(huì)“網(wǎng)絡(luò)安全”新產(chǎn)品新技術(shù)發(fā)布活動(dòng)在烏鎮(zhèn)互聯(lián)網(wǎng)國際會(huì)展中心紅亭發(fā)布區(qū)舉行,Coremail亮相發(fā)布現(xiàn)場,展示郵箱
    的頭像 發(fā)表于 11-27 15:57 ?467次閱讀
    Coremail亮相世界<b class='flag-5'>互聯(lián)網(wǎng)</b>大會(huì)“<b class='flag-5'>互聯(lián)網(wǎng)</b>之光”博覽會(huì)

    燒結(jié)銀在衛(wèi)星互聯(lián)網(wǎng)中的四大應(yīng)用

    無壓燒結(jié)銀作為一種先進(jìn)的連接材料,近年來在衛(wèi)星互聯(lián)網(wǎng)領(lǐng)域展現(xiàn)出了巨大的應(yīng)用潛力。衛(wèi)星互聯(lián)網(wǎng)作為新一代通信技術(shù)的重要組成部分,旨在通過衛(wèi)星實(shí)現(xiàn)全球無縫覆蓋的高速互聯(lián)網(wǎng)接入。這一目標(biāo)的實(shí)現(xiàn)離不開高性能、高可靠性的連接材料,而無壓燒結(jié)
    的頭像 發(fā)表于 11-17 15:39 ?532次閱讀

    5G RedCap工業(yè)互聯(lián)網(wǎng)平臺(tái)是什么

    5G RedCap工業(yè)互聯(lián)網(wǎng)平臺(tái):賦能工業(yè)物聯(lián)網(wǎng)的新篇章 隨著5G技術(shù)的不斷演進(jìn)和普及,工業(yè)互聯(lián)網(wǎng)作為新一代信息技術(shù)與制造業(yè)深度融合的產(chǎn)物,正迎來前所未有的發(fā)展機(jī)遇。其中,5G RedCap
    的頭像 發(fā)表于 08-30 13:55 ?787次閱讀

    工業(yè)互聯(lián)網(wǎng)遠(yuǎn)程監(jiān)控平臺(tái)是什么

    工業(yè)互聯(lián)網(wǎng)遠(yuǎn)程監(jiān)控平臺(tái):賦能智能制造的利器 在當(dāng)今快速發(fā)展的工業(yè)領(lǐng)域,工業(yè)互聯(lián)網(wǎng)遠(yuǎn)程監(jiān)控平臺(tái)正逐漸成為推動(dòng)工業(yè)升級(jí)和數(shù)字化轉(zhuǎn)型的重要力量。工業(yè)互聯(lián)網(wǎng)平臺(tái),也被稱為工業(yè)云平臺(tái)或工業(yè)物聯(lián)網(wǎng)
    的頭像 發(fā)表于 08-29 14:11 ?564次閱讀

    工業(yè)互聯(lián)網(wǎng)系統(tǒng)的組成

    工業(yè)互聯(lián)網(wǎng)系統(tǒng)通常由以下幾個(gè)關(guān)鍵組成部分構(gòu)成: 設(shè)備和傳感器:這是工業(yè)互聯(lián)網(wǎng)的基礎(chǔ),包括各種機(jī)械設(shè)備、生產(chǎn)工具、智能傳感器等。這些設(shè)備能夠?qū)崟r(shí)收集關(guān)于自身狀態(tài)、運(yùn)行參數(shù)或環(huán)境數(shù)據(jù)的信息。 連接技術(shù)
    的頭像 發(fā)表于 07-28 16:42 ?1506次閱讀

    ESP8266無法連接到互聯(lián)網(wǎng)是怎么回事?

    您好,我更改了路由器上的頻道,現(xiàn)在我的ESP8266無法連接到互聯(lián)網(wǎng)。它仍然連接到本地網(wǎng)絡(luò),但即使將路由器切換回原始頻道也無法解決我的問題。我在下面發(fā)布了at命令,如果可以的話,請(qǐng)幫忙! 在
    發(fā)表于 07-16 06:14

    heap連上互聯(lián)網(wǎng)的時(shí)候,heap空間慢慢的就變小了,直到最后程序僵死在那,為什么?

    當(dāng)局域網(wǎng)通訊的時(shí)候,用system_get_free_heap_size()得到heap的大小一直不變的,通訊穩(wěn)定; 但是連上互聯(lián)網(wǎng)的時(shí)候,heap空間慢慢的就變小了,直到最后程序僵死在那。 請(qǐng)問這是什么原因引起的,有什么解決方法嗎?謝謝 另外,大的局部變量已經(jīng)用的zalloc()和free()。
    發(fā)表于 07-12 07:13

    esp8266已連接到Wifi但無法連接到互聯(lián)網(wǎng),為什么?

    首先,我想說對(duì)不起,如果我的帖子在錯(cuò)誤的線程中。在那之后,我想問一個(gè)問題,我的 esp12E 已連接到 Wifi,但它無法連接到互聯(lián)網(wǎng),即使 wifi 連接到互聯(lián)網(wǎng)和其他設(shè)備,它仍然完美地使用互聯(lián)網(wǎng)
    發(fā)表于 07-09 07:11

    工業(yè)互聯(lián)網(wǎng)平臺(tái)中什么是關(guān)鍵

    工業(yè)互聯(lián)網(wǎng)平臺(tái)是工業(yè)領(lǐng)域數(shù)字化轉(zhuǎn)型的重要支撐,其關(guān)鍵要素包括以下幾個(gè)方面: 網(wǎng)絡(luò)基礎(chǔ)設(shè)施 網(wǎng)絡(luò)基礎(chǔ)設(shè)施是工業(yè)互聯(lián)網(wǎng)平臺(tái)的基礎(chǔ),包括有線網(wǎng)絡(luò)、無線網(wǎng)絡(luò)、物聯(lián)網(wǎng)等。工業(yè)互聯(lián)網(wǎng)平臺(tái)需要實(shí)現(xiàn)設(shè)
    的頭像 發(fā)表于 07-02 09:37 ?1127次閱讀

    智能工廠互聯(lián)網(wǎng)平臺(tái)是什么

    智能工廠互聯(lián)網(wǎng)平臺(tái)是一種結(jié)合了互聯(lián)網(wǎng)技術(shù)與先進(jìn)制造技術(shù)的生產(chǎn)管理系統(tǒng)。它通過網(wǎng)絡(luò)將各種設(shè)備、生產(chǎn)線、傳感器等連接起來,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)傳輸和分析,從而優(yōu)化生產(chǎn)過程、提高生產(chǎn)效率和產(chǎn)品質(zhì)量。 智能工廠
    的頭像 發(fā)表于 06-12 11:26 ?521次閱讀

    工業(yè)互聯(lián)網(wǎng)平臺(tái)的功能和作用

    工業(yè)互聯(lián)網(wǎng)平臺(tái)是現(xiàn)代制造業(yè)中連接物理世界和數(shù)字世界的樞紐,它通過集成各種設(shè)備、系統(tǒng)和軟件,實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)傳輸、處理和分析,從而為用戶提供智能化的制造能力。工業(yè)互聯(lián)網(wǎng)平臺(tái)的主要功能和作用包括以下幾個(gè)
    的頭像 發(fā)表于 06-07 09:33 ?1989次閱讀