<ruby id="cibvo"></ruby>
<ruby id="cibvo"></ruby>
<strong id="cibvo"></strong>

      <ruby id="cibvo"><table id="cibvo"></table></ruby>

    1. <strong id="cibvo"></strong>
    2. <strong id="cibvo"></strong>

      每日看點!Qt弱加密漏洞分析

      來源:開源網安時間:2023-06-17 04:46:55

      Qt是一個跨平臺的C++應用程序開發框架,用于創建圖形用戶界面(GUI)應用程序、命令行工具、嵌入式系統和網絡應用等各種類型的應用。


      (相關資料圖)

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


      0x01 漏洞信息

      0x02 漏洞影響

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


      0x03 漏洞分析

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

      隨后進行漏洞分析與驗證,筆者選擇的是Qt6.2.4版本。

      用來進行HSTS測試的網址為hsts.badssl.com。

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

      manager.strictTransportSecurityHosts函數能獲取當前的HSTS策略。當執行到QObject::connect內時,可發現temp中添加了一項策略。




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

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

      之后發送HTTP請求:



      此時的響應頭是HTTPS請求的響應頭。



      后續客戶端對該域名服務器的任何HTTP請求都將被隱式的轉換成HTTPS請求。

      但是當服務器返回的響應頭的HSTS頭部是Strict-Transport-security,此時Security的S變成了s。這時客戶端便不會引入新的策略,從而導致了繼續使用明文協議HTTP。

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


      0x04 修復方法

      Qt開發者對源碼的修復如下:

      當匹配Strict-Transport-Security字段的時候,使用大小寫不敏感進行匹配。引入全小寫的測試用例進行測試。


      用戶可以通過使用新版本的Qt預編譯庫進行漏洞修復。

      標簽:

      責任編輯:FD31
      上一篇:廈門建發收購紅星美凱龍股份獲股東批準
      下一篇:最后一頁

      熱點圖集

      最近更新

      信用中國

      • 信用信息
      • 行政許可和行政處罰
      • 網站文章

      91在线无码精品秘 入口九_性色aV一区二区三区咪爱_亚洲mv国产mv在线mv综合_五月丁香色综合久久4438
      <ruby id="cibvo"></ruby>
      <ruby id="cibvo"></ruby>
      <strong id="cibvo"></strong>

          <ruby id="cibvo"><table id="cibvo"></table></ruby>

        1. <strong id="cibvo"></strong>
        2. <strong id="cibvo"></strong>