最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Qt弱加密漏洞分析

2023-06-16 18:00 作者:洞源實(shí)驗(yàn)室  | 我要投稿


0x00 漏洞背景

Qt是一個跨平臺的C++應(yīng)用程序開發(fā)框架,用于創(chuàng)建圖形用戶界面(GUI)應(yīng)用程序、命令行工具、嵌入式系統(tǒng)和網(wǎng)絡(luò)應(yīng)用等各種類型的應(yīng)用。

Qt框架包含的Qt Network(網(wǎng)絡(luò)模塊),提供了QNetworkAccessManager 類,該類允許應(yīng)用程序發(fā)送網(wǎng)絡(luò)請求和接收回復(fù)。其在處理響應(yīng)時,會根據(jù)服務(wù)器發(fā)送的“Strict-Transport-Security”的響應(yīng)頭來更新HSTS策略。


0x01 漏洞信息

5.09

Qt開發(fā)人員M?rten Nordheim提交漏洞修復(fù)的源碼合并。

5.10

Qt漏洞修復(fù)相關(guān)的代碼合并通過。

5.28

該漏洞被CVE收錄,其編號為CVE-2023-32762。


0x02 漏洞影響

該漏洞存在Qt 5.15.14版本之前;6.2.9之前的6.X版本以及6.5.1之前的6.3.X-6.5.X版本。成因是Qt錯誤的解析了HSTS header,當(dāng)大小寫不匹配的時候,即使服務(wù)器明確禁止,客戶端也會使用未加密的連接。


0x03 漏洞分析

首先需要介紹HSTS(HTTP Strict Transport Security),這是一種WEB安全策略。用來防止中間人和SSL/TLS剝離攻擊。HSTS通過強(qiáng)制客戶端(如Web瀏覽器)始終使用HTTPS來保護(hù)通信,即使用戶手動輸入的是HTTP網(wǎng)址。它通過在服務(wù)器的響應(yīng)頭中添加"Strict-Transport-Security"字段來實(shí)現(xiàn)。一旦瀏覽器收到帶有HSTS頭的響應(yīng),它將記住該網(wǎng)站必須通過HTTPS進(jìn)行訪問,并在未來的請求中自動將所有HTTP請求重定向到HTTPS。這樣可以防止攻擊者利用惡意重定向?qū)⒂脩魧?dǎo)向不安全的HTTP連接。

隨后進(jìn)行漏洞分析與驗(yàn)證,筆者選擇的是Qt6.2.4版本。

用來進(jìn)行HSTS測試的網(wǎng)址為hsts.badssl.com。

下述代碼為使用QNetworkAccessManager對象發(fā)起HTTPS請求,該網(wǎng)站以HTTPS請求的時候會返回Strict-Transport-Security響應(yīng)頭。Qt會隱式的調(diào)用QHstsHeaderParser類解析HSTS header隨后更新QHstsCache中的策略。

manager.strictTransportSecurityHosts函數(shù)能獲取當(dāng)前的HSTS策略。當(dāng)執(zhí)行到QObject::connect內(nèi)時,可發(fā)現(xiàn)temp中添加了一項(xiàng)策略。




隨后我們使用的http://hsts.badssl.com/會自動換成https://hsts.badssl.com/。由于本身QNetworkAccessManager發(fā)送多個網(wǎng)絡(luò)請求的異步性,這里我們使用如下代碼手動添加策略:

// 添加HSTS策略
?QListhstsPolicies;
?QHstsPolicy policy;
?policy.setHost("hsts.badssl.com");
?policy.setIncludesSubDomains(true);
?QDateTime expiry = QDateTime::currentDateTime().addYears(1); // 設(shè)置過期時間為1年后
?policy.setExpiry(expiry);
?hstsPolicies.append(policy);
?manager.addStrictTransportSecurityHosts(hstsPolicies);

之后發(fā)送HTTP請求:



此時的響應(yīng)頭是HTTPS請求的響應(yīng)頭。



后續(xù)客戶端對該域名服務(wù)器的任何HTTP請求都將被隱式的轉(zhuǎn)換成HTTPS請求。

但是當(dāng)服務(wù)器返回的響應(yīng)頭的HSTS頭部是Strict-Transport-security,此時Security的S變成了s。這時客戶端便不會引入新的策略,從而導(dǎo)致了繼續(xù)使用明文協(xié)議HTTP。

Qt是一個開源的軟件,可以去定位相關(guān)的代碼,筆者在netword/access/qhsts.cpp中發(fā)現(xiàn)了產(chǎn)生漏洞的代碼。代碼使用了==將響應(yīng)頭字段與Strict-Transport-security進(jìn)行了比較,導(dǎo)致了大小寫不匹配時,HSTS策略引入失敗。


0x04 修復(fù)方法

Qt開發(fā)者對源碼的修復(fù)如下:

  • 當(dāng)匹配Strict-Transport-Security字段的時候,使用大小寫不敏感進(jìn)行匹配。

  • 引入全小寫的測試用例進(jìn)行測試。


用戶可以通過使用新版本的Qt預(yù)編譯庫進(jìn)行漏洞修復(fù)。


洞源實(shí)驗(yàn)室

安全工程師:hu1y40

2023 年 6 月 16 日

?

Qt弱加密漏洞分析的評論 (共 條)

分享到微博請遵守國家法律
唐海县| 垣曲县| 海阳市| 镇巴县| 兰考县| 庆城县| 大洼县| 教育| 遵义县| 镇远县| 和平县| 甘德县| 扎鲁特旗| 金秀| 车致| 盐边县| 洛阳市| 龙陵县| 涪陵区| 济南市| 柘城县| 武汉市| 新野县| 南昌市| 洞头县| 响水县| 瓦房店市| 荣昌县| 黎城县| 平远县| 宁都县| 建湖县| 巴彦淖尔市| 巴东县| 永嘉县| 龙泉市| 凉山| 巴楚县| 柘城县| 明溪县| 清水河县|