tinyhumansai/openhuman · error
DNS rebinding blocked: '{host}' resolved to private/local ad
Error message
DNS rebinding blocked: '{host}' resolved to private/local address {ip_str} What it means
DNS rebinding defense: the hostname passed the textual checks, but at least one resolved IP is private or local, meaning the domain could be a rebinding front for internal infrastructure; every such resolution causes the whole request to be blocked.
Source
Thrown at src/openhuman/tools/impl/network/url_guard.rs:140
if host.parse::<std::net::IpAddr>().is_ok() {
return Ok(url);
}
let port = extract_port(&url)?;
log::debug!("[url_guard] resolving DNS for host={host} port={port}");
let addrs = resolver(host.clone(), port).await?;
if addrs.is_empty() {
anyhow::bail!("DNS resolution returned no addresses for '{host}'");
}
log::debug!("[url_guard] DNS resolved host={host} addrs={}", addrs.len());
for addr in &addrs {
let ip_str = addr.to_string();
if is_private_or_local_host(&ip_str) {
log::debug!("[url_guard] DNS rebinding blocked host={host} resolved_ip={ip_str}");
anyhow::bail!(
"DNS rebinding blocked: '{host}' resolved to private/local address {ip_str}"
);
}
}
Ok(url)
}
async fn resolve_host_ips(host: String, port: u16) -> anyhow::Result<Vec<IpAddr>> {
let log_host = host.clone();
tokio::task::spawn_blocking(move || {
(host.as_str(), port)
.to_socket_addrs()
.map_err(|e| {
log::debug!("[url_guard] DNS resolution failed host={host} port={port} error={e}");
anyhow::anyhow!("DNS resolution failed for '{host}': {e}")
})
.map(|iter| iter.map(|addr| addr.ip()).collect())View on GitHub (pinned to 7491200858)
Solutions
- Use a host whose DNS records point only at public addresses
- If this is your own domain, remove private/local A or AAAA records from it
- Do not attempt to reach internal services through http_request
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at src/openhuman/tools/impl/network/url_guard.rs:140 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17).
Data as JSON: /api/errors/c6702ace9f358805.
Report an issue: GitHub.