There are two frameworks you can use to write better recommendations:
- IPDRR
- Security Design Principles
IPDRR
Protect - How to protect the application by mitigating or remediating the vulnerability?
Detect - How to detect if this vulnerability is being exploited in the run time? How to detect past evidences of exploitation?
Respond - How to respond once you have detected the breach?
Recover - How to recover from the breach and get back in to usual business?
Security Design Principles
When in doubt, look at the security-issue from a design standpoint. Then find a match from the table below, and expand on the idea.
| Bad | Good |
|---|---|
| Spoofing | Authentication |
| Tampering | Integrity |
| Repudiation | Accountability |
| Information Disclosure | Confidentiality |
| Denial Of Service | Availability |
| Elevation Of Privilege | Authorization |
| Negative Security Model | Positive Security Model |
| Single Security Point | Defense In-Depth |
| Fail Open | Fail Close |
| Great Privilege | Least Privilege |
| Closed Design | Open Design |
| Security Through Obscurity | Keep It Simple |
| Ignore Intrusions | Detect Intrusions |
| Opt-in Security | Secure Defaults |
| Trust Everything | Trust Only You |
| Trust Everything | Zero Trust |
| Single Point Of Failure | Compartmentalize |
| Assume The Best | Assume The Worst |
| Untrusted Input | Input Validation |
| Insecure Randomness | Cryptographically Secure Randomness |
| Misconfiguration | Configuration Review |
| TOCTOU | Lock Before Check |
| Weak Passwords | Password Quality Rules |
| Cleartext storage | Encrypted storage |
| Automated Attacks | Rate Limiting |
| Block-list | Allow-list |
| Cleartext Communication | Encrypted Communication |
Checklist
- Provide actionable instructions
- Be reasonable - burn not your house to fright the mouse away
- Provide or link sample secure code, configurations, etc.
- Link to corresponding sections in hardening guidelines
- Provide instructions to verify a secure implementation
- Provide alternative methods to mitigate vulnerabilities