Security remediation skill for fixing confirmed or likely SAST findings in source code. Trigger when the user asks to: "fix a vulnerability", "patch this security bug", "remediate SAST findings", "harden this endpoint", "make this auth flow safe", or wants code changes that remove a confirmed security issue while preserving intended behavior. Best used alongside eresus-sast-scanner.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add aibot88/sec_skill_store --skill eresus-remediator --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Eresus Remediator?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-eresus-remediator)More formats (shields.io, HTML) on the badges page.
---
name: eresus-remediator
description: >
Security remediation skill for fixing confirmed or likely SAST findings in source code. Trigger when the user asks to:
"fix a vulnerability", "patch this security bug", "remediate SAST findings", "harden this endpoint", "make this auth flow safe",
or wants code changes that remove a confirmed security issue while preserving intended behavior. Best used alongside eresus-sast-scanner.
metadata:
version: "1.0"
domain: application-security
mode: remediation
---
# SAST Remediation
## Purpose
Turn confirmed or likely security findings into safe, minimal, production-ready code changes.
Prefer root-cause fixes over cosmetic mitigations, preserve legitimate behavior, and reduce the
chance of regressions or bypasses.
## Inputs
This skill works best when at least one of the following is available:
- a finding from `eresus-sast-scanner`
- a security review comment or PR thread
- a vulnerable file/function/endpoint
- a proof-of-concept payload or attack path
If `eresus-sast-scanner` is installed, load the matching vulnerability knowledge file(s) from its
`references/` directory before patching.
---
## Workflow
### Step 1: Reconstruct the Vulnerability Path
Before editing code, confirm:
- the attacker-controlled source
- the transformation path
- the vulnerable sink
- the intended business behavior that must still work after the fix
Do not patch from the label alone. Patch the actual code path.
### Step 2: Choose the Right Fix Layer
Prefer the highest-leverage fix that closes the whole class of issue:
| Problem Type | Preferred Fix |
|--------------|---------------|
| SQL / NoSQL injection | Parameterization, safe query builders, strict allowlists |
| XSS | Context-specific output encoding or safe templating APIs |
| SSRF | Destination allowlists, URL parser validation, egress restrictions |
| Path traversal | Canonicalization plus base-directory enforcement |
| Auth / IDOR | Server-side authorization at object/action boundary |
| CSRF | Framework-native CSRF defense, same-site cookies, token checks |
| File upload | Type/content validation, non-webroot storage, random filenames |
| Serialization / deserialization | Explicit DTOs, allowlisted types, safe parser settings, integrity checks |
| Weak crypto | Modern primitives, strong secrets, secure randomness |
| Race conditions | Atomic operations, locking, compare-and-set, transaction boundaries |
Fix at the sink when possible, but move the fix earlier if many sinks share the same unsafe input path.
### Step 3: Implement a Minimal, Safe Patch
While patching:
- preserve public API behavior unless the insecure behavior itself must change
- prefer framework-native security features over custom regex or denylist logic
- keep validation rules explicit and auditable
- update adjacent code when partial fixes would leave equivalent bypasses
- add concise comments only when the security reason is otherwise non-obvious
### Step 4: Add Verification
Add or update tests when the repo supports them. Cover both:
- the blocked attack path
- the expected legitimate flow
If tests are not practical, still perform a manual reasoning pass that explains why the taint path is now broken.
### Step 5: Re-Review the Fix
Run a short post-fix check:
- Can attacker-controlled data still reach the same sink?
- Did the patch move the problem instead of removing it?
- Does sanitization match the exact output context?
- Did the change accidentally create auth, compatibility, or logging regressions?
### Step 6: Report the Remediation
Summarize:
- what was vulnerable
- what changed
- why the new control is effective
- what residual risk or rollout note remains
---
## Remediation Guardrails
- Do not silence findings with comments, feature flags, or dead-code moves unless the execution path is truly removed.
- Do not replace parameterization with string escaping for query sinks.
- Do not trust client-side validation as the primary fix for a server-side issue.
- Do not add broad denylists when a precise allowlist or safer API exists.
- Do not "fix" IDOR by hiding identifiers in the UI; enforce authorization on the server.
- Do not fix SSRF with substring checks alone; parse and validate the normalized destination.
- Do not keep weak password hashing for backward compatibility without a migration or rehash plan.
- Do not claim a fix is complete if equivalent sibling endpoints remain exploitable.
---
## Output Format
When reporting the remediation, use:
```markdown
# Security Remediation Summary
## Finding
<short description of the original issue>
## Root Cause
<why tainted or untrusted data reached a dangerous operation>
## Fix
<what code changed and which control now blocks exploitation>
## Validation
<tests added, reasoning performed, or manual verification steps>
## Residual Risk
<migration note, rollout concern, or "none identified">
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!