亚洲精品无码乱码成人|最近中文字幕免费大全|日韩欧美卡一卡二卡新区|熟妇性饥渴一区二区三区|久久久久无码精品国产AV|欧美日韩国产va在线观看|久久精品一本到99热动态图|99国产精品欧美一区二区三区

    1. <track id="5d89u"><dl id="5d89u"><delect id="5d89u"></delect></dl></track>

      • <i id="5d89u"><ins id="5d89u"></ins></i>

        
        

        <source id="5d89u"></source>
        您現(xiàn)在的位置是: 熱點(diǎn) > > 正文

        環(huán)球熱頭條丨Qt弱加密漏洞分析

        時(shí)間:2023-06-17 09:16:58 來(lái)源:開(kāi)源網(wǎng)安 發(fā)布者:DN032

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

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


        (資料圖片)


        0x01 漏洞信息

        0x02 漏洞影響

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


        0x03 漏洞分析

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

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

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

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

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




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

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

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



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



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

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

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


        0x04 修復(fù)方法

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

        當(dāng)匹配Strict-Transport-Security字段的時(shí)候,使用大小寫(xiě)不敏感進(jìn)行匹配。引入全小寫(xiě)的測(cè)試用例進(jìn)行測(cè)試。


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

        標(biāo)簽:

        搶先讀

        相關(guān)文章

        熱文推薦

        精彩放送

        關(guān)于我們| 聯(lián)系我們| 投稿合作| 法律聲明| 廣告投放

        版權(quán)所有© 2011-2023  產(chǎn)業(yè)研究網(wǎng)  www.www-332159.com

        所載文章、數(shù)據(jù)僅供參考.本站不作任何非法律允許范圍內(nèi)服務(wù)!

        聯(lián)系我們:39 60 29 14 2 @qq.com

        皖I(lǐng)CP備2022009963號(hào)-13


        柯坪县| 阿巴嘎旗| 清苑县| 景谷| 花垣县| 田阳县| 金川县| 大邑县| 方山县| 上饶市| 东源县| 银川市| 龙南县| 淮南市| 巴里| 通江县| 乌审旗| 黑河市| 陆良县| 赫章县| 同仁县| 岫岩| 绵竹市| 庐江县| 银川市| 白城市| 德令哈市| 寿阳县| 石城县| 读书| 赣榆县| 柘城县| 靖西县| 宣恩县| 舞钢市| 中方县| 义乌市| 桐柏县| 镇赉县| 临安市| 石阡县|