Inti Pencegahan SSRF
Server Side Request Forgery (SSRF) terjadi ketika penyerang memaksa aplikasi server untuk mengirim permintaan HTTP ke target yang tidak diinginkan, baik internal maupun eksternal. Pencegahan mutlak dilakukan dengan menerapkan Zero Trust Architecture pada setiap input yang memicu request keluar (outbound request). Strategi utama meliputi validasi input yang ketat, penggunaan whitelist domain, dan isolasi jaringan (network segmentation).
Strategi Mitigasi Teknis
Implementasi pertahanan harus dilakukan di level aplikasi dan infrastruktur. Berikut adalah tabel matriks strategi pencegahan SSRF:
| Metode | Deskripsi Teknis | Tingkat Keamanan |
|---|---|---|
| Input Validation | Gunakan whitelist regex untuk membatasi format URL. | Tinggi |
| Network Segmentation | Gunakan firewall untuk memblokir akses ke metadata service (169.254.169.254). | Sangat Tinggi |
| Disable Redirects | Matikan fitur follow-redirect pada library HTTP client. | Menengah |
| Authentication | Wajibkan autentikasi untuk setiap request internal. | Tinggi |
Implementasi Kode (Contoh Python)
Hindari penggunaan input pengguna secara langsung dalam fungsi request. Gunakan whitelist untuk membatasi domain yang diizinkan.
import re
from urllib.parse import urlparse
ALLOWED_DOMAINS = ['api.trusted-service.com', 'assets.example.com']
def is_safe_url(url):
parsed = urlparse(url)
return parsed.netloc in ALLOWED_DOMAINS
# Penggunaan
user_input = "http://internal-server.local/admin"
if is_safe_url(user_input):
# Lakukan request
pass
else:
raise ValueError("Domain tidak diizinkan")Langkah-Langkah Pengamanan Infrastruktur
- Blokir Metadata Service: Pada lingkungan cloud (AWS, GCP, Azure), pastikan instance tidak dapat mengakses IP metadata (169.254.169.254) melalui aturan firewall egress.
- Gunakan Proxy Terisolasi: Arahkan semua request outbound melalui proxy yang memiliki daftar whitelist ketat dan tidak memiliki akses ke jaringan internal.
- Terapkan Least Privilege: Pastikan service yang melakukan request outbound tidak memiliki akses ke resource sensitif di dalam jaringan lokal.
- Validasi Respon: Jangan pernah menampilkan konten mentah dari hasil request outbound kepada pengguna. Lakukan sanitasi atau parsing data terlebih dahulu.
Troubleshooting dan Audit
Lakukan audit berkala dengan melakukan fuzzing pada parameter yang menerima URL. Gunakan alat seperti Burp Suite atau OWASP ZAP untuk mensimulasikan serangan SSRF terhadap endpoint aplikasi Anda. Jika aplikasi memerlukan akses ke resource internal, gunakan mekanisme autentikasi berbasis token (seperti mTLS) daripada mengandalkan IP-based trust.