-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.websec-ignore
More file actions
64 lines (57 loc) · 4.05 KB
/
Copy path.websec-ignore
File metadata and controls
64 lines (57 loc) · 4.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# ── websec-validator self-scan suppressions ──────────────────────────────────────────────────
# This repo is a security TOOL, so its source legitimately contains attack patterns:
# • the extractors hold the very patterns they detect as illustrative examples
# (a `JWT_SECRET || 'dev-secret'` docstring, a `da2-…` AppSync key shape, an `err.stack`
# regex, `@aws_*` directives, password lookaheads),
# • the tests are deliberately-vulnerable fixtures,
# • the probe + report templates and bundled Semgrep rules ARE attack payloads.
# Self-scanning surfaces those as the detection DEFINITIONS, not as real findings — so we suppress
# them and `websec run .` dogfoods clean. Genuine self-findings (e.g. the real Dockerfile) are left.
#
# IMPORTANT: this file is loaded from the SCANNED repo's root, so it only affects scans of THIS
# repo. A user scanning their own app gets their own `.websec-ignore` (or none) — never this one.
# Format: glob path patterns, or `category:<x>` lines (see findings.load_suppressions).
# Test corpus — intentionally-vulnerable fixtures + tests that reference attack patterns by name.
tests/
# Maintainer's private, GITIGNORED reference material (prior pen-test artifacts + a vendored copy of
# ZAP's own scripts) — not the product, and full of attack patterns by nature. Only present in the
# maintainer's working tree (never committed/shipped), so this keeps a local `websec run .` clean.
base-research/
# Probe + report templates (attack payloads) and bundled Semgrep rules (attack patterns by design).
src/websec_validator/templates/
src/websec_validator/rules/
# Extractor source — each detector's matched patterns appear here as example literals/regexes.
src/websec_validator/extractors/auth.py
# agent_config.py embeds attack-command literals (curl|sh, /dev/tcp, node -e, *_BASE_URL) as detection
# definitions; suppress the SOURCE only. NOT `category:agent-config` — a real poisoned .claude/ config in
# this repo should still surface (unlike the synthetic graphql self-reference below).
src/websec_validator/extractors/agent_config.py
# dependencies.py embeds install-script attack literals (curl|sh, base64 -d, node -e, /dev/tcp) as its
# SUSPICIOUS_LIFECYCLE detection definition; suppress the SOURCE only.
src/websec_validator/extractors/dependencies.py
src/websec_validator/extractors/client_exposure.py
src/websec_validator/extractors/client_integrity.py
src/websec_validator/extractors/surface.py
src/websec_validator/extractors/graphql.py
src/websec_validator/extractors/iac_ci.py
src/websec_validator/extractors/policy_consistency.py
src/websec_validator/extractors/upload_security.py
src/websec_validator/extractors/pii_exposure.py
# Added 2026-07-12: these extractors post-date the list above and hold the same kind of detection
# literals — llm_security.py (the "fail OPEN" guardrail + insecure-output prose it greps for),
# transport_security.py (CORS/SRI/nosniff/ReDoS example strings), authz.py (the `jwtVerify` shape
# it matches). All are analysis-only modules: the web-response finding classes they self-match on
# (content-sniffing, cors, sri, llm-guardrail, redos) cannot occur in code that serves no HTTP.
src/websec_validator/extractors/llm_security.py
src/websec_validator/extractors/transport_security.py
src/websec_validator/extractors/authz.py
# Core engine (not extractors, no HTTP surface): the self-matches here are incidental PROSE, not
# real sinks — findings.py carries `err.stack`/remediation text that trips error-disclosure, and
# both files describe guard "fail OPEN" behavior that trips the llm-guardrail heuristic.
src/websec_validator/findings.py
src/websec_validator/scanners.py
# Briefing renderer uses path-join templating that trips the path-traversal heuristic (not a sink).
src/websec_validator/briefing.py
# The AppSync GraphQL "surface" is detected purely from our own `@aws_*` example strings — no real
# GraphQL server lives in this repo, so the synthetic graphql finding is a self-reference.
category:graphql