收藏该文写在前面
这个漏洞,应该不是Stefan Esser发现的,应该是Stefan Esser看到了github上的commit才随藤摸瓜找到了这个漏洞,看来关注更新的确是一个好习惯啊。
正文
漏洞存在于DNS TXT记录解析这个功能之中。Stefan Esser在github的一个代码提交中发现了这个漏洞。当PHP程序运行dns_get_record()的时候,恶意的服务器或者是进行中间人攻击的黑客可以利用这个漏洞执行任意代码。
产生漏洞的代码存在于ext/standard/dns.c,可以看到代码之中加入了针对于长度的判断。
- while (ll < dlen) {
- n = cp[ll];
- + if ((ll + n) >= dlen) {
- + // Invalid chunk length, truncate
- + n = dlen - (ll + 1);
- + }
- memcpy(tp + ll , cp + ll + 1, n);
- add_next_index_stringl(entries, cp + ll + 1, n, 1);
- ll = ll + n + 1;
Red Hat bug也收录了这个漏洞,但也没有给出具体细节。