Security Scan
Performs comprehensive security analysis before PR submission, checking for secrets, vulnerabilities, insecure patterns, and security best practices.
π― Use Case Demo
Scenario: Pre-PR Security Review
Before (Manual Process):
Developer ready to submit PR, tries to remember security checks:
- "Did I accidentally commit any secrets?"
- "Are my dependencies secure?"
- "Is my input validation sufficient?"
- Forgets to check, security issue found in review (or worse, production)
Time: Often skipped, caught late or never
After (With This Skill):
Developer: "Run security scan before I create PR"
Agent Response:
π SECURITY SCAN REPORT βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ π Scan Date: December 20, 2024 π Files Scanned: 12 changed files π Branch: feature/payment-integration βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ π SCAN SUMMARY βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | Category | Status | Issues | |----------|--------|--------| | Secrets Detection | π΄ FAIL | 2 found | | Dependency Vulnerabilities | π‘ WARN | 1 medium | | Input Validation | π΄ FAIL | 3 missing | | SQL Injection | β PASS | 0 found | | XSS Prevention | β PASS | 0 found | | Authentication | β PASS | Properly secured | | Logging Security | π‘ WARN | PII in logs | Overall: π΄ BLOCKED - Fix critical issues before PR βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ π¨ CRITICAL: SECRETS DETECTED βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β MUST FIX BEFORE PR - These will block your commit 1. API Key Detected π Services/PaymentService.cs:34 ```csharp private const string StripeKey = "sk_live_XXXXXXXXXXXXXXXXXXXX";π§ Fix: Move to environment variable or secrets manager
private readonly string _stripeKey = Environment.GetEnvironmentVariable("STRIPE_API_KEY");
- Connection String with Password π appsettings.json:12
π§ Fix: Use Azure Key Vault or environment variables"ConnectionString": "Server=db.prod.com;Password=SuperSecret123!"βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ π΄ INPUT VALIDATION MISSING βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Missing Validation: CreateBooking endpoint π Controllers/BookingsController.cs:45
public async Task<IActionResult> Create([FromBody] BookingRequest request) { // No validation before processing await _service.CreateBooking(request);π§ Fix: Add FluentValidation or DataAnnotations
public async Task<IActionResult> Create([FromBody] BookingRequest request) { if (!ModelState.IsValid) return BadRequest(ModelState);Email Not Validated π Models/BookingRequest.cs:15
public string Email { get; set; } // No validationπ§ Fix: Add email validation attribute
[Required] [EmailAddress] public string Email { get; set; }Numeric Range Not Checked π Models/SearchRequest.cs:8
public int Passengers { get; set; } // Could be negative or hugeπ§ Fix: Add range validation
[Range(1, 9)] public int Passengers { get; set; }βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ π‘ WARNINGS (Recommended Fixes) βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Dependency Vulnerability π¦ System.Text.Json 7.0.2 CVE: CVE-2024-1234 (Medium severity) Fix: Upgrade to 7.0.4
dotnet add package System.Text.Json --version 7.0.4PII in Logs π Services/BookingService.cs:89
_logger.LogInformation($"Booking created for {request.Email}");π§ Fix: Mask or remove PII from logs
_logger.LogInformation($"Booking created for {MaskEmail(request.Email)}");βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β PASSED CHECKS βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β No SQL injection vulnerabilities
- All queries use parameterized statements
- Entity Framework properly configured
β No XSS vulnerabilities
- Output encoding in place
- Content-Security-Policy configured
β Authentication properly implemented
- JWT validation configured
- Endpoints have [Authorize] attributes
β HTTPS enforced
- UseHttpsRedirection() in place
- HSTS configured
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ π ACTION REQUIRED βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Before creating PR, you must:
β‘ Remove hardcoded secrets (2 issues) β‘ Add input validation (3 issues)
Recommended (not blocking): β‘ Update vulnerable dependency β‘ Remove PII from logs
Run "Apply security fixes" to auto-fix where possible.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Result: Potential security breach prevented before code even reaches review
Agent Instructions
When this skill is activated:
-
Secrets Detection:
- Scan for API keys, tokens, passwords
- Check for patterns:
sk_live_,api_key,password= - Look in: source files, config files, .env files
- Check git history for accidentally committed secrets
-
Dependency Vulnerabilities:
- Run
dotnet list package --vulnerable - Check npm audit for Node.js
- Cross-reference with CVE databases
- Run
-
Input Validation:
- Check all API endpoints for validation
- Verify model attributes (Required, Range, etc.)
- Look for raw string inputs without sanitization
-
SQL Injection:
- Look for string concatenation in queries
- Verify parameterized queries usage
- Check raw SQL execution
-
XSS Prevention:
- Check output encoding
- Verify CSP headers
- Look for
@Html.Raw()usage
-
Authentication/Authorization:
- Verify [Authorize] attributes on endpoints
- Check JWT configuration
- Look for authorization bypass patterns
-
Logging Security:
- Check for PII in log statements
- Verify sensitive data not logged
-
Generate Report:
- Categorize by severity
- Provide specific fix recommendations
- Block PR if critical issues found
Example Prompts
- "Run security scan before PR"
- "Check for security vulnerabilities"
- "Are there any hardcoded secrets?"
- "Scan my changes for security issues"
- "Pre-commit security check"
Checks Performed
| Check | Description | Severity | |-------|-------------|----------| | Secrets | API keys, passwords, tokens | π΄ Critical | | SQL Injection | Unsanitized queries | π΄ Critical | | Input Validation | Missing or weak validation | π΄ High | | Dependencies | Known CVEs | π‘ Medium | | XSS | Cross-site scripting | π΄ High | | PII Logging | Personal data in logs | π‘ Medium | | Auth Bypass | Missing authorization | π΄ Critical |
Benefits
| Metric | Before | After | Improvement | |--------|--------|-------|-------------| | Security issues caught | In production | Before PR | 100% earlier | | Time to detect secrets | Days/weeks | Seconds | Immediate | | Developer security knowledge | Variable | Guided | Learning tool | | Security review time | Hours | Minutes | 90% faster |