CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-24762

RustFS: When 'Safe' Languages Leak Like a Sieve

Alon Barad
Alon Barad
Software Engineer

Feb 3, 2026·6 min read·33 visits

Executive Summary (TL;DR)

RustFS versions alpha.13 through alpha.81 logged full S3 credentials (access/secret keys) in plaintext at the INFO log level. Attackers with access to logs (Splunk, ELK, local disk) can compromise the entire storage cluster. Patch to alpha.82 immediately and rotate all keys.

RustFS, a high-performance distributed object storage system, inadvertently implemented a feature that turns your log aggregation stack into a password manager. By logging authentication credentials at the INFO level, the system broadcasted Access Keys, Secret Keys, and Session Tokens to anyone with read access to the system logs.

The Hook: Memory Safe, Logic Unsafe

We love Rust. It saves us from double-frees, dangling pointers, and the nightmares of C++ memory management. But here's the kicker: the compiler can prevent you from writing to unallocated memory, but it can't prevent you from writing your secrets to stdout. That is exactly what happened with RustFS.

RustFS is designed to be a high-performance, S3-compatible object storage layer. It's the kind of thing you deploy when you want to handle petabytes of data without the overhead of the JVM. It handles authentication, data replication, and distribution. It holds the keys to the kingdom—literally.

CVE-2026-24762 isn't a complex buffer overflow or a race condition that requires nanosecond precision. It is the digital equivalent of a bank manager shouting the vault combination across the lobby every time they open it. For nearly 70 versions (alpha.13 to alpha.81), RustFS decided that Access Keys, Secret Keys, and Session Tokens were just mundane strings worthy of the INFO log level.

The Flaw: The Default Derive Trap

The root cause here is a classic developer convenience feature turning into a security liability. In Rust, we frequently use #[derive(Debug)] on structs to automatically generate code that can format the struct for output. It's fantastic for development. You want to see what's in your User object? Just println!("{:?}", user).

However, when you apply this indiscriminately to structs containing sensitive data, Debug does exactly what you asked it to do: it prints everything. The developers likely had a struct handling S3 credentials and, innocently enough, derived Debug on it. Then, somewhere in the authentication flow, they added a logging statement like info!("Authenticating request: {:?}", credentials).

The result? Every time a client authenticated, their full credentials were serialized into the application logs. Since this was done at INFO level—which is the default in almost every production environment—these secrets weren't just staying on the machine. They were being shipped to Datadog, Splunk, ELK, and CloudWatch, effectively creating a searchable database of valid API keys.

The Code: The Smoking Gun

Let's look at a reconstruction of the offending pattern. This is a common anti-pattern in Rust web services.

The Vulnerable Code (Simplification):

// The struct holds critical secrets
#[derive(Debug, Clone)] // <--- The culprit
pub struct S3Credentials {
    pub access_key: String,
    pub secret_key: String,
    pub session_token: Option<String>,
}
 
fn authenticate(creds: &S3Credentials) {
    // This looks helpful for debugging connection issues...
    // But it dumps the secret_key in plaintext to logs.
    log::info!("Processing auth for: {:?}", creds);
    
    // ... processing logic
}

When this runs, your logs fill up with: [INFO] Processing auth for: S3Credentials { access_key: "AKIA...", secret_key: "wJalr...", session_token: None }

The Fix (Proper Trait Implementation):

To fix this, you must manually implement Debug (or Display) to redact sensitive fields, rather than deriving it automatically.

impl fmt::Debug for S3Credentials {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        f.debug_struct("S3Credentials")
         .field("access_key", &self.access_key)
         .field("secret_key", &"[REDACTED]") // <--- Safe now
         .field("session_token", &"[REDACTED]")
         .finish()
    }
}

This change ensures that even if a developer blindly logs the struct, the output remains safe.

The Exploit: Grepping for Gold

Exploiting this requires zero technical sophistication regarding the RustFS binary itself. You don't need a debugger, you don't need shellcode, and you don't need to bypass ASLR. You just need access to the logs. This is often easier than gaining root access to the server itself. Log aggregators are frequently shared across teams with overly permissive read access.

Attack Scenario:

  1. Recon: Attacker gains read-only access to the company's ELK stack or compromises a developer laptop that has production log dumps.
  2. Search: The attacker runs a simple query:
    grep -r "secret_key" /var/log/rustfs/
    # OR in Kibana:
    service:rustfs AND message:"secret_key"
  3. Extraction: The logs return valid JSON or Struct-formatted credentials.
  4. Persistence: The attacker uses the extracted S3 keys to upload a malicious object to the storage, or simply exfiltrate sensitive backups stored in the buckets.

The beauty (and horror) of this exploit is that it works historically. If you rotate the logs but not the keys, the attacker can mine data from six months ago and still likely find valid credentials.

The Impact: Why You Should Panic

The impact here is Complete Compromise of Data Confidentiality and Integrity. In object storage systems, the Access/Secret key pair is the ultimate authority.

With these keys, an attacker can:

  1. Exfiltrate Data: Download proprietary datasets, customer PII, or backups.
  2. Destroy Data: Issue DeleteObject or DeleteBucket commands. Ransomware gangs love this—exfiltrate the data, delete the originals, demand payment.
  3. Lateral Movement: If these S3 keys are actually AWS IAM keys (passthrough authentication), the attacker might be able to pivot from the storage layer into your EC2 infrastructure or Lambda functions.

Since INFO logs are voluminous, they are often retained for weeks or months. This vulnerability creates a massive window of exposure where every single successful authentication event was recorded.

The Fix: Rotate Everything

Patching the software is only step one. Upgrading to RustFS alpha.82 stops the bleeding—it stops new logs from containing secrets. However, it does nothing about the gigabytes of text files already sitting on your disk or in your cloud logging provider.

Your Remediation Checklist:

  1. Upgrade: Move to version alpha.82 immediately.
  2. Scrub: You must purge existing logs. sed -i 's/secret_key: ".*"/secret_key: "[REDACTED]"/g' /var/log/rustfs.log. Do this on your log servers, backups, and SIEM.
  3. ROTATE KEYS: This is non-negotiable. Assume every key used in the last N months (where N is your log retention period) is compromised. Issue new Access Keys and revoke the old ones.
  4. Audit: Check your access logs for unusual IP addresses or user agents accessing your buckets using the compromised keys.

Official Patches

RustFSOfficial Security Advisory

Technical Appendix

CVSS Score
6.9/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
EPSS Probability
0.04%
Top 100% most exploited

Affected Systems

RustFS Distributed Storage

Affected Versions Detail

Product
Affected Versions
Fixed Version
RustFS
rustfs
>= alpha.13, < alpha.82alpha.82
AttributeDetail
CWECWE-532 (Insertion of Sensitive Info into Log File)
CVSS v4.06.9 (Medium)
Attack VectorNetwork (Log Access)
Exploit ComplexityLow
Data LeakedAccess Keys, Secret Keys, Session Tokens
Patch StatusFixed in alpha.82

MITRE ATT&CK Mapping

T1552.001Credentials in Files
Credential Access
T1005Data from Local System
Collection
CWE-532
Insertion of Sensitive Information into Log File

The product writes sensitive information to log files, which can be read by anyone with access to the logs.

Vulnerability Timeline

Initial discussion on redaction (Issue #556)
2025-09-17
Advisory Published & Patch Released
2026-02-03

References & Sources

  • [1]GHSA-r54g-49rx-98cr

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 2 hours ago•CVE-2026-9277
8.1

CVE-2026-9277: OS Command Injection in shell-quote via Object-Token Line Terminator Parsing Defect

A technical breakdown of the OS command injection vulnerability in the shell-quote NPM package (CVE-2026-9277 / GHSA-w7jw-789q-3m8p). The bug resides in the character-by-character backslash-escaping logic applied to the .op field of object-tokens within the quote() function, which fails to match and escape line terminators due to a regex matching oversight in JavaScript. This allows unauthenticated remote attackers to execute arbitrary shell commands if they can control inputs processed by this library.

Alon Barad
Alon Barad
6 views•6 min read
•about 3 hours ago•CVE-2026-11645
8.8

CVE-2026-11645: Out-of-Bounds Memory Access in Google Chrome V8 Engine

A high-severity memory corruption vulnerability exists in the V8 JavaScript engine of Google Chrome before versions 149.0.7827.102/103. The flaw arises from an incorrect bounds-check elimination during JIT compilation by the TurboFan optimizer, allowing remote attackers to achieve out-of-bounds read and write access inside the sandboxed renderer process.

Amit Schendel
Amit Schendel
18 views•6 min read
•about 12 hours ago•CVE-2026-50751
9.3

CVE-2026-50751: Authentication Bypass in Check Point Security Gateway IKEv1 Legacy Validation

An improper authentication vulnerability (CWE-287) exists in the legacy, deprecated Internet Key Exchange version 1 (IKEv1) key exchange protocol implementation in Check Point Security Gateways. The vulnerability is caused by a logic flow weakness during the certificate validation process for Remote Access VPN and Mobile Access (SSL VPN) connections. An unauthenticated remote attacker can exploit this weakness to bypass user authentication entirely, establishing a fully functional Remote Access VPN connection without a valid password.

Alon Barad
Alon Barad
63 views•6 min read
•1 day ago•CVE-2026-39922
6.3

CVE-2026-39922: Server-Side Request Forgery in GeoNode Service Registration Endpoint

GeoNode versions prior to 4.4.5 and 5.0.2 are vulnerable to Server-Side Request Forgery (SSRF) in the service registration endpoint. Authenticated attackers with low privileges can exploit insufficient input validation in the Web Map Service (WMS) registration module to force the application server to make outbound network queries to loopback addresses, private RFC1918 subnets, link-local scopes, and cloud metadata endpoints. This technical report details the mechanics of the vulnerability, the underlying architectural flaw, and how to effectively remediate and mitigate the associated security risks.

Alon Barad
Alon Barad
4 views•7 min read
•1 day ago•CVE-2022-0492
7.8

CVE-2022-0492: Privilege Escalation and Container Escape via cgroups v1 release_agent

CVE-2022-0492 is a high-severity missing authorization vulnerability in the Linux kernel's Control Groups (cgroups) v1 implementation. The flaw resides within the cgroup_release_agent_write function in kernel/cgroup/cgroup-v1.c, where the kernel fails to validate if the process writing to the release_agent file possesses administrative capabilities in the initial user namespace. This allows a local attacker inside a container with root privileges (UID 0) to abuse user namespaces, mount a cgroups v1 directory, modify the release_agent parameter, and execute arbitrary commands on the host system as host root, effectively achieving a complete container escape.

Amit Schendel
Amit Schendel
12 views•7 min read
•3 days ago•GHSA-G72G-R7M4-9X4G
6.3

GHSA-G72G-R7M4-9X4G: Insufficient Session Expiration of OAuth Tokens in NocoDB

NocoDB is subject to an insufficient session expiration vulnerability where OAuth access and refresh tokens are not invalidated or revoked during security-sensitive actions such as password changes, forgot-password requests, or password resets. This allows an attacker possessing an active OAuth token to maintain unauthorized persistence.

Amit Schendel
Amit Schendel
12 views•6 min read