<?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>Thu, 01 Oct 2026 21:12:16 +0000</lastBuildDate>
    <item>
      <title>fkie_cve-2026-102720</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-102720</link>
      <description>&lt;p&gt;A DHCP server, or anyone on the LAN who answers a DISCOVER first, can make the client read about a&lt;/p&gt;
&lt;p&gt;kilobyte past the end of the received message.&lt;/p&gt;
&lt;p&gt;The option walk keeps a pointer and an offset in step, and the only bound check uses the offset:&lt;/p&gt;
&lt;p&gt;```c&lt;/p&gt;
&lt;p&gt;/* addons/dhcp/nxd_dhcp_client.c:7538, 7572 */&lt;/p&gt;
&lt;p&gt;while (i &amp;lt; length - 1)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;...
    size = *(++data);      /* data moves 1: type -&amp;gt; length byte */
    data += size + 1;      /* data moves size + 1 more          */
    i += size + 1;         /* i moves only size + 1             */&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;A TLV option occupies size + 2 bytes. `data` is advanced by size + 2 in total, `i` by size + 1, so&lt;/p&gt;
&lt;p&gt;the offset falls one byte behind the real read position for every option the walk skips. After&lt;/p&gt;
&lt;p&gt;enough skipped options the check `i &amp;lt; length - 1` still holds while `data` is already past the end&lt;/p&gt;
&lt;p&gt;of the message, and the subsequent read of the type and length bytes comes from whatever follows.&lt;/p&gt;
&lt;p&gt;A single OFFER carrying a long run of skippable options is enough:&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;ERROR: AddressSanitizer: heap-buffer-overflow&lt;/p&gt;
&lt;p&gt;READ of size 1 at 0x61b000000794 thread T5&lt;/p&gt;
&lt;p&gt;#0 _nx_dhcp_search_buffer     addons/dhcp/nxd_dhcp_client.c:7541
    #1 _nx_dhcp_get_option_value  addons/dhcp/nxd_dhcp_client.c:7082&lt;/p&gt;
&lt;p&gt;0x61b000000794 is located 164 bytes to the right of 1648-byte region&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;A well formed OFFER through the same path is handled normally, the client records the offer and&lt;/p&gt;
&lt;p&gt;moves to REQUESTING, so the difference is the…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;A DHCP server, or anyone on the LAN who answers a DISCOVER first, can make the client read about a&lt;/p&gt;
&lt;p&gt;kilobyte past the end of the received message.&lt;/p&gt;
&lt;p&gt;The option walk keeps a pointer and an offset in step, and the only bound check uses the offset:&lt;/p&gt;
&lt;p&gt;```c&lt;/p&gt;
&lt;p&gt;/* addons/dhcp/nxd_dhcp_client.c:7538, 7572 */&lt;/p&gt;
&lt;p&gt;while (i &amp;lt; length - 1)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;...
    size = *(++data);      /* data moves 1: type -&amp;gt; length byte */
    data += size + 1;      /* data moves size + 1 more          */
    i += size + 1;         /* i moves only size + 1             */&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;A TLV option occupies size + 2 bytes. `data` is advanced by size + 2 in total, `i` by size + 1, so&lt;/p&gt;
&lt;p&gt;the offset falls one byte behind the real read position for every option the walk skips. After&lt;/p&gt;
&lt;p&gt;enough skipped options the check `i &amp;lt; length - 1` still holds while `data` is already past the end&lt;/p&gt;
&lt;p&gt;of the message, and the subsequent read of the type and length bytes comes from whatever follows.&lt;/p&gt;
&lt;p&gt;A single OFFER carrying a long run of skippable options is enough:&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;ERROR: AddressSanitizer: heap-buffer-overflow&lt;/p&gt;
&lt;p&gt;READ of size 1 at 0x61b000000794 thread T5&lt;/p&gt;
&lt;p&gt;#0 _nx_dhcp_search_buffer     addons/dhcp/nxd_dhcp_client.c:7541
    #1 _nx_dhcp_get_option_value  addons/dhcp/nxd_dhcp_client.c:7082&lt;/p&gt;
&lt;p&gt;0x61b000000794 is located 164 bytes to the right of 1648-byte region&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;A well formed OFFER through the same path is handled normally, the client records the offer and&lt;/p&gt;
&lt;p&gt;moves to REQUESTING, so the difference is the…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-102720</guid>
    </item>
    <item>
      <title>GHSA-rw53-r2p7-qgmf</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-rw53-r2p7-qgmf</link>
      <description>&lt;p&gt;A DHCP server, or anyone on the LAN who answers a DISCOVER first, can make the client read about a&lt;/p&gt;
&lt;p&gt;kilobyte past the end of the received message.&lt;/p&gt;
&lt;p&gt;The option walk keeps a pointer and an offset in step, and the only bound check uses the offset:&lt;/p&gt;
&lt;p&gt;```c&lt;/p&gt;
&lt;p&gt;/* addons/dhcp/nxd_dhcp_client.c:7538, 7572 */&lt;/p&gt;
&lt;p&gt;while (i &amp;lt; length - 1)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;...
    size = *(++data);      /* data moves 1: type -&amp;gt; length byte */
    data += size + 1;      /* data moves size + 1 more          */
    i += size + 1;         /* i moves only size + 1             */&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;A TLV option occupies size + 2 bytes. `data` is advanced by size + 2 in total, `i` by size + 1, so&lt;/p&gt;
&lt;p&gt;the offset falls one byte behind the real read position for every option the walk skips. After&lt;/p&gt;
&lt;p&gt;enough skipped options the check `i &amp;lt; length - 1` still holds while `data` is already past the end&lt;/p&gt;
&lt;p&gt;of the message, and the subsequent read of the type and length bytes comes from whatever follows.&lt;/p&gt;
&lt;p&gt;A single OFFER carrying a long run of skippable options is enough:&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;ERROR: AddressSanitizer: heap-buffer-overflow&lt;/p&gt;
&lt;p&gt;READ of size 1 at 0x61b000000794 thread T5&lt;/p&gt;
&lt;p&gt;#0 _nx_dhcp_search_buffer     addons/dhcp/nxd_dhcp_client.c:7541
    #1 _nx_dhcp_get_option_value  addons/dhcp/nxd_dhcp_client.c:7082&lt;/p&gt;
&lt;p&gt;0x61b000000794 is located 164 bytes to the right of 1648-byte region&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;A well formed OFFER through the same path is handled normally, the client records the offer and&lt;/p&gt;
&lt;p&gt;moves to REQUESTING, so the difference is the…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;A DHCP server, or anyone on the LAN who answers a DISCOVER first, can make the client read about a&lt;/p&gt;
&lt;p&gt;kilobyte past the end of the received message.&lt;/p&gt;
&lt;p&gt;The option walk keeps a pointer and an offset in step, and the only bound check uses the offset:&lt;/p&gt;
&lt;p&gt;```c&lt;/p&gt;
&lt;p&gt;/* addons/dhcp/nxd_dhcp_client.c:7538, 7572 */&lt;/p&gt;
&lt;p&gt;while (i &amp;lt; length - 1)&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt;...
    size = *(++data);      /* data moves 1: type -&amp;gt; length byte */
    data += size + 1;      /* data moves size + 1 more          */
    i += size + 1;         /* i moves only size + 1             */&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;A TLV option occupies size + 2 bytes. `data` is advanced by size + 2 in total, `i` by size + 1, so&lt;/p&gt;
&lt;p&gt;the offset falls one byte behind the real read position for every option the walk skips. After&lt;/p&gt;
&lt;p&gt;enough skipped options the check `i &amp;lt; length - 1` still holds while `data` is already past the end&lt;/p&gt;
&lt;p&gt;of the message, and the subsequent read of the type and length bytes comes from whatever follows.&lt;/p&gt;
&lt;p&gt;A single OFFER carrying a long run of skippable options is enough:&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;ERROR: AddressSanitizer: heap-buffer-overflow&lt;/p&gt;
&lt;p&gt;READ of size 1 at 0x61b000000794 thread T5&lt;/p&gt;
&lt;p&gt;#0 _nx_dhcp_search_buffer     addons/dhcp/nxd_dhcp_client.c:7541
    #1 _nx_dhcp_get_option_value  addons/dhcp/nxd_dhcp_client.c:7082&lt;/p&gt;
&lt;p&gt;0x61b000000794 is located 164 bytes to the right of 1648-byte region&lt;/p&gt;
&lt;p&gt;```&lt;/p&gt;
&lt;p&gt;A well formed OFFER through the same path is handled normally, the client records the offer and&lt;/p&gt;
&lt;p&gt;moves to REQUESTING, so the difference is the…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-rw53-r2p7-qgmf</guid>
    </item>
  </channel>
</rss>
