<?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 02:18:19 +0000</lastBuildDate>
    <item>
      <title>CVE-2024-50154 — tcp/dccp: Don't use timer_pending() in reqsk_queue_unlink().</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2024-50154</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;tcp/dccp: Don&amp;#39;t use timer_pending() in reqsk_queue_unlink().&lt;/p&gt;
&lt;p&gt;Martin KaFai Lau reported use-after-free [0] in reqsk_timer_handler().&lt;/p&gt;
&lt;p&gt;&amp;#34;&amp;#34;&amp;#34;
  We are seeing a use-after-free from a bpf prog attached to
  trace_tcp_retransmit_synack. The program passes the req-&amp;gt;sk to the
  bpf_sk_storage_get_tracing kernel helper which does check for null
  before using it.
  &amp;#34;&amp;#34;&amp;#34;&lt;/p&gt;
&lt;p&gt;The commit 83fccfc3940c (&amp;#34;inet: fix potential deadlock in
reqsk_queue_unlink()&amp;#34;) added timer_pending() in reqsk_queue_unlink() not
to call del_timer_sync() from reqsk_timer_handler(), but it introduced a
small race window.&lt;/p&gt;
&lt;p&gt;Before the timer is called, expire_timers() calls detach_timer(timer, true)
to clear timer-&amp;gt;entry.pprev and marks it as not pending.&lt;/p&gt;
&lt;p&gt;If reqsk_queue_unlink() checks timer_pending() just after expire_timers()
calls detach_timer(), TCP will miss del_timer_sync(); the reqsk timer will
continue running and send multiple SYN+ACKs until it expires.&lt;/p&gt;
&lt;p&gt;The reported UAF could happen if req-&amp;gt;sk is close()d earlier than the timer
expiration, which is 63s by default.&lt;/p&gt;
&lt;p&gt;The scenario would be&lt;/p&gt;
&lt;p&gt;1. inet_csk_complete_hashdance() calls inet_csk_reqsk_queue_drop(),
     but del_timer_sync() is missed&lt;/p&gt;
&lt;p&gt;2. reqsk timer is executed and scheduled again&lt;/p&gt;
&lt;p&gt;3. req-&amp;gt;sk is accept()ed and reqsk_put() decrements rsk_refcnt, but
     reqsk timer still has another one, and inet_csk_accept() does not
     clear req-&amp;gt;sk for non-TFO sockets&lt;/p&gt;
&lt;p&gt;4. sk is close()d…&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;tcp/dccp: Don&amp;#39;t use timer_pending() in reqsk_queue_unlink().&lt;/p&gt;
&lt;p&gt;Martin KaFai Lau reported use-after-free [0] in reqsk_timer_handler().&lt;/p&gt;
&lt;p&gt;&amp;#34;&amp;#34;&amp;#34;
  We are seeing a use-after-free from a bpf prog attached to
  trace_tcp_retransmit_synack. The program passes the req-&amp;gt;sk to the
  bpf_sk_storage_get_tracing kernel helper which does check for null
  before using it.
  &amp;#34;&amp;#34;&amp;#34;&lt;/p&gt;
&lt;p&gt;The commit 83fccfc3940c (&amp;#34;inet: fix potential deadlock in
reqsk_queue_unlink()&amp;#34;) added timer_pending() in reqsk_queue_unlink() not
to call del_timer_sync() from reqsk_timer_handler(), but it introduced a
small race window.&lt;/p&gt;
&lt;p&gt;Before the timer is called, expire_timers() calls detach_timer(timer, true)
to clear timer-&amp;gt;entry.pprev and marks it as not pending.&lt;/p&gt;
&lt;p&gt;If reqsk_queue_unlink() checks timer_pending() just after expire_timers()
calls detach_timer(), TCP will miss del_timer_sync(); the reqsk timer will
continue running and send multiple SYN+ACKs until it expires.&lt;/p&gt;
&lt;p&gt;The reported UAF could happen if req-&amp;gt;sk is close()d earlier than the timer
expiration, which is 63s by default.&lt;/p&gt;
&lt;p&gt;The scenario would be&lt;/p&gt;
&lt;p&gt;1. inet_csk_complete_hashdance() calls inet_csk_reqsk_queue_drop(),
     but del_timer_sync() is missed&lt;/p&gt;
&lt;p&gt;2. reqsk timer is executed and scheduled again&lt;/p&gt;
&lt;p&gt;3. req-&amp;gt;sk is accept()ed and reqsk_put() decrements rsk_refcnt, but
     reqsk timer still has another one, and inet_csk_accept() does not
     clear req-&amp;gt;sk for non-TFO sockets&lt;/p&gt;
&lt;p&gt;4. sk is close()d…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2024-50154</guid>
    </item>
  </channel>
</rss>
