GNU libtasn1 中被发现一个潜在危险的漏洞。该库是无数应用用于处理安全通信和数字签名的基础软件组件。漏洞编号为 CVE-2025-13151,CVSS 评分为 7.5,属于栈缓冲区溢出,可能在安全敏感场景中导致内存破坏。
该库是密码学供应链中的关键组件,负责实现 ASN.1 数据结构的解析规则 —— 这正是 X.509 数字证书和 SSL/TLS 协议所使用的格式。
漏洞位于 decoding.c 文件中的 asn1_expand_octet_string 函数深处。根据漏洞说明,问题源于 “不安全的字符串拼接”,代码在构造局部栈缓冲区时没有进行适当的边界检查。
在一个典型的编程疏忽中,开发者使用了 “无界字符串操作函数(strcpy 和 strcat)” 来将两个名称与一个点分隔符拼接在一起。
“在最坏情况下,两个源字符串都可能达到其最大允许长度,” 报告解释说。“当它们与一个额外的分隔符(‘.’)和一个终止 null 字节拼接时,目标缓冲区的大小少了一个字节。”
这个看似微小的计算错误导致最终的 null 终止符 “溢出分配的栈缓冲区一字节”。
虽然一字节溢出听起来微不足道,但在密码学领域,精度至关重要。“历史上,一字节栈溢出曾导致微妙的内存破坏问题,并可能在签名验证或证书解析等加密操作中引发崩溃或其他意外行为。”
不过,也存在一些缓解因素。触发该漏洞需要攻击者向库提供 “畸形的 ASN.1 数据”,这实际上打破了 “数据已由主应用验证” 的假设。此外,现代防御机制如 “栈保护(stack canaries)” 和 _FORTIFY_SOURCE 可能会限制漏洞被成功利用的可能性。
该漏洞由微软研究院的 Benny Zelster 披露。GNU libtasn1 项目已收到修复不安全字符串处理的补丁。
开发者和集成商被敦促 “评估该补丁并采取适当的缓解措施,例如使用有界字符串操作”,以消除其安全应用中的这一隐藏风险。








发表评论
您还未登录,请先登录。
登录