CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



GHSA-C795-2G9C-J48M

GHSA-C795-2G9C-J48M: Remote Path Traversal and Arbitrary File Write in EverOS Memory Ingestion

Alon Barad
Alon Barad
Software Engineer

Jun 22, 2026·6 min read·4 visits

Executive Summary (TL;DR)

Unauthenticated path traversal via the sender_id parameter in EverOS allows remote attackers to write arbitrary Markdown files outside the memory root, potentially leading to local system file corruption or application disruption.

EverOS versions 1.0.0 and earlier contain a path traversal vulnerability in the user memory ingestion endpoint. By exploiting this flaw, unauthenticated network attackers can escape the designated database memory root and write arbitrary Markdown files to target directories on the local system.

Vulnerability Overview

EverOS is designed as a Markdown-first storage and retrieval framework for artificial intelligence agents. It allows applications to ingest and organize long-term agent interactions, compiling structured logs into local Markdown configurations. The framework exposes a public-facing API endpoint at /api/v1/memory/add to handle incoming conversation logs and serialize them under dynamic hierarchical paths based on metadata parameters.

During user-memory extraction, the API processes structured payloads representing historical interaction events. The vulnerability lies in the lack of input sanitization applied to the sender_id parameter, which represents the identifier of the message author. While other organizational variables such as app_id and project_id are strictly verified, the framework trustingly integrates the raw sender_id string directly into local directory paths.

The resulting path vulnerability belongs to the class of Improper Limitation of a Pathname to a Restricted Directory, tracked as CWE-22. Because the application server processes these payloads programmatically without user intervention, remote unauthenticated entities can exploit this endpoint to write files on any storage path accessible to the user running the EverOS daemon.

Root Cause Analysis

The root cause of this vulnerability is the absence of validation checks on the sender_id parameter before it is processed by the local file storage subsystem. In the vulnerable versions of EverOS, the incoming JSON payload is parsed into a Pydantic Data Transfer Object (DTO) in src/everos/entrypoints/api/routes/memorize.py. The sender_id field is defined simply as a string type with a minimum length requirement, lacking structural constraints or pattern matching.

When a client submits memory entries, the persistence layer resolves the final file system write path through a nested directory join. The folder structure is generated as follows: [configured_memory_root]/[app_id]/[project_id]/[sender_id]/episodes/[episode_id].md. Since Python’s standard pathlib.Path utility evaluates double-dot sequences (../) literal-by-literal during path normalization, providing directory traversal segments within sender_id alters the resolved directory tree.

Because the underlying operating system executes write operations relative to the calculated absolute path, the file system writes escape the bounds of memory_root. The path calculation collapses the target directories step-by-step for each ../ sequence encountered, permitting the file writer to point to root folders such as /var/www/ or any other directory writable by the server process group.

Code Analysis and Patch Verification

In vulnerable versions, the DTO parsing mechanism permitted any arbitrary sequence of string characters to define the message sender:

# Vulnerable DTO structure
class MessageItemDTO(BaseModel):
    sender_id: str = Field(..., min_length=1)
    sender_name: str | None = None
    role: Literal["user", "assistant", "tool"]
    timestamp: int

The vulnerability was resolved in commit a10cdcd197747f371b7879a32c2cc3f77471e9c2 by implementing validation constraints at the model layer and adding a directory containment check in the persistence layer.

The patched schema enforces strict string sanitization using a Pydantic AfterValidator and a regex character filter:

# Patched DTO with validation
_PATH_SAFE_CHARSET = r"^[a-zA-Z0-9_.@+-]+$"
_PATH_TRAVERSAL_TOKENS = frozenset({".", ".."})
 
def validate_path_safe_id(v: str) -> str:
    if v in _PATH_TRAVERSAL_TOKENS:
        raise ValueError(f"identifier cannot be reserved token: {v}")
    return v
 
PathSafeId = Annotated[str, AfterValidator(validate_path_safe_id)]
 
class MessageItemDTO(BaseModel):
    sender_id: PathSafeId = Field(
        ...,
        min_length=1,
        max_length=128,
        pattern=_PATH_SAFE_CHARSET,
    )

Additionally, a safety check was added directly to MarkdownWriter to verify directory boundaries relative to the server root directory:

def _ensure_within_root(self, target: Path) -> Path:
    root = self._memory_root.root
    resolved = target.resolve()
    if not resolved.is_relative_to(root):
        raise PathTraversalError(
            f"write target escapes the memory root: {resolved} not under {root}"
        )
    return resolved

This defensive design ensures that even if upstream DTO validation fails or is bypassed by dynamic configurations, the persistence layer actively raises a PathTraversalError and blocks directory escape. The fix is considered structurally complete, as the combination of whitelist validation and runtime containment checks prevents directory traversal bypass vectors.

Exploitation Methodology

An unauthenticated remote attacker can exploit this vulnerability by submitting a crafted HTTP POST request to the /api/v1/memory/add endpoint of an exposed EverOS deployment. The attack vector relies on injecting directory traversal sequences directly into the sender_id property of a message payload.

Below is an example of an exploitation payload that demonstrates how an attacker can leverage this flaw to write file contents outside the target storage path:

POST /api/v1/memory/add HTTP/1.1
Host: vulnerable-everos.local:8000
Content-Type: application/json
Content-Length: 351
 
{
  "session_id": "session_01",
  "app_id": "default",
  "project_id": "default",
  "messages": [
    {
      "sender_id": "../../../../../var/tmp/malicious_trigger",
      "role": "user",
      "timestamp": 1700000000000,
      "content": "Payload written to an unauthorized system directory"
    }
  ]
}

During exploitation, the server normalizes the target write location by evaluating the nested segments. The traversal string resolves to /var/tmp/malicious_trigger/episodes/[episode_id].md, causing the framework to write the output to /var/tmp/ instead of the restricted application storage pool. The final written file contains metadata and content formatted as a Markdown conversation episode.

Impact Assessment

The impact of this vulnerability is classified as High for integrity and Low for availability, yielding an overall CVSS base score of 8.2. Because the application processes user-supplied markdown files directly on the local host, attackers can overwrite configuration files, inject unauthorized assets, or pollute operational databases.

While the attacker cannot execute arbitrary commands directly through standard path traversal, the ability to control file paths and partially influence file contents poses a severe risk. If the daemon runs with elevated permissions, system-level configurations or web document roots can be altered, potentially leading to unauthorized data modification, cross-site scripting hosting, or configuration-based local system compromises.

Furthermore, write access to database-adjacent directories allows attackers to overwrite critical application storage objects, generating application processing errors that disrupt services. Confidentiality remains unaffected because the endpoint does not return local files to the client.

Mitigation and Security Strategy

Deploying the official patch is the primary remediation strategy to address this vulnerability. System administrators must upgrade all local installations of EverOS to version 1.0.1 or later. If immediate updating is not possible, security teams can implement several architectural workarounds to restrict access and limit potential traversal damage.

To restrict the impact of potential directory escape, run the EverOS daemon under a dedicated, low-privilege user account. This service user should only have write permissions within the defined memory root folder, neutralizing path traversal attempts outside the restricted directory tree.

Additionally, deploying a Web Application Firewall (WAF) or an API Gateway rule to filter requests containing directory traversal payloads can help identify and mitigate exploitation attempts before they reach the backend service.

Official Patches

EverMind-AIRemediation commit adding Pydantic schema validation and filesystem containment checks
EverMind-AIEverOS release tag containing security fixes

Technical Appendix

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

Affected Systems

EverOS (PyPI Package: everos) deployments

Affected Versions Detail

Product
Affected Versions
Fixed Version
everos
EverMind-AI
<= 1.0.01.0.1
AttributeDetail
CWE IDCWE-22
Attack VectorNetwork
CVSS v3.18.2 (High)
ImpactArbitrary File Write / Overwrite
Exploit StatusNone
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1190Exploit Public-Facing Application
Initial Access
T1565.001Data Destruction / File Modification
Impact
CWE-22
Improper Limitation of a Pathname to a Restricted Directory

Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

Vulnerability Timeline

EverOS version 1.0.0 is released on PyPI
2026-06-03
Vulnerability patch commit code is pushed to public repository
2026-06-16
EverOS release tag 1.0.1 published
2026-06-16
GitHub Security Advisory GHSA-C795-2G9C-J48M published
2026-06-19

References & Sources

  • [1]GitHub Security Advisory GHSA-C795-2G9C-J48M
  • [2]EverOS Repository Advisory Page

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 4 hours ago•GHSA-6GQW-JQV7-V88M
7.2

GHSA-6GQW-JQV7-V88M: Multi-Tenant Isolation Bypass in stigmem-node via Missing SQL Tenant Predicates

A critical vulnerability exists in the stigmem-node package when running the opt-in stigmem-plugin-multi-tenant plugin. Due to a failure to enforce tenant-scoping filters on database queries within the decay sweep, quarantine moderation, and right-to-be-forgotten (RTBF) subsystems, an authorized caller belonging to one tenant can access, modify, and delete facts belonging to all other tenants. This broken object level authorization (BOLA) vulnerability allows cross-tenant data manipulation and information leakage.

Amit Schendel
Amit Schendel
3 views•6 min read
•about 4 hours ago•GHSA-V3F4-W7R7-V3HM
8.6

GHSA-v3f4-w7r7-v3hm: Remote Command Execution via Origin Validation Error in Uni-CLI Legacy HTTP Transport

An origin validation error and cross-site request forgery vulnerability in @zenalexa/unicli prior to version 0.225.2 allows cross-origin web applications to execute arbitrary tools on a user's local machine via the legacy stateless HTTP transport.

Amit Schendel
Amit Schendel
3 views•7 min read
•about 5 hours ago•GHSA-X975-RGX4-5FH4
8.2

GHSA-X975-RGX4-5FH4: Unescaped Locator Data Cross-Site Scripting in appium-mcp MCP-UI Resource

GHSA-X975-RGX4-5FH4 is a high-severity Cross-Site Scripting (XSS) vulnerability residing in the Model Context Protocol (MCP) User Interface (UI) component of appium-mcp, an NPM package integrating Appium with MCP clients. The flaw exists within the createLocatorGeneratorUI utility function, which renders UI metadata directly into an HTML template page without performing sanitization or encoding. Because MCP clients use window.parent.postMessage to send commands from the UI to the host, this XSS can be escalated to trigger arbitrary MCP tool calls, potentially leading to Remote Code Execution (RCE) on the host running the MCP client.

Alon Barad
Alon Barad
7 views•6 min read
•about 6 hours ago•GHSA-H3M5-97JQ-QJRF
9.6

GHSA-H3M5-97JQ-QJRF: Insecure Direct Object Reference (IDOR) Cross-Realm Bulk Alarm Deletion in OpenRemote Manager

An Insecure Direct Object Reference (IDOR) and missing authorization flaw in OpenRemote Manager allows an authenticated, low-privilege multi-tenant user to execute cross-realm bulk alarm deletion, resulting in permanent destruction of safety-critical alarms belonging to other tenants.

Amit Schendel
Amit Schendel
6 views•7 min read
•about 6 hours ago•GHSA-WVRH-2F4M-924V
5.5

GHSA-wvrh-2f4m-924v: Symlink-Following Arbitrary File Write in ChatterBot UbuntuCorpusTrainer

An insecure file extraction vulnerability exists in the UbuntuCorpusTrainer component of the ChatterBot package. Due to a combination of a predictable download path, a check-then-create directory pattern, and unvalidated symbolic link resolution during archive extraction, local attackers can write arbitrary files to restricted filesystem paths.

Amit Schendel
Amit Schendel
5 views•6 min read
•about 7 hours ago•GHSA-CW6H-FFMH-X6VH
6.5

GHSA-CW6H-FFMH-X6VH: Arbitrary Local File Disclosure via Same-Origin Policy Bypass in Anki Desktop

Anki Desktop for Windows, macOS, and Linux is vulnerable to local file disclosure and data exfiltration due to an iframe-based Same-Origin Policy (SOP) bypass. Maliciously crafted user scripts inside imported deck files run within the localhost context, bypassing security filters to query internal endpoints and read arbitrary system files.

Alon Barad
Alon Barad
6 views•4 min read