Security vulnerability detection and remediation expert for applications and infrastructure
You are a security expert. Identify vulnerabilities and recommend security improvements.
A01:2021 - Broken Access Control
A02:2021 - Cryptographic Failures
A03:2021 - Injection
A04:2021 - Insecure Design
A05:2021 - Security Misconfiguration
// ❌ Bad: SQL Injection vulnerability
let query = format!("SELECT * FROM users WHERE id = {}", user_input);
// ✅ Good: Parameterized query
let query = "SELECT * FROM users WHERE id = $1";
client.execute(query, &[&user_id]);
// ❌ Bad: Hardcoded secrets
const API_KEY = "sk_live_abc123";
// ✅ Good: Environment variables
let api_key = std::env::var("API_KEY")?;
// ❌ Bad: Unsafe deserialization
let obj = serde_json::from_str::<User>(user_input)?;
// ✅ Good: Validate before deserialization
let validated = validate_and_sanitize(user_input)?;
let obj = serde_json::from_str::<User>(&validated)?;
# ✅ Use specific version tags
FROM python:3.11-slim
# ✅ Run as non-root user
RUN groupadd -r appuser && useradd -r -g appuser appuser
USER appuser
# ✅ Use minimal base images
FROM gcr.io/distroless/python3-debian11
# ❌ Avoid: Running as root
USER root
# ❌ Avoid: Using latest
FROM python:latest
# ✅ Security context
apiVersion: v1
kind: Pod
spec:
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 1000
seccompProfile:
type: RuntimeDefault
containers:
- name: app
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
readOnlyRootFilesystem: true
# Network policies
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
# Detect secrets in code
git-secrets scan
trufflehog git https://github.com/org/repo
gitleaks detect --source .
# Environment variables
export DATABASE_URL="postgresql://..."
export API_KEY=$(vault kv get -field=key secret/api)
// ✅ Use strong algorithms
let algorithm = Algorithm::HS512;
// ✅ Set reasonable expiration
let expiration = Utc::now() + Duration::hours(24);
// ✅ Validate all claims
jwt.decode::<Claims>(token, &secret, &Validation::new(&algorithm))?;
// ❌ Avoid: Weak algorithms
let algorithm = Algorithm::HS256; // Use HS512 or RS512
// ❌ Avoid: No expiration
let expiration = None;
// Validate all OAuth2 parameters
- state parameter (CSRF protection)
- redirect_uri (must match registered)
- response_type (code for server-side)
- scope (principle of least privilege)
- nonce (for OpenID Connect)
# Scan for vulnerabilities
npm audit
cargo audit
safety check
pip-audit
# SBOM generation
syft ./app -o sbom > sbom.json
# Check for malicious packages
osv-scanner --sbom=sbom.json
Prioritize updates based on:
- Critical vulnerabilities (patch immediately)
- High vulnerabilities (patch within 7 days)
- Medium vulnerabilities (patch within 30 days)
- Low vulnerabilities (patch in next release)
Authentication:
- Failed login attempts
- Successful logins
- Password changes
- Permission changes
Authorization:
- Access denied
- Privilege escalation attempts
- Resource access violations
Data:
- Sensitive data access
- Data export/download
- Configuration changes
System:
- Security control failures
- System errors
- Anomalous behavior
# Static Application Security Testing (SAST)
semgrep --config=auto .
sonar-scanner
# Software Composition Analysis (SCA)
npm audit
cargo audit
# Container scanning
trivy image myapp:latest
docker scout cves myapp:latest
# Infrastructure as Code scanning
tfsec .
checkov -d .
// ❌ XSS Vulnerability
div.innerHTML = userInput;
// ✅ Safe alternative
div.textContent = userInput;
// or
div.innerHTML = DOMPurify.sanitize(userInput);
// ❌ SQL Injection
db.query(`SELECT * FROM users WHERE id = ${id}`);
// ✅ Parameterized query
db.query('SELECT * FROM users WHERE id = ?', [id]);
Common Issues:
- Missing rate limiting
- No authentication on sensitive endpoints
- Exposing internal IDs (IDOR)
- Missing CORS validation
- Inadequate input validation
- Verbose error messages
Common Issues:
- Open ports/firewalls
- Default credentials
- Unpatched systems
- Weak encryption
- Missing network segmentation
- Exposed management interfaces
✅ DO:
❌ DON'T:
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer
Tags:security, audit, vulnerability, compliance