<?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>Tue, 29 Sep 2026 00:55:36 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-98076 — tracing/probes: Fix use-after-free on field name/type of events with multiple probes</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-98076</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;tracing/probes: Fix use-after-free on field name/type of events with multiple probes&lt;/p&gt;
&lt;p&gt;The fields of a probe-based dynamic event (kprobe, uprobe, eprobe and
fprobe events) are created in traceprobe_define_arg_fields() by handing
the probe_arg name/type strings to trace_define_field(), which only
stores the pointers without copying. Those strings are owned by the
trace_probe and are freed when that probe is removed.&lt;/p&gt;
&lt;p&gt;An event can have several probes attached. The field list is defined
only once, by the first probe that registers the event, but it is kept
alive by any surviving sibling probe. Deleting just that first probe by
symbol -&lt;/p&gt;
&lt;p&gt;# primary A: fields are defined from A&amp;#39;s args
  echo &amp;#39;p:kprobes/ev vfs_read  a1=$arg1&amp;#39; &amp;gt;  kprobe_events
  # append B: shares A&amp;#39;s event call
  echo &amp;#39;p:kprobes/ev vfs_write a1=$arg1&amp;#39; &amp;gt;&amp;gt; kprobe_events
  # delete only A (matched by symbol), B survives
  echo &amp;#39;-:kprobes/ev vfs_read&amp;#39;           &amp;gt;&amp;gt; kprobe_events&lt;/p&gt;
&lt;p&gt;frees A&amp;#39;s args (trace_probe_cleanup() -&amp;gt; traceprobe_free_probe_arg()),
but trace_probe_unlink() keeps the trace_probe_event because the probe
list is not empty. The event call stays registered via B while its
fields now reference freed memory. Any field lookup then reads it, e.g.&lt;/p&gt;
&lt;p&gt;echo &amp;#39;a1 == 1&amp;#39; &amp;gt; events/kprobes/ev/filter&lt;/p&gt;
&lt;p&gt;BUG: KASAN: slab-use-after-free in strcmp+0xa7/0xb0
  Call Trace:
   strcmp
   trace_find_event_field
   parse_pred
   process_preds
   create_filter…&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;tracing/probes: Fix use-after-free on field name/type of events with multiple probes&lt;/p&gt;
&lt;p&gt;The fields of a probe-based dynamic event (kprobe, uprobe, eprobe and
fprobe events) are created in traceprobe_define_arg_fields() by handing
the probe_arg name/type strings to trace_define_field(), which only
stores the pointers without copying. Those strings are owned by the
trace_probe and are freed when that probe is removed.&lt;/p&gt;
&lt;p&gt;An event can have several probes attached. The field list is defined
only once, by the first probe that registers the event, but it is kept
alive by any surviving sibling probe. Deleting just that first probe by
symbol -&lt;/p&gt;
&lt;p&gt;# primary A: fields are defined from A&amp;#39;s args
  echo &amp;#39;p:kprobes/ev vfs_read  a1=$arg1&amp;#39; &amp;gt;  kprobe_events
  # append B: shares A&amp;#39;s event call
  echo &amp;#39;p:kprobes/ev vfs_write a1=$arg1&amp;#39; &amp;gt;&amp;gt; kprobe_events
  # delete only A (matched by symbol), B survives
  echo &amp;#39;-:kprobes/ev vfs_read&amp;#39;           &amp;gt;&amp;gt; kprobe_events&lt;/p&gt;
&lt;p&gt;frees A&amp;#39;s args (trace_probe_cleanup() -&amp;gt; traceprobe_free_probe_arg()),
but trace_probe_unlink() keeps the trace_probe_event because the probe
list is not empty. The event call stays registered via B while its
fields now reference freed memory. Any field lookup then reads it, e.g.&lt;/p&gt;
&lt;p&gt;echo &amp;#39;a1 == 1&amp;#39; &amp;gt; events/kprobes/ev/filter&lt;/p&gt;
&lt;p&gt;BUG: KASAN: slab-use-after-free in strcmp+0xa7/0xb0
  Call Trace:
   strcmp
   trace_find_event_field
   parse_pred
   process_preds
   create_filter…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-98076</guid>
    </item>
  </channel>
</rss>
