MobSF, Server-Side Request Forgery (SSRF), CVE-2023-XXXX (Critical)

The vulnerability in MobSF’s `valid_host()` function arises due to improper DNS rebinding protection. The function checks host validity by resolving the domain once using socket.gethostbyname(), but it fails to revalidate subsequent requests, allowing attackers to bypass SSRF protections via DNS rebinding.
An attacker crafts a malicious domain that initially resolves to a whitelisted IP (e.g., 1.1.1.1) but later rebinds to a restricted IP (e.g., 127.0.0.1). The initial check passes, but subsequent requests access internal services. The PoC demonstrates this by generating a domain that changes resolution after the first lookup, enabling SSRF exploitation.

DailyCVE Form:

Platform: MobSF
Version: Pre-commit ae34f7c
Vulnerability: SSRF via DNS Rebinding
Severity: Critical
Date: 2023-XX-XX

What Undercode Say:

Exploit:

malicious_host = "attacker-controlled.rebind.domain"
valid, ip = valid_host(malicious_host) Initial resolve: 1.1.1.1
time.sleep(1)
internal_ip = socket.gethostbyname(malicious_host) Rebinds to 127.0.0.1

Protection:

1. Revalidation:

def safe_valid_host(host):
valid, ip = valid_host(host)
if valid:
new_ip = socket.gethostbyname(host) Re-resolve
if new_ip != ip:
return False, None
return valid, ip

2. DNS Cache:

Flush DNS cache (Linux):
sudo systemd-resolve --flush-caches

3. Network Hardening:

Block outbound DNS to untrusted servers
iptables -A OUTPUT -p udp --dport 53 -j DROP

Analytics:

  • Attack Vector: Network
  • Complexity: Low
  • CVSS Score: 9.6 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)

References:

References:

Reported By: https://github.com/advisories/GHSA-fcfq-m8p6-gw56
Extra Source Hub:
Undercode

Join Our Cyber World:

💬 Whatsapp | 💬 TelegramFeatured Image

Scroll to Top