<?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-29T15:41:25.783772+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-50067</id>
    <title>CVE-2024-50067 — uprobe: avoid out-of-bounds memory access of fetching args</title>
    <updated>2026-09-29T15:41:25.787322+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>uprobe: avoid out-of-bounds memory access of fetching args</p>
<p>Uprobe needs to fetch args into a percpu buffer, and then copy to ring
buffer to avoid non-atomic context problem.</p>
<p>Sometimes user-space strings, arrays can be very large, but the size of
percpu buffer is only page size. And store_trace_args() won't check
whether these data exceeds a single page or not, caused out-of-bounds
memory access.</p>
<p>It could be reproduced by following steps:
1. build kernel with CONFIG_KASAN enabled
2. save follow program as test.c</p>
<p>```
\#include &lt;stdio.h&gt;
\#include &lt;stdlib.h&gt;
\#include &lt;string.h&gt;</p>
<p>// If string length large than MAX_STRING_SIZE, the fetch_store_strlen()
// will return 0, cause __get_data_size() return shorter size, and
// store_trace_args() will not trigger out-of-bounds access.
// So make string length less than 4096.
\#define STRLEN 4093</p>
<p>void generate_string(char *str, int n)
{
    int i;
    for (i = 0; i &lt; n; ++i)
    {
        char c = i % 26 + 'a';
        str[i] = c;
    }
    str[n-1] = '\0';
}</p>
<p>void print_string(char *str)
{
    printf("%s\n", str);
}</p>
<p>int main()
{
    char tmp[STRLEN];</p>
<p>generate_string(tmp, STRLEN);
    print_string(tmp);</p>
<p>return 0;
}
```
3. compile program
`gcc -o test test.c`</p>
<p>4. get the offset of `print_string()`
```
objdump -t test | grep -w print_string
0000000000401199 g     F .text  000000000000001b              print_string
```</p>
<p>5. configure uprobe with offset 0x11…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/cve-2024-50067"/>
  </entry>
</feed>
