Skip to main content
Vulnerability Database/CVE-2026-91835

CVE-2026-91835: OpenClaw ClawScan Interpretation Conflict

CVE-2026-91835 is an interpretation conflict vulnerability in OpenClaw ClawScan's file classifier affecting versions up to 0.1.6. This post explains its technical details, affected versions, security impact, and mitigation steps.

Published:

CVE-2026-91835 Overview

CVE-2026-91835 affects OpenClaw ClawScan versions up to 0.1.6. The flaw resides in the IsBinaryFile function within internal/runner/static_scanner.go, part of the File Classifier component. The weakness is categorized as an interpretation conflict [CWE-436], where the scanner treats files containing NUL bytes as opaque binaries and skips them. An attacker with local access can craft a file that disguises executable or policy-relevant content behind embedded NUL bytes, bypassing static scan review. Public exploit details are available. Upgrading to version 0.1.7 resolves the issue via commit 04401337b3adb9343bd338b21e5e258bf49ca9c8.

Critical Impact

Local attackers can smuggle malicious or policy-violating content past ClawScan's static review pipeline by embedding NUL bytes that force the file to be classified as an unreviewable binary.

Affected Products

  • OpenClaw ClawScan versions up to and including 0.1.6
  • Component: File Classifier — internal/runner/static_scanner.go
  • Fixed release: ClawScan v0.1.7

Discovery Timeline

  • 2026-09-15 - CVE-2026-91835 published to NVD
  • 2026-09-16 - Last updated in NVD database

Technical Details for CVE-2026-91835

Vulnerability Analysis

ClawScan is a static scanning tool written in Go that inspects source and configuration files for policy-relevant patterns before they reach downstream review. The IsBinaryFile classifier in internal/runner/static_scanner.go uses the presence of any NUL byte (0x00) as the sole signal that a file is a non-reviewable binary. When that condition is met, the scanner records an omission and skips further inspection of the content.

This single-signal classification creates an interpretation conflict between the scanner and downstream consumers of the file. An attacker who can write a file into a scanned path can insert a NUL byte into otherwise textual content to force the scanner to treat the file as opaque, while other tools and reviewers still parse the surrounding text normally.

Root Cause

The root cause is an over-broad application of the NUL-byte binary heuristic without any fallback attempt to decode the file or apply text-based rules to the salvageable portion. The classifier's boolean decision produces an all-or-nothing outcome that adversaries can weaponize by controlling a single byte.

Attack Vector

Exploitation requires local access and low privileges, along with some user interaction to trigger a scan against the attacker-controlled file. The attack does not require network access. Successful exploitation results in a limited integrity impact: content that should have been reviewed is silently omitted from scan results.

go
// Security patch excerpt from internal/runner/runner.go
// fix(runner): prevent NUL content scan bypass (#43)
		}
		contentForPrompt := content
		nulWarning := ""
		if bytes.IndexByte(content, 0) >= 0 {
			inspection, _ := inspectNULContent(path, content)
			if !inspection.reviewable && len(scanStaticInspection(path, inspection)) == 0 {
				addOmission(path, "binary file")
				continue
			}
			contentForPrompt = inspection.content
			if inspection.textEncoding != "" {
				nulWarning = fmt.Sprintf("[decoded from %s for review]\n", inspection.textEncoding)
				if len(inspection.alternate) > 0 {
					contentForPrompt = []byte(fmt.Sprintf("%s\n\n[raw bytes with NULs removed for alternate review]\n%s", inspection.content, inspection.alternate))
				}
			} else {
				nulWarning = "[warning: NUL bytes removed from inspectable file for review]\n"
			}
		}

Source: GitHub Commit 04401337

The patch replaces the boolean skip with a call to inspectNULContent, which attempts to decode the file and apply static rules before deciding whether to omit it.

Detection Methods for CVE-2026-91835

Indicators of Compromise

  • Files under scanned repositories that contain embedded NUL (0x00) bytes within otherwise textual content, such as source, configuration, or policy files.
  • ClawScan report entries recording large numbers of "binary file" omissions for files that source control history shows as text.
  • Unexpected additions of files with mixed text and binary bytes committed by low-privilege users or automated agents.

Detection Strategies

  • Compare ClawScan omission lists against Git or filesystem metadata to identify files marked as binary that are tracked as text upstream.
  • Run a secondary text-classification tool over the same scan targets and diff the classification against ClawScan output.
  • After upgrading, review the new static.nul_byte_in_text and static.opaque_binary static rule identifiers introduced in the fix for high-severity findings.

Monitoring Recommendations

  • Monitor commits and workflow artifacts for files containing 0x00 bytes in extensions normally associated with text content.
  • Alert on repeated "binary file" omission entries in scan pipelines, especially when they appear in policy-relevant directories.
  • Log ClawScan version strings in CI runs to detect environments still executing versions at or below 0.1.6.

How to Mitigate CVE-2026-91835

Immediate Actions Required

  • Upgrade all ClawScan installations to version 0.1.7 or later.
  • Audit historical scan output for files omitted with the reason "binary file" and re-review them with the patched scanner.
  • Restrict who can write files into paths that ClawScan pipelines evaluate, especially in shared CI runners.

Patch Information

The fix ships in ClawScan v0.1.7 as commit 04401337b3adb9343bd338b21e5e258bf49ca9c8. The change introduces an inspectNULContent code path plus two new static rules — static.nul_byte_in_text (high) and static.opaque_binary (low) — so NUL-bearing files are decoded and re-evaluated rather than silently skipped. Additional context is available in GitHub Issue #42 and GitHub Pull Request #43.

Workarounds

  • Pre-filter scan inputs with an external tool that flags or strips NUL bytes before invoking ClawScan versions at or below 0.1.6.
  • Enforce code review policies that reject commits introducing NUL bytes into text file types.
  • Run a secondary scanner in parallel and treat any disagreement on file classification as a review gate failure.
bash
# Upgrade ClawScan to the patched release
go install github.com/openclaw/clawscan/cmd/clawscan@v0.1.7

# Verify installed version
clawscan --version

# Interim check: list files containing NUL bytes in a scanned tree
grep -rlP "\\x00" ./path/to/scan/target

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.