Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
1bc8938
fix(scanner): enhance python command injection detection regex
seonghobae Sep 25, 2026
538c574
fix(scanner): enhance python command injection detection regex
seonghobae Sep 26, 2026
d33cda2
fix(scanner): enhance python command injection detection regex
seonghobae Sep 26, 2026
b7d9c6a
fix(scanner): make Python shell-call detection syntax-aware
seonghobae Sep 26, 2026
9964972
fix(scanner): preserve Python AST source offsets
seonghobae Sep 26, 2026
8d9a696
fix(scanner): retain qualified shell-call coverage
seonghobae Sep 26, 2026
bdef14c
fix(scanner): enhance python command injection detection regex
seonghobae Sep 26, 2026
d8e5af7
fix(scanner): restore syntax-aware command detector contract
seonghobae Sep 26, 2026
c3ad654
fix(scanner): restore syntax-aware command detector contract
seonghobae Sep 26, 2026
658814b
fix(scanner): restore syntax-aware command detector contract
seonghobae Sep 26, 2026
a2d4968
fix(scanner): restore syntax-aware command detector contract
seonghobae Sep 27, 2026
194b74a
test(scanner): reject statically false shell literals
seonghobae Oct 1, 2026
159ec8a
fix(scanner): exclude statically false shell literals
seonghobae Oct 1, 2026
5638045
merge(develop): preserve workflow lifecycle detector
seonghobae Oct 1, 2026
9f52b8d
fix(scanner): ignore empty iterables for shell param in AST finder
seonghobae Oct 1, 2026
4d34f5b
fix(scanner): restore integrated regression tree
seonghobae Oct 1, 2026
176c9ff
test(scanner): reproduce AST resource-limit crash
seonghobae Oct 1, 2026
397bede
fix(scanner): retain fallback on AST resource limits
seonghobae Oct 1, 2026
e98c31d
fix(scanner): handle AST resource limits gracefully
seonghobae Oct 1, 2026
a97db99
merge: preserve concurrent AST fix without protected regressions
seonghobae Oct 1, 2026
8d5fcbf
fix(scanner): ignore empty iterables for shell param in AST finder
seonghobae Oct 1, 2026
2fafe44
fix(scanner): ignore empty iterables for shell param in AST finder
seonghobae Oct 1, 2026
f5c1251
fix(scanner): ignore empty iterables for shell param in AST finder
seonghobae Oct 1, 2026
6cb854c
fix(scanner): restore protected tree and unify rule import
seonghobae Oct 1, 2026
8dcffc8
fix(tests): resolve mixed module imports in injection tests
seonghobae Oct 2, 2026
7ded598
fix(tests): resolve mixed module imports in injection tests
seonghobae Oct 2, 2026
4589c33
fix(tests): resolve mixed module imports in injection tests
seonghobae Oct 2, 2026
2a09340
fix(tests): resolve mixed module imports in injection tests
seonghobae Oct 2, 2026
525ad7d
fix(tests): resolve mixed module imports in injection tests
seonghobae Oct 2, 2026
bed743f
test(scanner): reproduce false empty-bytes shell finding
seonghobae Oct 2, 2026
60cf72e
fix(scanner): treat all false literal shell values as disabled
seonghobae Oct 2, 2026
27ce876
fix(tests): resolve mixed module imports in injection tests
seonghobae Oct 2, 2026
fc9f6f9
fix(tests): resolve mixed module imports in injection tests
seonghobae Oct 2, 2026
7aa7950
fix(tests): resolve mixed module imports in injection tests
seonghobae Oct 2, 2026
5ddaf68
fix(tests): resolve mixed module imports in injection tests
seonghobae Oct 2, 2026
b58989e
fix(tests): resolve mixed module imports in injection tests
seonghobae Oct 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions CHANGELOG.d/1324-python-command-injection-detector.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Python shell-call detection is syntax-aware

- Detect direct or module-qualified `os.system(...)` calls and `subprocess`
calls whose `shell` keyword is not statically false.
- Ignore comments, string literals, assignments, `shell=False`, `shell=0`,
and `shell=None` so non-executable text does not create CRITICAL findings.
- Preserve the legacy regex only as a fail-closed fallback for syntax-invalid
Python and retain exact source offsets across UTF-8 text, Python newline
boundaries, form feeds, and Unicode line separators.
14 changes: 0 additions & 14 deletions CHANGELOG.d/929-workflow-lifecycle-detection.md

This file was deleted.

3 changes: 1 addition & 2 deletions DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ AppGuardrail has extensive rule, scanner, report, release, issue, and scheduler
| Architecture decisions | [`docs/adr/README.md`](docs/adr/README.md) |
| Security reporting | [`SECURITY.md`](SECURITY.md) |
| Release automation | [`docs/release-automation.md`](docs/release-automation.md) |
| GitHub workflow lifecycle detection | [`docs/workflow-lifecycle-detection.md`](docs/workflow-lifecycle-detection.md) |
| Productization roadmap | [`docs/product/2026-07-02-2b-krw-sale-readiness-plan.md`](docs/product/2026-07-02-2b-krw-sale-readiness-plan.md) |
| Agent development rules | [`AGENTS.md`](AGENTS.md) |
| Agent context | [`CLAUDE.md`](CLAUDE.md) |
Expand All @@ -31,4 +30,4 @@ AppGuardrail has extensive rule, scanner, report, release, issue, and scheduler
- **external-engine** — capability delegated to an optional scanner such as Semgrep/Trivy/Bandit/ZAP rather than AppGuardrail's lightweight built-in matcher.
- **evidence-only** — information visible in reports/history but not yet executable as an AppGuardrail detector.

Critical current distinction: PR #911's no-exclusions issue-to-detector registry and executable obligation coverage remain **active-PR**, not protected-branch behavior. Stored-webhook SSRF prevention from PR #924 and bounded built-in detection from PR #910 are **implemented-main** as separate controls; the packaged rule covers its tested Python `set_webhook` persistence patterns and is not a universal SSRF taint-analysis claim.
Critical current distinction: PR #911's no-exclusions issue-to-detector registry and executable obligation coverage remain **active-PR**, not protected-branch behavior. Stored-webhook SSRF prevention from PR #924 and bounded built-in detection from PR #910 are **implemented-main** as separate controls; the packaged rule covers its tested Python `set_webhook` persistence patterns and is not a universal SSRF taint-analysis claim.
Loading
Loading