<?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-10-07T22:19:53.977760+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/fkie_cve-2026-21862</id>
    <title>fkie_cve-2026-21862</title>
    <updated>2026-10-07T22:19:54.191066+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>RustFS is a distributed object storage system built in Rust. Prior to version alpha.78, IP-based access control can be bypassed: get_condition_values trusts client-supplied X-Forwarded-For/X-Real-Ip without verifying a trusted proxy, so any reachable client can spoof aws:SourceIp and satisfy IP-allowlist policies. This issue has been patched in version alpha.78.</p>
      </div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/fkie_cve-2026-21862"/>
  </entry>
  <entry>
    <id>https://vulnerability.circl.lu/vuln/ghsa-fc6g-2gcp-2qrq</id>
    <title>GHSA-fc6g-2gcp-2qrq — RustFS has SourceIp bypass via spoofed X-Forwarded-For/Real-IP headers</title>
    <updated>2026-10-07T22:19:54.191206+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> crates.io: rustfs</p>
<p>### Summary
IP-based access control can be bypassed: get_condition_values trusts client-supplied X-Forwarded-For/X-Real-Ip without verifying a trusted proxy, so any reachable client can spoof aws:SourceIp and satisfy IP-allowlist policies.</p>
<p>### Details</p>
<p>- Vulnerable code: `rustfs/src/auth.rs:289-304` sets `remote_addr` from `X-Forwarded-For`/`X-Real-Ip`, then inserts `SourceIp` via
    `get_source_ip_raw`, with no trust boundary or proxy validation:
      - `let remote_addr = header.get("x-forwarded-for").and_then(...).or_else(|| header.get("x-real-ip")...).unwrap_or("127.0.0.1");`
      - `args.insert("SourceIp", vec![get_source_ip_raw(header, remote_addr)]);`
  - This value feeds IAM/bucket policy evaluation in `rustfs/src/storage/access.rs` (authorization path), so any request that forges the header can meet `aws:SourceIp` conditions.
  - No authentication is required beyond the request itself; the header is taken at face value even on direct connections.</p>
<p>### PoC</p>
<p>[rustfs-auth-trusted-ip-header-spoofing-poc.tar.gz](https://github.com/user-attachments/files/24038162/rustfs-auth-trusted-ip-header-spoofing-poc.tar.gz)</p>
<p>Steps (already included in `rustfs-auth-trusted-ip-header-spoofing-poc/`):</p>
<p>1. Start RustFS with two local volumes, e.g.:</p>
<p>```
     mkdir -p /tmp/rustfs-data1 /tmp/rustfs-data2
     RUSTFS_ACCESS_KEY=devadmin RUSTFS_SECRET_KEY=devadmin \
       cargo run --bin rustfs -- --address 0.0.0.0:9000 \
       /tmp/rustfs-data1 /tmp/rustfs-data2
```</p>
<p>2. From `…</p></div>
    </content>
    <link href="https://vulnerability.circl.lu/vuln/ghsa-fc6g-2gcp-2qrq"/>
  </entry>
</feed>
