<?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>Fri, 02 Oct 2026 13:33:19 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-45933 — bpf: Preserve id of register in sync_linked_regs()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-45933</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;bpf: Preserve id of register in sync_linked_regs()&lt;/p&gt;
&lt;p&gt;sync_linked_regs() copies the id of known_reg to reg when propagating
bounds of known_reg to reg using the off of known_reg, but when
known_reg was linked to reg like:&lt;/p&gt;
&lt;p&gt;known_reg = reg         ; both known_reg and reg get same id
known_reg += 4          ; known_reg gets off = 4, and its id gets BPF_ADD_CONST&lt;/p&gt;
&lt;p&gt;now when a call to sync_linked_regs() happens, let&amp;#39;s say with the following:&lt;/p&gt;
&lt;p&gt;if known_reg &amp;gt;= 10 goto pc+2&lt;/p&gt;
&lt;p&gt;known_reg&amp;#39;s new bounds are propagated to reg but now reg gets
BPF_ADD_CONST from the copy.&lt;/p&gt;
&lt;p&gt;This means if another link to reg is created like:&lt;/p&gt;
&lt;p&gt;another_reg = reg       ; another_reg should get the id of reg but
                          assign_scalar_id_before_mov() sees
                          BPF_ADD_CONST on reg and assigns a new id to it.&lt;/p&gt;
&lt;p&gt;As reg has a new id now, known_reg&amp;#39;s link to reg is broken. If we find
new bounds for known_reg, they will not be propagated to reg.&lt;/p&gt;
&lt;p&gt;This can be seen in the selftest added in the next commit:&lt;/p&gt;
&lt;p&gt;0: (85) call bpf_get_prandom_u32#7    ; R0=scalar()
1: (57) r0 &amp;amp;= 255                     ; R0=scalar(smin=smin32=0,smax=umax=smax32=umax32=255,var_off=(0x0; 0xff))
2: (bf) r1 = r0                       ; R0=scalar(id=1,smin=smin32=0,smax=umax=smax32=umax32=255,var_off=(0x0; 0xff)) R1=scalar(id=1,smin=smin32=0,smax=umax=smax32=umax32=255,var_off=(0x0; 0xff))
3: (07) r1 += 4                       ; R1=scalar(id=1+4…&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;bpf: Preserve id of register in sync_linked_regs()&lt;/p&gt;
&lt;p&gt;sync_linked_regs() copies the id of known_reg to reg when propagating
bounds of known_reg to reg using the off of known_reg, but when
known_reg was linked to reg like:&lt;/p&gt;
&lt;p&gt;known_reg = reg         ; both known_reg and reg get same id
known_reg += 4          ; known_reg gets off = 4, and its id gets BPF_ADD_CONST&lt;/p&gt;
&lt;p&gt;now when a call to sync_linked_regs() happens, let&amp;#39;s say with the following:&lt;/p&gt;
&lt;p&gt;if known_reg &amp;gt;= 10 goto pc+2&lt;/p&gt;
&lt;p&gt;known_reg&amp;#39;s new bounds are propagated to reg but now reg gets
BPF_ADD_CONST from the copy.&lt;/p&gt;
&lt;p&gt;This means if another link to reg is created like:&lt;/p&gt;
&lt;p&gt;another_reg = reg       ; another_reg should get the id of reg but
                          assign_scalar_id_before_mov() sees
                          BPF_ADD_CONST on reg and assigns a new id to it.&lt;/p&gt;
&lt;p&gt;As reg has a new id now, known_reg&amp;#39;s link to reg is broken. If we find
new bounds for known_reg, they will not be propagated to reg.&lt;/p&gt;
&lt;p&gt;This can be seen in the selftest added in the next commit:&lt;/p&gt;
&lt;p&gt;0: (85) call bpf_get_prandom_u32#7    ; R0=scalar()
1: (57) r0 &amp;amp;= 255                     ; R0=scalar(smin=smin32=0,smax=umax=smax32=umax32=255,var_off=(0x0; 0xff))
2: (bf) r1 = r0                       ; R0=scalar(id=1,smin=smin32=0,smax=umax=smax32=umax32=255,var_off=(0x0; 0xff)) R1=scalar(id=1,smin=smin32=0,smax=umax=smax32=umax32=255,var_off=(0x0; 0xff))
3: (07) r1 += 4                       ; R1=scalar(id=1+4…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-45933</guid>
    </item>
  </channel>
</rss>
