Strategi Pencegahan Server Side Request Forgery (SSRF) yang Efektif

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:

MetodeDeskripsi TeknisTingkat Keamanan
Input ValidationGunakan whitelist regex untuk membatasi format URL.Tinggi
Network SegmentationGunakan firewall untuk memblokir akses ke metadata service (169.254.169.254).Sangat Tinggi
Disable RedirectsMatikan fitur follow-redirect pada library HTTP client.Menengah
AuthenticationWajibkan 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

  1. Blokir Metadata Service: Pada lingkungan cloud (AWS, GCP, Azure), pastikan instance tidak dapat mengakses IP metadata (169.254.169.254) melalui aturan firewall egress.
  2. Gunakan Proxy Terisolasi: Arahkan semua request outbound melalui proxy yang memiliki daftar whitelist ketat dan tidak memiliki akses ke jaringan internal.
  3. Terapkan Least Privilege: Pastikan service yang melakukan request outbound tidak memiliki akses ke resource sensitif di dalam jaringan lokal.
  4. 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.