域名服务器缓存污染(DNS cache pollution),又称域名服务器缓存投毒(DNS cache poisoning),是指一些刻意制造或无意中制造出来的域名服务器封包,把域名指往不正确的IP地址。一般来说,在互联网上都有可信赖的域名服务器,但为减低网络上的流量压力,一般的域名服务器都会把从上游的域名服务器获得的解析记录暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有关域名的局域域名服务器的缓存受到污染,就会把域名内的电脑导引往错误的服务器或服务器的网址。
域名服务器缓存污染可能是因为域名服务器软件的设计错误而产生,但亦可能由别有用心者透过研究开放架构的域名服务器系统来利用当中的漏洞。为防止局域的域名服务器缓存污染除了要定时更新服务器的软件以外,可能还需要人手变更某些设定,以控制服务器对可疑的域名封包作出筛选。
一般来说,一部连上了互联网的电脑都会使用互联网服务供应商提供的域名服务器。这个服务器一般只会服务供应商的客户,通常都会将部分客户曾经请求过的域名暂存起来,这种服务器被称为非权威服务器,其应答称非权威应答。缓存污染攻击就是针对这一种服务器,以影响服务器的使用者或下游服务。
在中国大陆,对所有经过防火长城的在UDP的53端口上的域名查询进行IDS入侵检测,一经发现与黑名单关键词相匹配的域名查询请求,会马上伪装成目标域名的解析服务器返回虚假的查询结果。由于通常的域名查询没有任何认证机制,而且域名查询通常基于无连接不可靠的UDP协议,查询者只能接受最先到达的格式正确结果,并丢弃之后的结果。
对于不了解相关知识的网民来说,由于系统默认使用的ISP提供的域名查询服务器查询国外的权威服务器时即被防火长城污染,进而使其缓存受到污染,因此默认情况下查询ISP的服务器就会获得虚假IP地址;而用户直接查询境外域名查询服务器(比如 Google Public DNS)时有可能会直接被防火长城污染,从而在没有任何防范机制的情况下仍然不能获得目标网站正确的IP地址。
因为TCP连接的机制可靠,防火长城理论上未对TCP协议下的域名查询进行污染,故现在能透过强制使用TCP协议查询真实的IP地址。而现实的情况是,防火长城对于真实的IP地址也可能会采取其它的手段进行封锁,或者对查询行为使用连接重置的方法进行拦截,故能否真正访问可能还需要其它翻墙的手段。
ISP域名劫持
中国的互联网服务提供商经常劫持部分域名,转到自己指定的网站,以提供自己的广告。
以上内容来自于维基百科