<?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>Sat, 03 Oct 2026 10:17:18 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-102758</title>
      <link>https://db.gcve.eu/vuln/cve-2026-102758</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Eclipse Foundation NetX Duo&lt;/p&gt;
&lt;p&gt;The `_nx_secure_x509_asn1_tlv_block_parse()` function parses ASN.1 TLV (tag-length-value) blocks out of DER-encoded data. It is the primitive underneath all X.509 certificate parsing in NetX Secure, and therefore runs on certificates supplied by a remote peer during the TLS handshake.&lt;/p&gt;
&lt;p&gt;The function reads the one-byte ASN.1 tag from the caller&amp;#39;s buffer *before* checking that the buffer holds at least one byte. When a caller passes a remaining length of zero, the guard correctly returns `NX_SECURE_X509_ASN1_LENGTH_TOO_LONG`, but the read has already happened one byte past the end of the buffer.&lt;/p&gt;
&lt;p&gt;code:&lt;/p&gt;
&lt;p&gt;nx_secure/src/nx_secure_x509_asn1_tlv_block_parse.c&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;UINT _nx_secure_x509_asn1_tlv_block_parse(const UCHAR *buffer, ULONG *buffer_length, USHORT *tlv_type,&lt;/p&gt;
&lt;p&gt;USHORT *tlv_tag_class, ULONG *tlv_length,
                                          const UCHAR **tlv_data, ULONG *header_length)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;UINT   current_index;&lt;/p&gt;
&lt;p&gt;USHORT current_tag;&lt;/p&gt;
&lt;p&gt;ULONG  length;&lt;/p&gt;
&lt;p&gt;ULONG  length_bytes;&lt;/p&gt;
&lt;p&gt;current_index = 0;
    current_tag = buffer[current_index];      /* &amp;lt;-- read before the bounds check */
    if (*buffer_length &amp;lt; 1)
    {
        return(NX_SECURE_X509_ASN1_LENGTH_TOO_LONG);
    }&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;The remainder of the function is correctly ordered. The multi-byte length path is guarded by `length_bytes &amp;gt; 4 || length_bytes &amp;gt; *buffer_length` before its read loop, the decoded value is checked against `length &amp;gt; *buffer_length`, and the sec…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Eclipse Foundation NetX Duo&lt;/p&gt;
&lt;p&gt;The `_nx_secure_x509_asn1_tlv_block_parse()` function parses ASN.1 TLV (tag-length-value) blocks out of DER-encoded data. It is the primitive underneath all X.509 certificate parsing in NetX Secure, and therefore runs on certificates supplied by a remote peer during the TLS handshake.&lt;/p&gt;
&lt;p&gt;The function reads the one-byte ASN.1 tag from the caller&amp;#39;s buffer *before* checking that the buffer holds at least one byte. When a caller passes a remaining length of zero, the guard correctly returns `NX_SECURE_X509_ASN1_LENGTH_TOO_LONG`, but the read has already happened one byte past the end of the buffer.&lt;/p&gt;
&lt;p&gt;code:&lt;/p&gt;
&lt;p&gt;nx_secure/src/nx_secure_x509_asn1_tlv_block_parse.c&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;UINT _nx_secure_x509_asn1_tlv_block_parse(const UCHAR *buffer, ULONG *buffer_length, USHORT *tlv_type,&lt;/p&gt;
&lt;p&gt;USHORT *tlv_tag_class, ULONG *tlv_length,
                                          const UCHAR **tlv_data, ULONG *header_length)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;UINT   current_index;&lt;/p&gt;
&lt;p&gt;USHORT current_tag;&lt;/p&gt;
&lt;p&gt;ULONG  length;&lt;/p&gt;
&lt;p&gt;ULONG  length_bytes;&lt;/p&gt;
&lt;p&gt;current_index = 0;
    current_tag = buffer[current_index];      /* &amp;lt;-- read before the bounds check */
    if (*buffer_length &amp;lt; 1)
    {
        return(NX_SECURE_X509_ASN1_LENGTH_TOO_LONG);
    }&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;The remainder of the function is correctly ordered. The multi-byte length path is guarded by `length_bytes &amp;gt; 4 || length_bytes &amp;gt; *buffer_length` before its read loop, the decoded value is checked against `length &amp;gt; *buffer_length`, and the sec…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://db.gcve.eu/vuln/cve-2026-102758</guid>
    </item>
  </channel>
</rss>
