Back to skills

Security Scanner

Comprehensive security scanner for vulnerabilities, hardcoded secrets, and OWASP Top 10 issues

3 stars
0 votes
0 copies
0 views
Added 12/19/2025
toolsjavascriptpythonrustgojavabashsqlexpressawsgit

Works with

api

Install via CLI

$openskills install GLINCKER/claude-code-marketplace
Download Zip
Files
SKILL.md
---
name: security-scanner
description: Comprehensive security scanner for vulnerabilities, hardcoded secrets, and OWASP Top 10 issues
allowed-tools: ["Read", "Grep", "Glob", "Bash"]
version: 1.0.0
author: GLINCKER Team
license: Apache-2.0
keywords: [security, vulnerability, owasp, secrets, scanning]
---

# Security Scanner

Comprehensive security analysis detecting hardcoded secrets, SQL injection, XSS, insecure dependencies, and OWASP Top 10 vulnerabilities.

## What This Skill Does

- Scans for hardcoded secrets (API keys, passwords, tokens)
- Detects SQL injection vulnerabilities
- Finds XSS attack vectors
- Checks insecure dependencies
- Identifies authentication/authorization flaws
- Reviews CORS and CSP configurations
- Checks for insecure cryptography

## Instructions

### Phase 1: Secret Detection

Search for common secret patterns:

```bash
# API Keys
Grep for patterns:
- AWS: AKIA[0-9A-Z]{16}
- GitHub: ghp_[0-9a-zA-Z]{36}
- Slack: xox[baprs]-[0-9]{10,13}-[0-9a-zA-Z]{24,}
- Stripe: sk_live_[0-9a-zA-Z]{24}
- Private keys: -----BEGIN.*PRIVATE KEY-----

# Passwords
- password\s*=\s*["'][^"']+["']
- DB connection strings
- Hardcoded credentials
```

**Example findings**:
```
HIGH: Hardcoded AWS key found
File: src/config.js:12
Pattern: const AWS_KEY = "AKIAIOSFODNN7EXAMPLE"
Risk: Exposed AWS credentials
Fix: Use environment variables or secrets manager
```

### Phase 2: Injection Vulnerabilities

**SQL Injection**:
```python
# BAD: String concatenation
query = "SELECT * FROM users WHERE id = " + user_id

# GOOD: Parameterized query
query = "SELECT * FROM users WHERE id = ?"
```

**Command Injection**:
```javascript
// BAD: Direct execution
exec(`ls ${userInput}`)

// GOOD: Sanitized input
execFile('ls', [sanitize(userInput)])
```

**XSS Detection**:
```javascript
// BAD: innerHTML with user input
element.innerHTML = userInput

// GOOD: textContent or sanitize
element.textContent = userInput
// Or use DOMPurify
element.innerHTML = DOMPurify.sanitize(userInput)
```

### Phase 3: Dependency Vulnerabilities

```bash
# Check for vulnerable dependencies
npm audit
pip-audit
cargo audit

# Generate report
npm audit --json > audit-report.json
```

### Phase 4: OWASP Top 10 Checks

1. **Broken Access Control**
   - Missing authorization checks
   - Insecure direct object references
   - Exposed admin endpoints

2. **Cryptographic Failures**
   - Hardcoded encryption keys
   - Weak algorithms (MD5, SHA1)
   - Unencrypted sensitive data

3. **Injection**
   - SQL, NoSQL, OS command, LDAP injection
   - Unsanitized user input

4. **Insecure Design**
   - Missing rate limiting
   - No CSRF protection
   - Weak session management

5. **Security Misconfiguration**
   - Debug mode in production
   - Default credentials
   - Unnecessary services enabled

## Scan Report Format

```markdown
# Security Scan Report

**Scan Date**: 2025-01-13
**Project**: myapp
**Total Issues**: 12

## Critical (2)
1. Hardcoded AWS credentials
   - File: config/aws.js:5
   - Risk: Full AWS account compromise
   - Fix: Use AWS IAM roles or environment variables

2. SQL Injection vulnerability
   - File: api/users.js:45
   - Code: `SELECT * FROM users WHERE id = ${userId}`
   - Fix: Use parameterized queries

## High (5)
3. XSS vulnerability in search
   - File: components/Search.jsx:23
   - Risk: Arbitrary JavaScript execution
   - Fix: Sanitize user input with DOMPurify

4. Missing authentication on /admin endpoint
   - File: routes/admin.js
   - Risk: Unauthorized access to admin functions
   - Fix: Add authentication middleware

## Medium (3)
5. Weak CORS configuration
   - File: server.js:10
   - Issue: CORS set to *
   - Fix: Whitelist specific domains

## Low (2)
6. Console.log in production
   - Multiple files
   - Risk: Information disclosure
   - Fix: Remove or use proper logging

## Recommendations
1. Implement secrets management (AWS Secrets Manager, Vault)
2. Add input validation library (joi, express-validator)
3. Enable Content Security Policy
4. Implement rate limiting
5. Add security headers (helmet.js)
```

## Auto-Fix Suggestions

```javascript
// Before (Vulnerable)
const query = `SELECT * FROM users WHERE email = '${email}'`;

// After (Fixed)
const query = 'SELECT * FROM users WHERE email = ?';
db.execute(query, [email]);
```

## Best Practices

1. **Never commit secrets**: Use .env files (in .gitignore)
2. **Sanitize all input**: Treat all user input as untrusted
3. **Use prepared statements**: Prevent SQL injection
4. **Implement CSP**: Mitigate XSS attacks
5. **Regular dependency updates**: Fix known vulnerabilities
6. **Principle of least privilege**: Minimal permissions

## Tool Requirements

- **Read**: Examine source code
- **Grep**: Pattern matching for vulnerabilities
- **Glob**: Find all relevant files
- **Bash**: Run security tools (npm audit, etc.)

## Examples

### Example 1: Quick Scan

**User**: "Scan my code for security issues"

**Output**:
- 3 Critical: Hardcoded secrets
- 5 High: SQL injection, XSS
- 2 Medium: CORS misconfiguration
- Auto-fix suggestions provided

### Example 2: Dependency Audit

**User**: "Check for vulnerable dependencies"

**Output**:
- 15 vulnerabilities found
- 10 fixable with `npm audit fix`
- 5 require manual updates

## Changelog

### Version 1.0.0
- Secret detection
- Injection vulnerability scanning
- OWASP Top 10 checks
- Dependency auditing
- Auto-fix suggestions

## Author

**GLINCKER Team**
- Repository: [claude-code-marketplace](https://github.com/GLINCKER/claude-code-marketplace)

Comments (0)

No comments yet. Be the first to comment!