Security Rules¶
Flag security-sensitive code changes and potential vulnerabilities.
Rules in this Category¶
| Rule Name | Label | Severity | Description |
|---|---|---|---|
security-change |
security-change |
๐ด High | Changes in security-sensitive areas |
risky-code |
risky-code |
๐ด High | Dangerous code patterns detected |
security-change¶
Detects changes in security-sensitive code areas.
Detection Logic¶
Flags changes to files/directories containing:
auth/authenticationlogin/logoutjwt/tokenoauth/samlcrypto/encryptionpassword/credentialsession/cookiesecurity/permission
Use Cases¶
- ๐ Require security team review
- ๐ Extra scrutiny for auth changes
- ๐ Compliance requirements
- ๐ Audit trail for sensitive changes
Examples¶
Changed Files:
Result: ๐ด security-change label applied
Changed Files:
Result: ๐ด security-change label applied
Configuration¶
Workflow Integration¶
Require security team review:
jobs:
label:
uses: workflow-kit/pr-auto-labeler/.github/workflows/pr-auto-labeler.yml@latest
with:
enabled_rules: '["security-change"]'
notify-security-team:
needs: label
if: contains(github.event.pull_request.labels.*.name, 'security-change')
runs-on: ubuntu-latest
steps:
- name: Notify Security Team
uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
...context.repo,
issue_number: context.issue.number,
body: '๐ **Security Review Required** โ @security-team please review'
})
risky-code¶
Detects potentially dangerous code patterns in diffs.
Detection Patterns¶
Flags these risky APIs and patterns:
| Pattern | Risk | Reason |
|---|---|---|
eval(...) |
๐ด Critical | Arbitrary code execution |
new Function(...) |
๐ด Critical | Dynamic code generation |
child_process |
๐ด High | Shell command execution |
exec(...) / spawn(...) |
๐ด High | Process spawning |
dangerouslySetInnerHTML |
๐ก Medium | XSS vulnerability |
document.write(...) |
๐ก Medium | DOM manipulation |
crypto.createCipher |
๐ก Medium | Deprecated crypto API |
Use Cases¶
- ๐จ Block dangerous patterns
- ๐จ Security review required
- ๐จ Code audit needed
- ๐จ Alternative solution suggested
Examples¶
Result: ๐ด risky-code label applied
Result: ๐ด risky-code label applied
Result: ๐ด risky-code label applied
Configuration¶
Automated Blocking¶
Block PRs with risky code using GitHub Actions:
jobs:
label:
uses: workflow-kit/pr-auto-labeler/.github/workflows/pr-auto-labeler.yml@latest
with:
enabled_rules: '["risky-code"]'
block-risky-code:
needs: label
if: contains(github.event.pull_request.labels.*.name, 'risky-code')
runs-on: ubuntu-latest
steps:
- name: Block PR
run: |
echo "๐ซ Risky code pattern detected - PR blocked"
exit 1
Combined Security Configuration¶
Recommended Setup¶
Security-First Workflow¶
Complete security-focused configuration:
name: Security Checks
on:
pull_request:
types: [opened, synchronize, reopened]
permissions:
contents: read
pull-requests: write
jobs:
security-labels:
runs-on: ubuntu-latest
uses: workflow-kit/pr-auto-labeler/.github/workflows/pr-auto-labeler.yml@latest
with:
enabled_rules: '[
"security-change",
"risky-code",
"potential-secret-leak"
]'
enable_debug: true
security-scan:
needs: security-labels
if: |
contains(github.event.pull_request.labels.*.name, 'security-change') ||
contains(github.event.pull_request.labels.*.name, 'risky-code')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run security scan
run: npm run security:scan
require-review:
needs: security-labels
if: |
contains(github.event.pull_request.labels.*.name, 'security-change') ||
contains(github.event.pull_request.labels.*.name, 'risky-code')
runs-on: ubuntu-latest
steps:
- name: Request security review
uses: actions/github-script@v7
with:
script: |
await github.rest.pulls.requestReviewers({
...context.repo,
pull_number: context.issue.number,
reviewers: ['security-lead'],
team_reviewers: ['security-team']
})
Best Practices¶
Security Do's
โ
Always enable both security rules
โ
Require manual review for security labels
โ
Use branch protection for security changes
โ
Run automated security scans
โ
Document security decisions in PR comments
โ
Maintain a security incident response plan
Security Don'ts
โ Never bypass security review
โ Don't disable security rules to "move faster"
โ Don't merge without security team approval
โ Don't ignore risky-code warnings
โ Don't use eval() or similar patterns
Troubleshooting¶
False positives?
If legitimate code triggers risky-code:
- Document why the pattern is necessary in PR description
- Add security review comments
- Consider safer alternatives
- If no alternative exists, get explicit security team approval
Pattern not detected?
Enable debug mode to see pattern matching:
Check the workflow logs for pattern analysis results.
Related Rules¶
- potential-secret-leak ๐ โ Detect leaked secrets
- risky-migration ๐๏ธ โ Database security
- test-missing ๐งช โ Ensure security tests