CVE-2026-33936python-ecdsa是一个纯Python实现的椭圆曲线密码学库。在0.19.2版本之前,其底层DER解析函数存在缺陷。当处理特制的DER输入时,库会接受长度声明大于实际缓冲区大小的截断数据。这会导致`SigningKey.from_der()`抛出内部的`IndexError`异常,而非预期的`UnexpectedDER`。如果应用程序解析不受信任的DER私钥且未妥善处理异常,可能会导致服务崩溃,从而引发拒绝服务攻击。
该漏洞源于python-ecdsa库在处理DER(Distinguished Encoding Rules)编码时的逻辑缺陷。具体来说,`ecdsa.der.remove_octet_string()`函数在解析OCTET STRING类型数据时,未严格验证编码长度字段与实际可用缓冲区大小的一致性。攻击者可以构造一个恶意的DER格式私钥,其中包含一个OCTET STRING,其声明的长度(例如4096字节)远大于实际提供的数据长度(例如3字节)。当应用程序调用`SigningKey.from_der()`解析此恶意数据时,底层解析逻辑会尝试读取超出缓冲区边界的数据,从而触发Python内部的`IndexError`异常。由于该异常属于内部错误,并非DER解析模块预期的受控异常,上层应用若仅针对特定异常进行处理,将无法捕获此错误,导致程序意外终止。