BIND8安全漏洞分析.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
BIND8安全漏洞分析 对BIND几个缺陷的分析 综述 现在随着In ternet的日益普及,而In ternet非常依赖于域名服务(DNS )。在RFC845中 对域名服务作了如下定义:一个迭代的分布式数据库系统,它为 In ternet操作提供了基本的 信息,例如:域名IP地址的相互转换, 邮件处理信息。BIND(Berkeley Inetnet Name Domain, 伯克利In ternet域名是一种使用最广的域名系统。它有安全缺陷对 In ternet无疑于是一场灾 难。 2001 年月 29 日,Network Associates of California 发表了一个报告,指出了 BIND 最近出现 的四个安全缺陷。其中有两个是关于缓冲区溢出,可以使攻击者关闭 DNS或者获得root权 限,一个叫做” TSIG bug”,影响BIND8,另一个是叫 “complain bug的缓冲区溢出缺陷,影 响BIND4。其余两个一个叫做 ” infoleak影响BIND4和BIND8,另一个叫做” complain bug 格式化字符串缺陷, 只影响BIND4。本文将着重讲述infoleak和TSIG bug。其中,infoleak bug 不能直接用来进行攻击,但是它可以泄露栈的信息,甚至使攻击者得到 BIND运行时的内存 布局,为使用 TSIG进行攻击创造了便利。这恐怕也是最近两个蠕虫: lion和adore都使用 BIND的漏洞进行传播的主要原因之一。 细节 1.i nfoleak infoleak bug是由Claudio Musmarra发现的,最早在 CERT安全建议 CA-2001-02对这个 BUG进行了报道。它使攻击者能够直接得到 named程序栈祯的信息,从而直接计算出进行 单字节缓冲区溢出所需要的信息,大大增加了攻击的成功率。 程序执行时,在栈中保存了程序运行的内部变量和函数的局部变量, 以及函数调用的返回地 址等信息。infoleak bug可以使攻击者直接读出在栈中的这些信息,甚至程序运行时的内存 布局。通过向运行有这个缺陷的 BIND版本的DNS服务器发送一个特制的查询包,就可以 达成上述目的。 所谓特制的查询包就是向一个合法的很大的 IQUERY(反向查询)查询包。向一个运行 BIND的DNS服务器发出一个合法的 IQUERY请求,DNS服务器把应答记录放在这个查询 包之后返回。应答包括一个域名、类型 (type)、类别(class)和ttl(包的生存时间)。在构造这个 反向查询包时,只要使域名对 named程序的dn_skipname()函数是合法的就可以了。把这个 反向查询包的数据长度设置为一个和很大的数值,就会是应答记录超出缓冲区的边界。 named程序的req_iquery()函数会发现这个反向查询包非法,并且返回一个指示错误的字符 串。不幸的是,它在检查是否有错误时, 不管反向查询包的数据区有多长, 首先把指向包尾 的指针cp向后推,这样很可能使 cp指针超出了缓冲区的边界。从 req_iquery()函数返回后, ns_req()函数就会发出大小是 cp-msg(指向缓冲区的头)个字节含有错误信息的应答包。如果 这个应答包已经超出了缓冲区的大小,就会包含 named程序当前栈祯的信息如 ebp等等, 然后攻击者就可以使用 TSIG安全缺陷进行单字节缓冲区溢出攻击了。 因为相对于TSIG安全缺陷关于infoleak的分析资料较少,所以我将以 bind-8.2为例对 infoleak进行分析。BIND在查询包小于 512个字节时,使用 UDP/53端口接受数据(更详细 的信息请参考TSIG部分),具体接受数据的函数就是 datagram_read(),以下是datagram_read() 函数的相关源代码 static void datagram_read(evC on text lev, void *uap, int fd, int evmask) { in terface *ifp = uap; struct sockaddr_i n from; int from」en = sizeof from; int n, nu dp; union { HEADER h; /* Force alignment of . */ buf u_char buf[PACKETSZ+1]; } u; dispatch_message(u.buf, n, PACKETSZ, NULL, from, fd, ifp); if (++nudp goto more; } 这时,栈的布局如下: | | |返回地址| |ebp | 各个局部变量| |u.buff[513] | |u.buff[512] |

文档评论(0)

尐丶丑 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档