sast-lite — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sast-lite (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
An AST-based static analyzer for Python. Instead of fragile regex matching, it parses each file into an abstract syntax tree and inspects how dangerous APIs are actually called — so subprocess.run(cmd, shell=True) is flagged while subprocess.run(["ls"]) is not. No third-party dependencies.
| Rule | CWE | Severity |
|---|---|---|
eval() / exec() on dynamic input | CWE-95 | critical/high |
os.system / subprocess(shell=True) | CWE-78 | high |
pickle/marshal deserialization | CWE-502 | high |
yaml.load without SafeLoader | CWE-20 | high |
SQL via f-string / concat / .format / % | CWE-89 | high |
requests(verify=False) | CWE-295 | high |
| Hardcoded password/secret literal | CWE-798 | high |
| Weak hash (md5/sha1) | CWE-327 | medium |
tempfile.mktemp | CWE-377 | medium |
Flask(debug=True) | CWE-489 | medium |
Jinja2 autoescape=False | CWE-79 | medium |
assert used for a security check | CWE-617 | medium |
# Scan a directory
python skills/sast-lite/analyzer.py src/
# JSON for tooling / CI
python skills/sast-lite/analyzer.py . --json
# Only show high+ severity
python skills/sast-lite/analyzer.py . --min-severity highExit codes: 0 clean · 1 issues found · 2 usage/parse error — ready for CI gating.
--json and parse the issue list.path:line and confirm the data flow is genuinelyattacker-controllable (the analyzer is intra-procedural, so it may flag patterns that are safe in context).
py.sql-injection, yaml.safe_load for py.yaml-load, list-form subprocess calls for py.subprocess-shell.
This is a lite analyzer: single-file, no cross-function taint tracking. It is designed for fast, high-signal triage — not a replacement for a full SAST suite. Treat findings as leads to verify, not automatic verdicts.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.