<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-02T08:31:14.828112+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2026-33936</id>
    <title>CVE-2026-33936 — python-ecdsa: Denial of Service via improper DER length validation in crafted private keys</title>
    <updated>2026-10-02T08:31:14.834534+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> tlsfuzzer python-ecdsa</p>
<p>The `ecdsa` PyPI package is a pure Python implementation of ECC (Elliptic Curve Cryptography) with support for ECDSA (Elliptic Curve Digital Signature Algorithm), EdDSA (Edwards-curve Digital Signature Algorithm) and ECDH (Elliptic Curve Diffie-Hellman). Prior to version 0.19.2, an issue in the low-level DER parsing functions can cause unexpected exceptions to be raised from the public API functions. `ecdsa.der.remove_octet_string()` accepts truncated DER where the encoded length exceeds the available buffer. For example, an OCTET STRING that declares a length of 4096 bytes but provides only 3 bytes is parsed successfully instead of being rejected. Because of that, a crafted DER input can cause `SigningKey.from_der()` to raise an internal exception (`IndexError: index out of bounds on dimension 1`) rather than cleanly rejecting malformed DER (e.g., raising `UnexpectedDER` or `ValueError`). Applications that parse untrusted DER private keys may crash if they do not handle unexpected exceptions, resulting in a denial of service. Version 0.19.2 patches the issue.</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2026-33936"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-9f5j-8jwj-x28g</id>
    <title>GHSA-9f5j-8jwj-x28g — python-ecdsa: Denial of Service via improper DER length validation in crafted private keys</title>
    <updated>2026-10-02T08:31:14.834668+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: ecdsa</p>
<p>## Summary</p>
<p>An issue in the low-level DER parsing functions can cause unexpected exceptions to be raised from the public API functions.</p>
<p>1. `ecdsa.der.remove_octet_string()` accepts truncated DER where the encoded length exceeds the available buffer. For example, an OCTET STRING that declares a length of 4096 bytes but provides only 3 bytes is parsed successfully instead of being rejected.</p>
<p>2. Because of that, a crafted DER input can cause `SigningKey.from_der()` to raise an internal exception (`IndexError: index out of bounds on dimension 1`) rather than cleanly rejecting malformed DER (e.g., raising `UnexpectedDER` or `ValueError`). Applications that parse untrusted DER private keys may crash if they do not handle unexpected exceptions, resulting in a denial of service.</p>
<p>## Impact</p>
<p>Potential denial-of-service when parsing untrusted DER private keys due to unexpected internal exceptions, and malformed DER acceptance due to missing bounds checks in DER helper functions.</p>
<p>## Reproduction</p>
<p>Attach and run the following PoCs:</p>
<p>###  poc_truncated_der_octet.py</p>
<p>```python
from ecdsa.der import remove_octet_string, UnexpectedDER</p>
<p># OCTET STRING (0x04)
# Declared length: 0x82 0x10 0x00  -&gt; 4096 bytes
# Actual body: only 3 bytes -&gt; truncated DER
bad = b"\x04\x82\x10\x00" + b"ABC"</p>
<p>try:
    body, rest = remove_octet_string(bad)
    print("[BUG] remove_octet_string accepted truncated DER.")
    print("Declared length=4096, actual body_len=", len(body), "rest_len=", len(rest))
    print(…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-9f5j-8jwj-x28g"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/pysec-2026-2467</id>
    <title>PYSEC-2026-2467 — python-ecdsa: Denial of Service via improper DER length validation in crafted private keys</title>
    <updated>2026-10-02T08:31:14.834778+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: ecdsa</p>
<p>## Summary</p>
<p>An issue in the low-level DER parsing functions can cause unexpected exceptions to be raised from the public API functions.</p>
<p>1. `ecdsa.der.remove_octet_string()` accepts truncated DER where the encoded length exceeds the available buffer. For example, an OCTET STRING that declares a length of 4096 bytes but provides only 3 bytes is parsed successfully instead of being rejected.</p>
<p>2. Because of that, a crafted DER input can cause `SigningKey.from_der()` to raise an internal exception (`IndexError: index out of bounds on dimension 1`) rather than cleanly rejecting malformed DER (e.g., raising `UnexpectedDER` or `ValueError`). Applications that parse untrusted DER private keys may crash if they do not handle unexpected exceptions, resulting in a denial of service.</p>
<p>## Impact</p>
<p>Potential denial-of-service when parsing untrusted DER private keys due to unexpected internal exceptions, and malformed DER acceptance due to missing bounds checks in DER helper functions.</p>
<p>## Reproduction</p>
<p>Attach and run the following PoCs:</p>
<p>###  poc_truncated_der_octet.py</p>
<p>```python
from ecdsa.der import remove_octet_string, UnexpectedDER</p>
<p># OCTET STRING (0x04)
# Declared length: 0x82 0x10 0x00  -&gt; 4096 bytes
# Actual body: only 3 bytes -&gt; truncated DER
bad = b"\x04\x82\x10\x00" + b"ABC"</p>
<p>try:
    body, rest = remove_octet_string(bad)
    print("[BUG] remove_octet_string accepted truncated DER.")
    print("Declared length=4096, actual body_len=", len(body), "rest_len=", len(rest))
    print(…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/pysec-2026-2467"/>
  </entry>
</feed>
