Menulis vulnerability report yang actionable: severity rating, CVSS scoring, reproduction steps, dan remediation guidance untuk developer

Setelah di episode 10 kita menguji file uploads & SSRF, pada episode ini kita membahas output paling penting dari security testing: vulnerability report. Report yang buruk membuat developer tidak bisa memperbaiki; report yang baik mempercepat remediation.
Vulnerability Report
├── Title: Deskripsi singkat & spesifik
├── Severity: Critical/High/Medium/Low/Info
├── CVSS Score: 0.0 - 10.0
├── Affected Component: URL/endpoint/file
├── Description: Apa vulnerability ini dan dampaknya
├── Reproduction Steps: Langkah pasti untuk mereproduksi
├── Evidence: Screenshots, request/response, logs
├── Impact: Apa yang bisa dilakukan attacker
├── Remediation: Cara memperbaiki
├── References: CWE, OWASP, CVE (jika applicable)
└── Classification: CWE-XXX, OWASP Top 10 category| Komponen | Contoh | Score |
|---|---|---|
| Attack Vector (AV) | Network | 0.85 |
| Attack Complexity (AC) | Low | 0.77 |
| Privileges Required (PR) | None | 0.85 |
| User Interaction (UI) | None | 0.85 |
| Scope (S) | Changed | 1.08 |
| Confidentiality (C) | High | 0.56 |
| Integrity (I) | High | 0.56 |
| Availability (A) | None | 0.0 |
| CVSS Range | Severity | Action |
|---|---|---|
| 9.0 - 10.0 | Critical | Fix segera (hari) |
| 7.0 - 8.9 | High | Fix dalam sprint |
| 4.0 - 6.9 | Medium | Fix dalam quarter |
| 0.1 - 3.9 | Low | Fix when possible |
| 0.0 | Info | Awareness |
SQL Injection pada Search Endpoint1. Buka http://localhost:3000
2. Login dengan akun biasa
3. Buka search dengan payload: ' OR 1=1--
4. Perhatikan: semua produk ditampilkan (seharusnya hanya yang match)
5. Submit request: GET /api/products?search=' OR 1=1--
6. Response mengembalikan semua data produk# Request
GET /api/products?search=' OR 1=1-- HTTP/1.1
Host: localhost:3000
Authorization: Bearer eyJhbGciOi...
# Response
HTTP/1.1 200 OK
Content-Type: application/json
[{"id":1,"name":"Apple Juice",...},{"id":2,"name":"Orange Juice",...}]1. Gunakan parameterized queries (prepared statements)
2. Validasi dan sanitize input pengguna
3. Implementasi WAF rules untuk SQL injection
4. Gunakan ORM dengan built-in protectionDO:
├── Spesifik: "SQL injection pada /api/search" bukan "vulnerability found"
├── Reproducible: langkah pasti yang bisa diikuti developer
├── Evidence: sertakan request/response lengkap
├── Actionable: remediation spesifik, bukan generik
└── Prioritas: severity berdasarkan dampak nyata, bukan teori
DON'T:
├── Vague: "ada masalah keamanan"
├── Tanpa reproduction steps
├── Overstate severity untuk menakuti
├── Lupa sertakan references (CWE, OWASP)
└── Report tanpa remediation guidanceTip
Selalu test reproduction steps sebelum mengirim report. Jika developer tidak bisa mereproduksi, report tidak akan diperbaiki.
Buat report untuk vulnerability yang kalian temukan di Juice Shop. Mulai dari yang paling kritis:
# 1. Identifikasi vulnerability terpenting
# 2. Tulis reproduction steps lengkap
# 3. Sertakan request/response evidence
# 4. Berikan remediation guidance
# 5. Assign CVSS scoreDi episode 12 selanjutnya kita akan membahas testing mobile apps — app security testing, intercept HTTPS, storage analysis, dan backup inspection. Sampai jumpa di episode 12!