<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://vulnerability.circl.lu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-09-28T23:14:28.499255+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@circl.lu</email>
  </author>
  <link href="https://vulnerability.circl.lu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/cve-2024-35970</id>
    <title>CVE-2024-35970 — af_unix: Clear stale u-&gt;oob_skb.</title>
    <updated>2026-09-28T23:14:28.777777+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Linux</p>
<p>In the Linux kernel, the following vulnerability has been resolved:</p>
<p>af_unix: Clear stale u-&gt;oob_skb.</p>
<p>syzkaller started to report deadlock of unix_gc_lock after commit
4090fa373f0e ("af_unix: Replace garbage collection algorithm."), but
it just uncovers the bug that has been there since commit 314001f0bf92
("af_unix: Add OOB support").</p>
<p>The repro basically does the following.</p>
<p>from socket import *
  from array import array</p>
<p>c1, c2 = socketpair(AF_UNIX, SOCK_STREAM)
  c1.sendmsg([b'a'], [(SOL_SOCKET, SCM_RIGHTS, array("i", [c2.fileno()]))], MSG_OOB)
  c2.recv(1)  # blocked as no normal data in recv queue</p>
<p>c2.close()  # done async and unblock recv()
  c1.close()  # done async and trigger GC</p>
<p>A socket sends its file descriptor to itself as OOB data and tries to
receive normal data, but finally recv() fails due to async close().</p>
<p>The problem here is wrong handling of OOB skb in manage_oob().  When
recvmsg() is called without MSG_OOB, manage_oob() is called to check
if the peeked skb is OOB skb.  In such a case, manage_oob() pops it
out of the receive queue but does not clear unix_sock(sk)-&gt;oob_skb.
This is wrong in terms of uAPI.</p>
<p>Let's say we send "hello" with MSG_OOB, and "world" without MSG_OOB.
The 'o' is handled as OOB data.  When recv() is called twice without
MSG_OOB, the OOB data should be lost.</p>
<p>&gt;&gt;&gt; from socket import *
  &gt;&gt;&gt; c1, c2 = socketpair(AF_UNIX, SOCK_STREAM, 0)
  &gt;&gt;&gt; c1.send(b'hello', MSG_OOB)  # 'o' is OOB data
  5
  &gt;&gt;&gt; c1.send(b'world')
  5
  &gt;&gt;&gt; c2…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2024-35970"/>
  </entry>
</feed>
