security-hardening — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited security-hardening (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Security retrofitted after the fact costs 10× more than security built in. This skill applies a consistent security lens at write-time and review-time — not as an afterthought audit. It covers the OWASP Top 10 patterns that appear most frequently in real deliverables.
| Rule | Example |
|---|---|
| Validate all external input at the system boundary | zod.parse(req.body) before any business logic |
| Parameterize all DB queries — never concatenate user input into SQL | db.query('SELECT * FROM users WHERE id = $1', [id]) |
| Hash passwords with a slow algorithm | bcrypt, argon2 — never MD5, SHA-1, or plain SHA-256 |
| Use environment variables for all secrets | process.env.API_KEY — never hardcoded strings |
| Set security headers | Content-Security-Policy, X-Frame-Options, X-Content-Type-Options |
| Enforce HTTPS | Redirect HTTP → HTTPS; set Secure flag on cookies |
eval(), exec(), or equivalents on user inputBefore reviewing or writing code, map:
Work through the relevant categories for the code in scope:
| # | Category | What to check |
|---|---|---|
| A01 | Broken Access Control | Every endpoint checks auth AND authorisation (not just "is logged in") |
| A02 | Cryptographic Failures | No sensitive data transmitted unencrypted; no weak algorithms |
| A03 | Injection | All SQL/shell/LDAP inputs parameterised; no string concatenation with user input |
| A04 | Insecure Design | Business logic can't be bypassed by manipulating request params |
| A05 | Security Misconfiguration | No default credentials; debug mode off in production; minimal permissions |
| A06 | Vulnerable Components | npm audit / pip-audit run; high/critical findings resolved |
| A07 | Auth Failures | Sessions expire; tokens invalidated on logout; no weak password rules |
| A08 | Software/Data Integrity | Dependencies pinned; no unverified third-party scripts |
| A09 | Logging Failures | Security events logged (login, auth failure, permission denied) — without logging the secret itself |
| A10 | SSRF | Outbound HTTP calls validated against an allowlist; no user-controlled URLs fetched server-side without validation |
For each issue found:
[HIGH] SQL injection risk — user input concatenated into query at api/users.ts:42
[MEDIUM] Missing authorisation check — any authenticated user can access /admin/export
[LOW] Security header X-Frame-Options not set in middleware
[INFO] bcrypt work factor is 10 — consider 12 for new deploymentsSeverity guide:
Run this before any production deployment:
Authentication & Sessions
[ ] Passwords hashed with bcrypt/argon2 (work factor ≥ 12)
[ ] Session tokens expire and are invalidated on logout
[ ] MFA available for admin accounts
Authorisation
[ ] Every endpoint checks both authentication AND authorisation
[ ] No IDOR — IDs in requests are validated as belonging to the requesting user
Input Validation
[ ] All external input validated at the boundary (schema validation)
[ ] File uploads: type checked, size limited, stored outside web root
Data Protection
[ ] No secrets in code, config files, or logs
[ ] PII encrypted at rest if stored
[ ] HTTPS enforced; HSTS header set
Dependencies
[ ] npm audit / pip-audit run with zero high/critical findings
[ ] No packages with known critical CVEs
Infrastructure
[ ] Debug mode / verbose errors disabled in production
[ ] Minimal IAM permissions (least privilege)
[ ] No default credentials on any serviceSecurity review: <filename or scope>
Findings:
[HIGH] <description> — <file>:<line>
[MEDIUM] <description> — <file>:<line>
[LOW] <description> — <file>:<line>
Pre-deployment checklist: ✓ / ✗ (list failed items)
Recommendation: <fix HIGH findings before merging / safe to merge with noted caveats>~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.