Skip to content

Commit dd59c19

Browse files
Merge pull request #18 from dreadnode/ads/cap-976-investigate-the-failing-capabilities-github-actions-workflow
fix security scan false positives for web-security skills
2 parents 54a65f2 + 0924b09 commit dd59c19

2 files changed

Lines changed: 16 additions & 7 deletions

File tree

.github/workflows/security-scan.yml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -109,21 +109,20 @@ jobs:
109109
110110
CAPS_JSON='${{ needs.detect-changes.outputs.capabilities }}'
111111
for cap in $(echo "${CAPS_JSON}" | jq -r '.[]'); do
112-
cap_dir="capabilities/${cap}"
113-
if [[ ! -d "${cap_dir}" ]]; then
112+
skills_dir="capabilities/${cap}/skills"
113+
if [[ ! -d "${skills_dir}" ]]; then
114114
continue
115115
fi
116116
117-
skill_count=$(find "${cap_dir}" -name "SKILL.md" -type f 2>/dev/null | wc -l | tr -d ' ')
117+
skill_count=$(find "${skills_dir}" -name "SKILL.md" -type f 2>/dev/null | wc -l | tr -d ' ')
118118
if [[ "${skill_count}" -eq 0 ]]; then
119-
echo "==> ${cap_dir}/ — no skills, skipping"
119+
echo "==> ${skills_dir}/ — no skills, skipping"
120120
continue
121121
fi
122122
123-
echo "==> Scanning ${cap_dir}/ (${skill_count} skills)"
124-
uvx --from cisco-ai-skill-scanner skill-scanner scan-all "${cap_dir}" \
123+
echo "==> Scanning ${skills_dir}/ (${skill_count} skills)"
124+
uvx --from cisco-ai-skill-scanner skill-scanner scan-all "${skills_dir}" \
125125
--recursive \
126-
--lenient \
127126
--use-behavioral \
128127
--policy scan-policy.yaml \
129128
--format summary \

scan-policy.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,21 @@ severity_overrides:
100100
- rule_id: BEHAVIOR_EVAL_SUBPROCESS
101101
severity: MEDIUM
102102
reason: "Security tools legitimately invoke subprocesses for analysis"
103+
# BEHAVIOR_BASH_TAINT_FLOW false-positives on instructional shell snippets
104+
# in SKILL.md where strings such as "unsafe-eval" are parsed with grep.
105+
- rule_id: BEHAVIOR_BASH_TAINT_FLOW
106+
severity: MEDIUM
107+
reason: "Instructional bash snippets in skills can resemble taint flow without executing untrusted input"
103108
# SECRET_GOOGLE_API fires on skills that scan for exposed API keys
104109
# as part of their security analysis (e.g. firebase-apk-scanner).
105110
- rule_id: SECRET_GOOGLE_API
106111
severity: INFO
107112
reason: "Scanner skills contain example API key patterns for detection"
113+
# YARA_command_injection_generic fires on literal exploit payload examples
114+
# embedded in offensive-security SKILL.md files.
115+
- rule_id: YARA_command_injection_generic
116+
severity: MEDIUM
117+
reason: "Offensive security skills intentionally document exploit payload strings in markdown"
108118
# PATH_TRAVERSAL_OPEN fires on tools that read/write files as part of
109119
# their normal audit workflow (e.g. zeroize-audit writing reports).
110120
- rule_id: PATH_TRAVERSAL_OPEN

0 commit comments

Comments
 (0)