在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于cookie、互聯網代碼和CVE的故事

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

本文最初發布于 Daniel Stenberg 的個人博客。

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

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

一切還得從 1998 年說起。

curl 4.9 與 cookie

1998 年 10 月,Stenberg 帶領團隊推出了 curl 4.9 版本。當時,聽過或用過 curl 的人還少得可憐。幾個月之后,curl 官網才宣布新版本的下載量達到了 300。那時,無論從何種意義上講, curl 都還很小眾。

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

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

Stenberg 在實現處理 cookie 的代碼時,就是參考了這份文檔以及當時瀏覽器的大致處理方式。

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

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

cookie 雙重語法帶來的挑戰

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

這有兩個很直接的缺點:

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

  2. 定義如何發送 cookie 的語法其實并不重要,因為如何接收和處理 cookie 都是由客戶端決定的。現有的大型 cookie 解析器(瀏覽器)有一定程度的自由決定自己接受什么,所以沒人注意,也沒人關心服務器是否嚴格遵守了規范中的語法。與此同時,cookie 規范也在持續更新。從幾年前開始,IETF 就一直在修訂和更新 2011 年的 cookie 規范,計劃將世界上一些已實際投入使用的 cookie 擴展添加到規范中。這項 cookie 規范更新工作被稱為 6265bis。

curl 也同步進行更新,以確保符合 RFC 6265bis 草案版本的規定。

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

隨著時間的推移,cookie 的發展變得緩慢。在過去的幾十年里,HTTP 規范也就更新了有限的幾次,但值得一提的是,HTTP 服務器實現已經實施了更嚴格的解析策略:

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

如果是現在設計 cookie,那么肯定會有所不同。

設置 cookie 的網站把 cookie 發送到客戶端,對于其發送的每個 cookie,它都會設置多個屬性。尤其是當需要客戶端發回 cookie 時,它會設置匹配參數。

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

值得一提的是,1998 年添加到 curl 中的 Cookie 代碼在接受內容方面相當自由,當然,多年來也經過了不少調整和完善,不過它始終與現實世界的網站保持了兼容。對于那部分代碼,Stenberg 修改的主要動力始終是為了使 curl 的 Cookie 處理方式與其他已有的使用 cookie 的代理保持基本一致,并可以互操作。

curl 的 Bug 詳情與修復方案

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

事實證明,源于 1998 年的舊 cookie 代碼,會接受包含控制代碼的 cookie??刂拼a可以是名稱或內容的一部分,如果用戶啟用了“cookie 引擎”,那么 curl 就會存儲那些 cookie,并在后續的請求中將它們發送回來。

例如,curl 會接受下面這樣的 cookie:

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

^a 和 ^b 表示控制代碼。由于域可以將 cookie 標記為適用于其他主機,所以發送到域中所有主機的請求都會包含這個 cookie。

當 curl 將類似那樣的一個 cookie 發送到 HTTP 服務器時,它的外發請求中會包含下面這樣一個 header 字段:

cookie: name^a=content^b

對此,Apache httpd 及其他服務器的默認配置都會返回 400。一個腳本或應用程序在收到這樣的 cookie 后,如果后續的請求中還繼續發送 cookie,就會遭到拒絕。

Stenberg 復盤后發現,cookie 規范 RFC 6265 5.2 節確實說了,客戶端應該丟棄包含控制代碼的 cookie,但這部分對用戶來說理解起來比較難,需要對文檔有深入的研究才能發現。此外,規范并沒有提及“控制代碼”或是字節值范圍。

Stenberg 認為,要弄清楚主流瀏覽器是怎么做的還是比較容易的,因為它們的源代碼很容易獲得。事實證明,Chrome 和 Firefox 都已經忽略了包含以下任何字節的傳入 cookie:

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

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

Bug 修復方面,Stenberg 表示,curl 的修復補丁處理方式非常簡單:拒絕包含一個或多個禁用字節值的 cookie 字段。Stenberg 認為,這種修改基本是沒有風險的。

寫在最后

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

Stenberg 認為,代碼在發布時是沒什么問題的,并且在用戶的使用過程中,也基本沒有產生什么問題。它的問題出在,HTTP 服務開始拒絕可能的惡意 HTTP 請求時。如此一來,這段代碼就變成了一種拒絕服務,這或多或少會帶來一些副作用。

或許,這個 Bug 誕生于 RFC 6265 發布之時。或許,它誕生于 HTTP 服務器開始拒絕這些請求時。不管怎樣,這個 Bug 創造了一個新的項目記錄:它是第四個被發現之前存在了 8000 多天的 Bug。


審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    13

    文章

    9727

    瀏覽量

    87427
  • Curl
    +關注

    關注

    0

    文章

    17

    瀏覽量

    8390

原文標題:24年了,終于有人發現curl的這個Bug了

文章出處:【微信號:AI前線,微信公眾號:AI前線】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    鯤云科技入選AII工業互聯網應用案例

    近日,以“數智創新 深化賦能—高質量推進新型工業化”為主題的2025中國工業互聯網大會在蘇州隆重開幕。政產學研用各界專家齊聚,共商工業互聯網高質量發展大計。大會期間,中國工業互聯網產業聯盟(AII
    的頭像 發表于 06-16 17:12 ?252次閱讀

    官網下載的stm32cubemx無法連接互聯網,WiFi有一條斜杠,怎么解決?

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

    一文解析工業互聯網

    電子發燒友網站提供《一文解析工業互聯網.pptx》資料免費下載
    發表于 02-20 16:42 ?1次下載

    互聯網是什么意思

    互聯網,通常稱為云計算,是一種基于互聯網的計算模式,它允許用戶通過網絡訪問和使用遠程服務器上的存儲、管理和處理數據的資源。主機推薦小編為您整理發布云互聯網的詳細解釋。
    的頭像 發表于 01-07 09:50 ?491次閱讀

    Coremail亮相世界互聯網大會“互聯網之光”博覽會

    11月19-22日,2024年世界互聯網大會烏鎮峰會盛大舉辦,期間,“互聯網之光”博覽會“網絡安全”新產品新技術發布活動在烏鎮互聯網國際會展中心紅亭發布區舉行,Coremail亮相發布現場,展示郵箱
    的頭像 發表于 11-27 15:57 ?494次閱讀
    Coremail亮相世界<b class='flag-5'>互聯網</b>大會“<b class='flag-5'>互聯網</b>之光”博覽會

    燒結銀在衛星互聯網中的四大應用

    無壓燒結銀作為一種先進的連接材料,近年來在衛星互聯網領域展現出了巨大的應用潛力。衛星互聯網作為新一代通信技術的重要組成部分,旨在通過衛星實現全球無縫覆蓋的高速互聯網接入。這一目標的實現離不開高性能、高可靠性的連接材料,而無壓燒結
    的頭像 發表于 11-17 15:39 ?548次閱讀

    成都匯陽投資關于衛星互聯網建設加速,天地一體化通信可期

    【“手機直連 ”打開衛星互聯網,星地網絡取得重要突破】 根據中國移動2024年2月發布的《面向天地一體的衛星互聯網創新應用場景白皮書》,未來衛星互聯網將圍繞著“ 1+N+X ”的理念逐步蓬勃發展:1
    的頭像 發表于 09-27 10:48 ?770次閱讀
    成都匯陽投資<b class='flag-5'>關于</b>衛星<b class='flag-5'>互聯網</b>建設加速,天地一體化通信可期

    5G RedCap工業互聯網平臺是什么

    5G RedCap工業互聯網平臺:賦能工業物聯網的新篇章 隨著5G技術的不斷演進和普及,工業互聯網作為新一代信息技術與制造業深度融合的產物,正迎來前所未有的發展機遇。其中,5G RedCap
    的頭像 發表于 08-30 13:55 ?815次閱讀

    工業互聯網遠程監控平臺是什么

    工業互聯網遠程監控平臺:賦能智能制造的利器 在當今快速發展的工業領域,工業互聯網遠程監控平臺正逐漸成為推動工業升級和數字化轉型的重要力量。工業互聯網平臺,也被稱為工業云平臺或工業物聯網
    的頭像 發表于 08-29 14:11 ?606次閱讀

    工業互聯網系統的組成

    工業互聯網系統通常由以下幾個關鍵組成部分構成: 設備和傳感器:這是工業互聯網的基礎,包括各種機械設備、生產工具、智能傳感器等。這些設備能夠實時收集關于自身狀態、運行參數或環境數據的信息。 連接技術
    的頭像 發表于 07-28 16:42 ?1563次閱讀

    ESP8266無法連接到互聯網是怎么回事?

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

    heap連上互聯網的時候,heap空間慢慢的就變小了,直到最后程序僵死在那,為什么?

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

    esp8266已連接到Wifi但無法連接到互聯網,為什么?

    首先,我想說對不起,如果我的帖子在錯誤的線程中。在那之后,我想問一個問題,我的 esp12E 已連接到 Wifi,但它無法連接到互聯網,即使 wifi 連接到互聯網和其他設備,它仍然完美地使用互聯網
    發表于 07-09 07:11

    工業互聯網平臺中什么是關鍵

    工業互聯網平臺是工業領域數字化轉型的重要支撐,其關鍵要素包括以下幾個方面: 網絡基礎設施 網絡基礎設施是工業互聯網平臺的基礎,包括有線網絡、無線網絡、物聯網等。工業互聯網平臺需要實現設
    的頭像 發表于 07-02 09:37 ?1187次閱讀
    主站蜘蛛池模板: 福利视频自拍偷拍 | 美女被免费视频网站九色 | 亚洲一级毛片中文字幕 | 大看蕉a在线观看 | 夜夜骑日日射 | 亚洲视频五区 | semimi亚洲综合在线观看 | 国产精品久久久久久久久久免费 | 最近2018中文字幕免费视频 | 一级毛片免费不卡在线视频 | 亚洲日本一区二区三区 | 男人的天堂在线精品视频 | 免费一级毛片女人图片 | 人人干人人艹 | 五月天婷婷视频在线观看 | 日本免费福利视频 | 黄网站免费大全 | 精品国产污网站在线观看15 | 天堂资源8中文最新版在线 天堂资源地址在线 | 色爱综合网 | 在线免费视频国产 | 图片区网友自拍另类图区 | 激情福利视频 | 亚洲电影天堂网 | 国产精欧美一区二区三区 | 天天做天天爱天天影视综合 | 亚洲一本高清 | 欧洲国产精品精华液 | 久草色在线 | 一个色在线视频 | 好吊日在线 | 新网球王子u17世界杯篇免费观看 | 日韩理论电影2021第1页 | 女人特黄大aaaaaa大片 | 99色在线播放 | 嗯好舒服好爽好快好大 | 久久精品国产精品亚洲红杏 | 天天干天天日天天射天天操毛片 | 天天综合网色 | 6080yy午夜不卡一二三区 | 天天撸视频|