Audit keamanan berbasis standar (OWASP Top 10, OWASP ASVS, ISO/IEC 27001 Annex A) untuk AWCMS-Mini. Gunakan saat diminta "security hardening", audit OWASP/ASVS/ISO, penilaian kepatuhan, atau pengerasan menjelang go-live/audit eksternal. Berbeda dari awcms-mini-security-review (checklist DoD per modul) — skill ini memetakan kontrol ke kerangka standar industri.
Installation
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Audit keamanan berbasis standar (OWASP Top 10, OWASP ASVS, ISO/IEC 27001 Annex A) untuk AWCMS-Mini. Gunakan saat diminta "security hardening", audit OWASP/ASVS/ISO, penilaian kepatuhan, atau pengerasan menjelang go-live/audit eksternal. Berbeda dari awcms-mini-security-review (checklist DoD per modul) — skill ini memetakan kontrol ke kerangka standar industri.
Sumber kebenaran: docs/awcms-mini/20_threat_model_security_architecture.md (STRIDE, kontrol berlapis, trust boundary, §Matrix kepatuhan OWASP/ASVS/ISO 27001 — matrix nyata dengan bukti per baris sudah ditulis di Issue #437, pakai sebagai template/precedent saat audit ulang atau menambah kontrol baru), docs/awcms-mini/10_template_kode_coding_standard.md (guardrail), dan docs/awcms-mini/13_final_master_index_traceability.md (matrix kontrol). Skill ini memetakan kontrol proyek ke kerangka standar; pakai bersama awcms-mini-security-review (checklist per modul) dan subagent awcms-mini-security-auditor.
OWASP Top 10 (2021) → kontrol di base
#
Kategori
Cek utama di AWCMS-Mini
A01
Broken Access Control
ABAC default-deny + deny-overrides (ADR-0004); RLS ENABLE+FORCE (ADR-0003); DB role non-superuser; WHERE id=<tenant> eksplisit pada tabel RLS-free (awcms_mini_tenants); IDOR — cek tiap resource difilter tenant/kepemilikan
A02
Cryptographic Failures
Password argon2id (Bun.password); token sesi opaque (hanya hash disimpan); identifier sensitif value_hash+masked_value; HTTPS di produksi; cookie HttpOnly/Secure/SameSite
A03
Injection
Query hanya via tagged template parametrik Bun.SQL (tak ada string-concat SQL); tx.unsafe/SET LOCAL hanya untuk nilai tervalidasi (assertUuid); validasi input tiap endpoint; output encoding (Astro auto-escape)
Secret hanya env; .env gitignored; CI menolak .env; security:readiness memblokir go-live (RLS FORCE, role bukan superuser); error tanpa stack trace; security response headers (src/lib/security/security-headers.ts, Issue #437 — X-Content-Type-Options/X-Frame-Options/Referrer-Policy/Permissions-Policy/HSTS prod-gated) + CSP native Astro security.csp (astro.config.mjs) di setiap response
Login lockout per-identitas setelah N gagal; pesan generik anti-enumeration; TTL sesi; revoke saat logout; rate limiting sumber+tenant (src/lib/security/rate-limit.ts, Issue #437 — menahan rotasi loginIdentifier dari sumber sama, reuse untuk endpoint publik/mahal lain via awcms-mini-integration). Anti-enumeration itu dua sisi (Issue #840, ASVS V2.2.1/WSTG-IDNT-04): body DAN waktu. Tiap deny yang bergantung pada apakah identitas ada wajib kolaps ke 401 AUTH_INVALID_CREDENTIALS + pesan identik (locked/password_login_disabled dulu bocor), DAN jalur "identitas tak ada" wajib tetap membayar argon2id (verifyPasswordOrDummy) — melewatinya terukur 4,13 ms vs 80,13 ms (~19x), oracle satu-request yang jauh lebih murah daripada beda body mana pun. Saat mengaudit endpoint auth publik baru: cek KEDUANYA, jangan berhenti di pesan errornya.
Audit high-risk + decision log + correlation ID (otomatis di meta.correlationId untuk semua endpoint /api/* sejak Issue #447, lihat awcms-mini-observability); log terstruktur; redaksi secret/PII wajib sebelum log; retensi/purge audit event (730 hari default) + extension point untuk export ke SIEM eksternal (Issue #447)
A10
SSRF
URL provider dari env tepercaya, bukan input user; provider di luar transaksi (ADR-0006)
OWASP ASVS (L1/L2 relevan)
V2 Auth — hashing modern, lockout, session fixation dicegah (token baru saat login), logout mencabut sesi.
V4 Access Control — default deny, cek per-request (bukan sekali), RLS defense-in-depth, tak ada IDOR.
V5 Validation/Encoding — validasi tiap input, output encoding, CSRF via Astro checkOrigin (wajib Content-Type pada mutation).
V7 Error/Logging — error aman tanpa detail internal; log tanpa data sensitif.
V9 Communications — TLS di produksi (HSTS Strict-Transport-Security prod-gated, Issue #437); HMAC untuk kanal mesin-ke-mesin (sync).
V12 Files — checksum diverifikasi; path/objek tak dari input tak tepercaya.
V14 HTTP Security Configuration — CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, HSTS (Issue #437, src/lib/security/security-headers.ts + astro.config.mjssecurity.csp). Gotcha CSP nyata: nonce per-request dihapus diam-diam oleh compiler Astro dari atribut is:inline; hash SHA-256 manual untuk satu skrip yang diketahui bisa melewatkan skrip/style lain yang Astro inline per-komponen tanpa diminta — verifikasi CSP wajib pakai browser sungguhan (headless-Chrome/CDP), curl tidak bisa mendeteksi pelanggaran CSP karena tak mengeksekusi JS/CSS.
ISO/IEC 27001:2022 Annex A (kontrol yang relevan ke kode)
A.5.15 access control · A.5.17 authentication info · A.8.2 privileged access (DB role least-privilege) · A.8.5 secure authentication · A.8.12 data leakage prevention (masking/redaction) · A.8.15 logging · A.8.16 monitoring (log terstruktur + extension point setLogSink/setAuditExportHook sejak Issue #447 — titik pemasangan SIEM eksternal, BUKAN implementasi SIEM nyata, itu tetap di luar cakupan base generik ini, lihat awcms-mini-observability) · A.8.24 cryptography · A.8.28 secure coding (guardrail doc 10) · A.8.31 separation of environments. Sisanya (kebijakan, personel, fisik) di luar cakupan kode base.
Cara kerja
Petakan tiap item ke bukti nyata di repo (query DB, panggilan fungsi domain, grep file) — bukan asumsi; pola sama seperti scripts/security-readiness.ts.
Tandai: terpenuhi / gap / di luar scope base. Temuan critical memblokir go-live.
Prioritaskan gap berdasarkan dampak (STRIDE/EoP & Info-disclosure paling tinggi).
Output
Matrix kepatuhan (kategori → status → bukti/lokasi → remediasi) + daftar temuan berperingkat critical→low + saran patch. Jalankan bun run security:readiness sebagai gate objektif.
Skill terkait
awcms-mini-security-review (checklist DoD per modul), awcms-mini-abac-guard, awcms-mini-audit-log, awcms-mini-observability (correlation ID, retensi, extension point A.8.16), awcms-mini-integration (rate limiting reuse), awcms-mini-sensitive-data, awcms-mini-sync-hmac, awcms-mini-production-preflight; subagent awcms-mini-security-auditor.