<?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://vulnerability.circl.lu</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>Mon, 28 Sep 2026 23:41:13 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-43233 — netfilter: nf_conntrack_h323: fix OOB read in decode_choice()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-43233</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;netfilter: nf_conntrack_h323: fix OOB read in decode_choice()&lt;/p&gt;
&lt;p&gt;In decode_choice(), the boundary check before get_len() uses the
variable `len`, which is still 0 from its initialization at the top of
the function:&lt;/p&gt;
&lt;p&gt;unsigned int type, ext, len = 0;
    ...
    if (ext || (son-&amp;gt;attr &amp;amp; OPEN)) {
        BYTE_ALIGN(bs);
        if (nf_h323_error_boundary(bs, len, 0))  /* len is 0 here */
            return H323_ERROR_BOUND;
        len = get_len(bs);                        /* OOB read */&lt;/p&gt;
&lt;p&gt;When the bitstream is exactly consumed (bs-&amp;gt;cur == bs-&amp;gt;end), the check
nf_h323_error_boundary(bs, 0, 0) evaluates to (bs-&amp;gt;cur + 0 &amp;gt; bs-&amp;gt;end),
which is false.  The subsequent get_len() call then dereferences
*bs-&amp;gt;cur++, reading 1 byte past the end of the buffer.  If that byte
has bit 7 set, get_len() reads a second byte as well.&lt;/p&gt;
&lt;p&gt;This can be triggered remotely by sending a crafted Q.931 SETUP message
with a User-User Information Element containing exactly 2 bytes of
PER-encoded data ({0x08, 0x00}) to port 1720 through a firewall with
the nf_conntrack_h323 helper active.  The decoder fully consumes the
PER buffer before reaching this code path, resulting in a 1-2 byte
heap-buffer-overflow read confirmed by AddressSanitizer.&lt;/p&gt;
&lt;p&gt;Fix this by checking for 2 bytes (the maximum that get_len() may read)
instead of the uninitialized `len`.  This matches the pattern used at
every other get_len() call site in the same file, where the call…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;netfilter: nf_conntrack_h323: fix OOB read in decode_choice()&lt;/p&gt;
&lt;p&gt;In decode_choice(), the boundary check before get_len() uses the
variable `len`, which is still 0 from its initialization at the top of
the function:&lt;/p&gt;
&lt;p&gt;unsigned int type, ext, len = 0;
    ...
    if (ext || (son-&amp;gt;attr &amp;amp; OPEN)) {
        BYTE_ALIGN(bs);
        if (nf_h323_error_boundary(bs, len, 0))  /* len is 0 here */
            return H323_ERROR_BOUND;
        len = get_len(bs);                        /* OOB read */&lt;/p&gt;
&lt;p&gt;When the bitstream is exactly consumed (bs-&amp;gt;cur == bs-&amp;gt;end), the check
nf_h323_error_boundary(bs, 0, 0) evaluates to (bs-&amp;gt;cur + 0 &amp;gt; bs-&amp;gt;end),
which is false.  The subsequent get_len() call then dereferences
*bs-&amp;gt;cur++, reading 1 byte past the end of the buffer.  If that byte
has bit 7 set, get_len() reads a second byte as well.&lt;/p&gt;
&lt;p&gt;This can be triggered remotely by sending a crafted Q.931 SETUP message
with a User-User Information Element containing exactly 2 bytes of
PER-encoded data ({0x08, 0x00}) to port 1720 through a firewall with
the nf_conntrack_h323 helper active.  The decoder fully consumes the
PER buffer before reaching this code path, resulting in a 1-2 byte
heap-buffer-overflow read confirmed by AddressSanitizer.&lt;/p&gt;
&lt;p&gt;Fix this by checking for 2 bytes (the maximum that get_len() may read)
instead of the uninitialized `len`.  This matches the pattern used at
every other get_len() call site in the same file, where the call…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-43233</guid>
    </item>
  </channel>
</rss>
