CVE-2026-45242 Overview
CVE-2026-45242 is a path traversal vulnerability [CWE-862] in Steipete Summarize versions prior to 0.15.1. The flaw resides in the /v1/summarize daemon endpoint, which accepts a slidesDir request parameter without proper validation. Authenticated callers can supply absolute paths or directory traversal sequences to write slide_*.png and slides.json artifacts to arbitrary writable directories. Repeat extraction requests can also delete matching files at the attacker-specified location. The vulnerability impacts integrity of the host filesystem within the permissions granted to the daemon process.
Critical Impact
Authenticated attackers can write and delete files in arbitrary writable directories on the host, enabling tampering with application data or configuration files accessible to the daemon process.
Affected Products
- Steipete Summarize versions prior to 0.15.1
- Component: steipete:summarize daemon
- Patched in release v0.15.2
Discovery Timeline
- 2026-05-18 - CVE-2026-45242 published to NVD
- 2026-05-19 - Last updated in NVD database
Technical Details for CVE-2026-45242
Vulnerability Analysis
The vulnerability exists in the daemon request handler that builds slide extraction settings from caller-supplied input. The handler reads request.slidesDir directly and passes it to resolveSlideSettings, which subsequently writes output artifacts to the resolved path. Because no normalization or containment check is applied, absolute paths and ../ sequences bypass the intended .summarize/slides location.
An authenticated client — including browser extensions or localhost integrations that legitimately call the daemon — can redirect file writes to any directory the daemon process can access. The same code path also handles cleanup of previously extracted slides, meaning repeated requests with the same attacker-controlled path will delete pre-existing slide_*.png and slides.json files at that location.
Root Cause
The root cause is missing authorization and input validation on the slidesDir parameter. The daemon trusts API callers to specify host filesystem destinations, even though those callers are typically constrained clients that only need to trigger extraction. No path canonicalization or allowlist boundary enforces containment under the per-user Summarize directory.
Attack Vector
An attacker with valid daemon credentials sends a crafted POST request to /v1/summarize with slidesDir set to an absolute path such as /etc/myapp/ or a traversal sequence like ../../../../tmp/target. The daemon writes generated slide artifacts to that location. Subsequent calls with the same target overwrite or delete files matching the slide naming pattern.
return resolveSlideSettings({
slides: slidesValue,
slidesOcr: slidesOcrValue,
- slidesDir: request.slidesDir ?? ".summarize/slides",
+ // Daemon/API callers may be browser-extension or localhost clients that
+ // only need to request extraction, not select host filesystem paths. Keep
+ // slide artifacts under the per-user Summarize directory so an authenticated
+ // request cannot write/delete slide files in arbitrary writable locations.
+ slidesDir: ".summarize/slides",
slidesSceneThreshold: request.slidesSceneThreshold,
slidesSceneThresholdExplicit: typeof request.slidesSceneThreshold !== "undefined",
slidesMax: request.slidesMax,
Source: GitHub Commit ec8efd6 — the patch hardcodes slidesDir to .summarize/slides, ignoring the caller-supplied value.
Detection Methods for CVE-2026-45242
Indicators of Compromise
- Unexpected slide_*.png or slides.json files appearing outside the user's .summarize/slides directory
- Deletion of legitimate files matching the slide artifact naming pattern in sensitive directories
- HTTP requests to /v1/summarize containing slidesDir values with absolute paths or ../ traversal sequences
Detection Strategies
- Inspect daemon access logs for POST /v1/summarize requests where the slidesDir field begins with /, ~, or contains ..
- Monitor filesystem activity from the Summarize daemon process for writes outside its expected working directory
- Audit installed Summarize versions across endpoints and flag any release earlier than 0.15.2
Monitoring Recommendations
- Enable verbose request logging on the daemon and forward logs to a central analytics platform for query against traversal patterns
- Alert on file creation events for slides.json or slide_*.png filenames in directories outside per-user Summarize paths
- Track outbound API calls from browser extensions or local clients that target the /v1/summarize endpoint with non-default parameters
How to Mitigate CVE-2026-45242
Immediate Actions Required
- Upgrade Steipete Summarize to version 0.15.2 or later without delay
- Restrict daemon network exposure to localhost only and verify no remote interfaces are bound
- Rotate any authentication tokens used by Summarize daemon clients if exposure is suspected
- Review filesystem locations writable by the daemon user and audit for stray slide artifacts
Patch Information
The fix is delivered in release v0.15.2 via pull request #220 and commit ec8efd6. The patch removes caller control over slidesDir and pins the output location to the per-user .summarize/slides directory. Refer to the VulnCheck Advisory for additional vendor guidance.
Workarounds
- Run the Summarize daemon under a low-privileged user account whose write permissions are confined to the Summarize working directory
- Place the daemon behind a reverse proxy that strips or validates the slidesDir field on incoming requests
- Apply filesystem-level access controls or mandatory access control profiles to restrict the daemon to its expected paths
# Upgrade to the patched release
npm install -g @steipete/summarize@0.15.2
# Verify the installed version
summarize --version
# Confirm the daemon binds only to localhost
ss -tlnp | grep summarize
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


