# pyasn1 解码器拒绝服务漏洞
## 概述
pyasn1 是一个通用的 Python ASN.1 库。在版本 0.6.2 之前存在一个导致内存耗尽的拒绝服务漏洞,由包含过多连续字节的畸形 RELATIVE-OID 触发。
## 影响版本
0.6.2 之前的所有版本。
## 细节
攻击者可通过构造包含大量 continuation octets 的畸形 RELATIVE-OID 数据,导致 pyasn1 在解析时持续分配内存,最终引发内存耗尽。
## 影响
可能导致服务因内存耗尽而拒绝服务。
是否为 Web 类漏洞: 未知
判断理由:
| # | POC 描述 | 源链接 | 神龙链接 |
|---|
标题: Release Release 0.6.2 · pyasn1/pyasn1 · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
## 关键漏洞信息
- **CVE编号**: CVE-2026-23490
- **漏洞描述**: 固定了在OID/RELATIVE-OID解码器中的持续八位组限制问题。
- **影响版本**:
- 该问题在0.6.2版本中已修复,但未具体说明受影响的早期版本。
- **修复措施**:
- 已在0.6.2版本中修复该漏洞。
- **其他安全更新**:
- 增加了`SECURITY.md`安全策略文件。
标题: DoS vulnerability in decoder · Advisory · pyasn1/pyasn1 · GitHub -- 🔗来源链接
标签:x_refsource_CONFIRM
神龙速读:
### 关键信息
#### 漏洞概述
- **CVE ID**: CVE-2026-23490
- **CVSS v3 基本指标得分**: 7.5/10
- **严重性等级**: 高
#### 漏洞细节
- **受影响的版本**: 0.6.1
- **修复的版本**: 暂无
- **存在漏洞的库**: pyasn1
#### 漏洞描述
- **概要**: 在 pyasn1 v0.6.1 中发现了一个拒绝服务 (DoS) 问题,由于处理带有过多续字节的畸形的相对 OID,会导致内存耗尽。
- **详情**: 漏洞的核心是 pyasn1 的解码器中的一个整数问题,发生在 `reloid += ((subId << 7) + nextSubId,)` 行。
#### 影响
- **潜在风险**: 拒绝服务攻击可能导致资源过耗、系统挂起或停止服务。
- **受影响的系统**:
- LDAP 服务器
- TLS/SSL 端点
- OCSP 响应器
#### 建议
- 在解码器中添加允许字节数的限制。
#### 其他信息
- **报告员**: tsigouris07
- **弱项 ID**: CWE-400
#### 具体 PoC (概念验证) 提供
- 实现了构造和解码一段含有归一化的 X.509 证书恶意字符串的测试代码。
#### 示例输出 (内存耗尽)
```
[-] MemoryError: Out of memory!
```
标题: Merge commit from fork · pyasn1/pyasn1@3908f14 · GitHub -- 🔗来源链接
标签:x_refsource_MISC
神龙速读:
以下是这个网页截图中关于漏洞的关键信息的简洁 Markdown 返回:
- **commit ID**: 3908f14
- **commit message**: 添加了每个 OID 弧每 20 个持续八位字节的限制,以防止由于过多的持续字节输入而导致的潜在内存耗尽。
- **主要更改**:
- 在 pyasn1/codec/ber/decoder.py 文件中添加了对每个 OID 弧允许的最大持续八位字节的限制(现在是 20 个)。
- 在同样的文件中,在计算н继八位字节数量超过 20 时抛出了一个错误。
- 在 tests/codec/ber/test_decoder.py 文件中添加了多个测试用例,以确保仅当 OID 弧的持续八位字节数未超过 20 时才能正确解析。
- 这些测试用例包括对单个弧和多个弧的超限和在限情况的验证。
这些更改主要是为了防止由于过多的 OID 弧持续字节而导致内存耗尽的可能攻击。
暂无评论