hu1y40's blog

hu1y40'blog
天堂的穹空遍布地狱之火的颜色,但也是天堂。
  1. 首页
  2. 漏洞分析
  3. 二进制
  4. 正文

CVE-2023-32784 KeePass主密码泄露漏洞分析

2023年10月7日 1285点热度 0人点赞 0条评论

0x00 漏洞背景

KeePass是一款开源密码管理软件。它旨在帮助用户存储和管理他们的密码和敏感信息,以便安全地访问各种在线服务和应用程序。

KeePass提供一个安全的数据库,其中可以存储用户名、密码、网站链接、附加说明和其他自定义字段。这些信息被加密保护,并需要一个主密码或密钥文件才能解锁和访问。

0x01 漏洞信息

2023年5月1日,安全研究人员vdohney在sourceforge的KeePass讨论模块向开发者说明了该漏洞。

2023年5月2日,vdohney在github上公开了此漏洞的POC。

2023年5月7日,其开发者Dominik Reichl提供了修复该漏洞的版本,并承诺在下一次更新中解决该问题。

2023年5月15日,该漏洞被CVE收录,其编号为CVE-2023-32784。

0x02 漏洞影响

该漏洞存在于2.54之前的KeePass2.x版本中。成因是由于KeePass文本框内容输入时,会在其进程内存中创建托管字符串,如果将其内存进行转储,则会导致主密码泄露问题。

0x03 漏洞分析

笔者选择KeePass2.53.1版本进行漏洞分析与验证。

首先输入了14个字符的主密码。

fig:

产生漏洞的代码在KeePass/UI/SecureTextBoxEx.cs文件中。首先在输入过程中,.NET CLR执行代码的时候,会产生托管字符串,输入的字符会以明文存储在内存中,而该字符之前输入的字符会是以chPasswordChar用来占位。

fig:

根据PasswordCharEx的定义,64位机器的占位符为\xCF\x25

fig:

在输入密码后,对进程进行内存转储。笔者使用Windows任务管理器创建了该进程的转储文件。

随后使用二进制编辑器打开DMP文件。根据已知的信息搜索占位符\xCF\x25。如下图所示发现首先出现的是一个占位符,随后是明文字符E。

fig:

继续搜索,发现此时出现了两个占位符,随后是明文字符S

fig:

按照上述搜索方法慢慢搜索,发现占位符从1个递增到了13个,每一串占位符后都有一个明文,如下图是13个占位符,最后的明文是G。

fig:

使用自动化分析工具发现其占位符+明文的二进制数据得出的结果为{UNKNOWN}EST<{_, B}><{B, Y}>Y_INSBUG。其给出了4种可能的结果,而EST_BY_INSBUG这个结果是笔者所输入的14位密码中的后13个字符。

fig:

综上所述,可以得出,在设置主密码的文本框输入一串密码,除密码第一位无法从内存中获取,其余的每一位字符在内存中均以占位符+明文字符的托管字符串形式存储。如果输入123,内存中能获取的托管字符串具体形式如下:

  1. \xCF\x25\x32
  2. \xCF\x25\xCF\x25\x33

在Mono(可以让.NET应用程序运行Linux、macOS下)平台下,KeePass2.x也可以运行,并且同样存在该问题,所以根源问题可能与.NET CLR相关。

0x04 修复方法

KeePass开发者对源码的修复方案如下:

  1. 在 Windows 上运行时,KeePass 现在调用 Windows API 函数来直接获取/设置文本框的文本,以避免创建托管字符串。对于大多数长度,“●...●?”的托管字符串不再出现在进程内存中,但对于一些长度,仍然有一个托管字符串。(可能是WindowsAPI函数也会创建一个缓冲区)
  2. KeePass 现在在进程内存中创建一些虚拟片段(包含随机字符的随机片段,其长度约为当前密码的长度)。有了这个,确定正确的托管字符串应该会更加困难。

用户可通过https ://keepass.info/filepool/KeePass_230507.zip下载未签名的修复版本进行修复。或是等待下载开发者更新的5.24稳定版本。

标签: 漏洞
最后更新:2023年10月7日

hu1y40

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • 0x00 漏洞背景
  • 0x01 漏洞信息
  • 0x02 漏洞影响
  • 0x03 漏洞分析
  • 0x04 修复方法

分类目录

  • 0day安全
  • Bypass
  • C++Prime
  • CTF
  • DoS
  • DoS
  • FUZZ
  • iot
  • JSONP
  • MISC
  • MISC
  • PHP伪协议
  • Python
  • REVERSE
  • sqli-labs
  • SQL注入
  • Trick
  • UAF
  • WEB
  • WEB
  • XXE
  • 书籍阅读
  • 二进制
  • 代码阅读
  • 信息搜集
  • 信息泄露
  • 加密与解密
  • 双重释放漏洞
  • 反序列化
  • 命令执行
  • 命令执行
  • 堆溢出
  • 密码学
  • 弱加密
  • 提权漏洞
  • 整数溢出
  • 文件上传
  • 未分类
  • 栈溢出
  • 格式化字符串漏洞
  • 模型
  • 汇编语言
  • 渗透测试
  • 漏洞分析
  • 漏洞利用
  • 漏洞战争
  • 漏洞挖掘
  • 病毒分析
  • 越界读取
  • 路径遍历
  • 逻辑漏洞
  • 配置不当
  • 钓鱼
  • 靶场
最新 热点 随机
最新 热点 随机
加密算法 2023年度总结 RTSPServer StackOverflow Vulnerability FUZZ 总览篇 MP4Box 无限循环漏洞 CVE-2023-40477 Winrar RCE漏洞分析
bugku 多种方法解决 Cobalt Strike 初探 CVE-2011-0027 IE MDAC整数溢出漏洞 DIR503A 命令执行1 bugku ez_fibon CVE-2023-34312 QQ&TIM提权漏洞分析

COPYRIGHT © 2023 hu1y40's blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鄂ICP备2021009673号-1