Cyber Kev Triage
PassAudited by VirusTotal on May 11, 2026.
Overview
Type: OpenClaw Skill Name: cyber-kev-triage Version: 0.1.0 The `scripts/kev_triage.py` file exhibits potential Local File Inclusion (LFI) and Local File Write (LFW) vulnerabilities. It directly uses user-supplied paths for `--input` and `--output` arguments without explicit sanitization or restriction, allowing the script to read arbitrary files (which it then attempts to parse as JSON) and write processed data to arbitrary locations on the filesystem. While the script's core functionality is benign and there's no evidence of intentional data exfiltration, command execution, or persistence, these vulnerabilities could be exploited by an attacker who can control the arguments passed to the script (e.g., via prompt injection against the OpenClaw agent) to access or modify files beyond the intended scope.
Findings (0)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
If pointed at an existing or sensitive path, the script could overwrite or create local report files there.
The helper writes to a caller-specified output path and can create parent directories. This is expected for a triage report generator, but users should choose the output location intentionally.
parser.add_argument("--output", required=True, help="Path to output artifact.") ... output_path.parent.mkdir(parents=True, exist_ok=True) ... output_path.write_text(json.dumps(result, indent=2), encoding="utf-8")Use a dedicated report/output directory and avoid pointing --output at important existing files.
A user who expects --dry-run to avoid all file writes may still get an output file created or overwritten.
The CLI help says dry-run has no side effects, but the main flow still calls render and writes the output artifact. This appears to be a minor wording/behavior mismatch rather than hidden malicious behavior.
parser.add_argument("--dry-run", action="store_true", help="Run without side effects.") ... render(result, Path(args.output), args.format)Do not rely on --dry-run to suppress output creation; treat it as a report flag unless the implementation is changed.
