Qt弱加密漏洞分析

这篇具有很好参考价值的文章主要介绍了Qt弱加密漏洞分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0x00 漏洞背景

Qt是一个跨平台的C++应用程序开发框架,用于创建图形用户界面(GUI)应用程序、命令行工具、嵌入式系统和网络应用等各种类型的应用。

Qt框架包含的Qt Network(网络模块),提供了QNetworkAccessManager 类,该类允许应用程序发送网络请求和接收回复。其在处理响应时,会根据服务器发送的“Strict-Transport-Security”的响应头来更新HSTS策略。

0x01 漏洞信息

5.09 Qt开发人员Mårten Nordheim提交漏洞修复的源码合并。

5.10 Qt漏洞修复相关的代码合并通过。

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,当大小写不匹配的时候,即使服务器明确禁止,客户端也会使用未加密的连接。

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中的策略。

Qt弱加密漏洞分析

manager.strictTransportSecurityHosts函数能获取当前的HSTS策略。当执行到QObject::connect内时,可发现temp中添加了一项策略。

Qt弱加密漏洞分析

随后我们使用的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请求:

Qt弱加密漏洞分析

此时的响应头是HTTPS请求的响应头。

Qt弱加密漏洞分析

后续客户端对该域名服务器的任何HTTP请求都将被隐式的转换成HTTPS请求。

但是当服务器返回的响应头的HSTS头部是Strict-Transport-security,此时Security的S变成了s。这时客户端便不会引入新的策略,从而导致了继续使用明文协议HTTP。

Qt是一个开源的软件,可以去定位相关的代码,笔者在netword/access/qhsts.cpp中发现了产生漏洞的代码。代码使用了==将响应头字段与Strict-Transport-security进行了比较,导致了大小写不匹配时,HSTS策略引入失败。

Qt弱加密漏洞分析

0x04 修复方法

Qt开发者对源码的修复如下:

  • 当匹配Strict-Transport-Security字段的时候,使用大小写不敏感进行匹配。

  • 引入全小写的测试用例进行测试。

Qt弱加密漏洞分析

用户可以通过使用新版本的Qt预编译库进行漏洞修复。文章来源地址https://www.toymoban.com/news/detail-491952.html

到了这里,关于Qt弱加密漏洞分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Solidity 合约漏洞,价值 38BNB 漏洞分析

    https://twitter.com/NumenAlert/status/1626447469361102850 https://twitter.com/bbbb/status/1626392605264351235 攻击交易: https://bscscan.com/tx/0x146586f05a4513136deab3557ad15df8f77ffbcdbd0dd0724bc66dbeab98a962 攻击账号:0x187473cf30e2186f8fb0feda1fd21bad9aa177ca 攻击合约:0xd1b5473ffbadd80ff274f672b295ba8811b32538 被攻击合约:Starlink 0

    2024年02月04日
    浏览(42)
  • BeesCMS系统漏洞分析

    墨者学院 漏洞复现 进入首页,看到没什么问题,用kail字典birb扫下路径(发现管理页面) 看到输入框,尝试sql注入,发现有注入漏洞 既然存在报错信息,我们就尝试报错注入,经过尝试and也被过滤了,and用an and d代替,union用un union ion代替,select用selselectect代替: 爆出数据

    2024年02月15日
    浏览(47)
  • 漏洞分析和利用

    1 安全漏洞生命周期 在渗透测试流程中,核心内容是找出目标系统中存在的安全漏洞,并实施渗透攻击,从而进入到目标系统中。而这一过程最主要的底层基础是目标系统中存在的安全漏洞(Vulnerability)。安全漏洞指信息系统中存在的缺陷或不适当的配置,它们可使攻击者在未

    2024年02月09日
    浏览(38)
  • 逻辑漏洞挖掘之XSS漏洞原理分析及实战演练

    2月份的1.2亿条用户地址信息泄露再次给各大公司敲响了警钟,数据安全的重要性愈加凸显,这也更加坚定了我们推行安全测试常态化的决心。随着测试组安全测试常态化的推进,有更多的同事对逻辑漏洞产生了兴趣,本系列文章旨在揭秘逻辑漏洞的范围、原理及预防措施,逐

    2024年02月08日
    浏览(39)
  • 逻辑漏洞挖掘之CSRF漏洞原理分析及实战演练

    2月份的1.2亿条用户地址信息泄露再次给各大公司敲响了警钟,数据安全的重要性愈加凸显,这也更加坚定了我们推行安全测试常态化的决心。随着测试组安全测试常态化的推进,有更多的同事对逻辑漏洞产生了兴趣,本系列文章旨在揭秘逻辑漏洞的范围、原理及预防措施,逐

    2024年02月07日
    浏览(36)
  • 智能合约 -- 常规漏洞分析 + 实例

    漏洞分析 攻击者利用合约漏洞,通过 fallback()或者receive() 函数进行 函数递归 进行持续取钱。 刚才试了一下可以递归10次,貌似就结束了(version: 0.8.20)。 直接看代码: 银行合约:有存钱、取钱、查看账户余额等函数。 攻击合约: 攻击、以及合约接受以太币就触发的receive()函数

    2024年02月13日
    浏览(44)
  • dvwa命令执行漏洞分析

    high难度的源码: $target = trim($_REQUEST[ ‘ip’ ]);是一个接收id值的变量 array_keys()函数功能是返回包含原数组中所有键名的一个新数组。 str_replace() 函数如下,把字符串 “Hello world!” 中的字符 “world” 替换为 “Shanghai”: shell_exec()函数是执行Linux命令函数,可以获取全部数

    2024年02月07日
    浏览(45)
  • Joomla未授权漏洞分析

    漏洞环境前置 Joomla版本 4.0.0 = Joomla = 4.2.7 漏洞复现 Poc: 漏洞分析: 该漏洞产生的主要原因是在路由匹配的过程中,产生了变量覆盖,导致可以绕过权限认证,首先从官方的修复方式入手: 根据官网的修复方式可知,通过array_key_exists函数,对数组$query进行判断,如果存在“

    2024年02月15日
    浏览(113)
  • 技术分享|ueditor漏洞利用&源码分析超详细分析

    UEditor是一款基于web技术的所见即所得富文本编辑器,广泛应用于各种web应用中。但是,近年来,由于其漏洞导致的安全问题也受到了广泛关注。本文将详细介绍ueditor的漏洞利用及其C#版本的源码解析。 ueditor的漏洞主要存在于其上传功能中,攻击者可以利用上传漏洞将恶意脚

    2024年02月09日
    浏览(49)
  • 漏洞深度分析|CVE-2022-1471 SnakeYaml 命令执行漏洞

    YAML是一种数据序列化格式,设计用于人类的可读性和与脚本语言的交互。 SnakeYaml是一个完整的YAML1.1规范Processor,支持UTF-8/UTF-16,支持Java对象的序列化/反序列化,支持所有YAML定义的类型。 https://github.com/snakeyaml/snakeyaml SnakeYaml通常使用方法如下: new Yaml(new Constructor(TestDataC

    2023年04月27日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包