CVE-2026-91836 Overview
CVE-2026-91836 affects OpenClaw ClawScan versions up to 0.1.6. The flaw resides in an unknown function within internal/runner/static_scanner.go, part of the Static Scanner component. The root issue is an incomplete comparison with missing factors, classified under [CWE-1023]. An attacker with local access and low privileges can trigger the weakness, though exploitation requires user interaction. A public exploit exists, and upstream has released version 0.1.7 with commit 9f6a6fbb9f1137345566d0ab44c73893dfe112fa to remediate the issue.
Critical Impact
Local attackers can influence Static Scanner results by bypassing skipped-path handling, causing scans to miss or misclassify files such as Python bytecode payloads.
Affected Products
- OpenClaw ClawScan versions up to and including 0.1.6
- Component: Static Scanner (internal/runner/static_scanner.go)
- Fixed release: OpenClaw ClawScan 0.1.7
Discovery Timeline
- 2026-09-15 - CVE-2026-91836 published to NVD
- 2026-09-16 - Last updated in NVD database
Technical Details for CVE-2026-91836
Vulnerability Analysis
OpenClaw ClawScan is a static scanning tool written in Go that inspects filesystem targets for security-relevant patterns. The vulnerability lies in the Static Scanner's path-skipping logic. The runner used a comparison function that did not account for all relevant factors when deciding whether a directory or file should be skipped. As a result, files that should have been scanned were omitted, and Python bytecode artifacts were not evaluated. An attacker with local access to a scan target can craft directory or file layouts that exploit this incomplete comparison to evade detection. Because the flaw affects a security-scanning tool, its impact is limited integrity loss in scan results rather than direct code execution.
Root Cause
The defect maps to [CWE-1023] Incomplete Comparison with Missing Factors. The pre-patch code used shouldSkipTargetPath for directory entries, which lacked the additional context needed to distinguish skipped file names from skipped directories. This allowed evasive layouts, and the scanner also lacked rules for Python bytecode (.pyc) files that can execute without reviewable source.
Attack Vector
Exploitation is local and requires user interaction, such as an operator running a scan across attacker-influenced content. The public patch reference confirms the fix is available and the exploit is public. See the ClawScan issue #40 and Pull Request #41 for reproduction context.
// Pre-patch (vulnerable): incomplete comparison for skipped entries
if entry.IsDir() {
if shouldSkipTargetPath(target, path) {
precomputedOmissions = append(precomputedOmissions, targetFileOmission{path: path, reason: "skipped path"})
return filepath.SkipDir
}
}
// Post-patch: directory-specific check plus new detection rules
if entry.IsDir() {
if shouldSkipTargetDirectory(target, path) {
precomputedOmissions = append(precomputedOmissions, targetFileOmission{path: path, reason: "skipped path"})
return filepath.SkipDir
}
}
// New static rules added in 0.1.7
{
id: "static.python_process_execution",
title: "Python process execution",
severity: "high",
description: "Looks for Python APIs that execute shell commands or child processes.",
pattern: regexp.MustCompile(`(?i)\b(?:os\s*\.\s*system|subprocess\s*\.\s*(?:call|check_call|check_output|popen|run))\s*\(`),
},
{
id: "static.python_bytecode",
title: "Packaged Python bytecode",
severity: "high",
description: "Flags precompiled Python bytecode that can execute without reviewable source.",
},
// Source: https://github.com/openclaw/clawscan/commit/9f6a6fbb9f1137345566d0ab44c73893dfe112fa
Detection Methods for CVE-2026-91836
Indicators of Compromise
- Presence of ClawScan binaries or modules from releases prior to 0.1.7 on developer or CI hosts.
- Scan output containing "skipped path" omission reasons for directories that should have been analyzed.
- Unreviewed Python bytecode (.pyc) artifacts inside code repositories or scan targets.
Detection Strategies
- Inventory ClawScan installations and compare reported version strings against fixed release 0.1.7.
- Diff historical scan reports against fresh scans performed with the patched version to reveal previously omitted files.
- Track Go module dependencies to identify projects vendoring github.com/openclaw/clawscan at vulnerable versions.
Monitoring Recommendations
- Monitor CI/CD pipelines for ClawScan version drift and enforce a minimum-version policy.
- Alert on scans that finish with unusually high skipped path omission counts.
- Log and review scan runs that process directories containing .pyc files without corresponding .py sources.
How to Mitigate CVE-2026-91836
Immediate Actions Required
- Upgrade ClawScan to version 0.1.7 or later on all hosts and CI runners.
- Rerun static scans on projects previously scanned with 0.1.6 or older to catch missed findings.
- Restrict local access to scan hosts so untrusted users cannot influence scan targets.
Patch Information
OpenClaw released ClawScan 0.1.7 containing commit 9f6a6fbb9f1137345566d0ab44c73893dfe112fa, which replaces shouldSkipTargetPath with shouldSkipTargetDirectory for directory entries and adds new detection rules for Python process execution and packaged Python bytecode. See the ClawScan v0.1.7 release notes and the patch commit for full details.
Workarounds
- If upgrading is delayed, review skip-list configurations and remove entries that could shadow directories containing sensitive files.
- Run scans as an unprivileged user in an isolated workspace to limit exposure from attacker-controlled layouts.
- Add out-of-band checks for .pyc files in scan targets until the patched detection rules are in place.
# Upgrade ClawScan to the fixed release
go install github.com/openclaw/clawscan/cmd/clawscan@v0.1.7
# Verify installed version
clawscan --version
# Rescan a target directory after upgrade
clawscan scan ./path/to/target
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.