DNSpooqϵÁзì϶·ÖÎöÓ븴ÏÖ
°ä²¼¹¦·ò 2021-02-01ý½é
½üÆÚ£¬£¬ÒÔÉ«Áа²È«Õ÷ѯÆóÒµJSOFÔÚ×îл㱨ÖÐÅû¶ÁËÆß¸ö DNSmasq ·ì϶£¨Í³³Æ DNSpooq£©£¬£¬²¢Ö¸³ö¹¥»÷Õß½è´ËϰȾÁËÊýÒÔ°ÙÍò¼ÆµÄÉ豸¡£DNSmasq ÊÇÒ»Ì×Ê¢ÐеĿªÔ´ DNS ת·¢Èí¼þ£¬£¬¿ÉÄÜΪÔËÐиÃÈí¼þµÄÍøÂçÉ豸Ôö³¤ DNS »º´æºÍ DHCP ·þÎñÆ÷Ö°ÄÜ£¬£¬¿í·ºÓÃÓÚ¸÷ÀàСÐ;ÖÓòÍøÂç¡£ÊÜ DNSpooq Ó°ÏìµÄÉ豸²»½ö¿ÉÄÜÔâ·ê DNS »º´æÖж¾£¬£¬»¹¿É±»ÓÃÓÚÔ¶³Ì´úÂëÖ´ÐС¢¡¢»Ø¾ø·þÎñ£¨DoS£©¹¥»÷¡£Ä¿Ç°ÊÜÓ°ÏìµÄ³§ÉÌÔ̺¬µ«²»ÏÞÓÚ Android / Google¡¢¡¢¿µ¿¨Ë¹ÌØ¡¢¡¢Ë¼¿Æ¡¢¡¢ºìñ¡¢¡¢Netgear¡¢¡¢¸ßͨ¡¢¡¢Linksys¡¢¡¢IBM¡¢¡¢D-LinkÒÔ¼° Ubiquiti ¡£Æ¾¾ÝshodanÏÔʾ£¬£¬Óг¬100Íǫ̀ÀûÓÃDNSmasqµÄÉ豸¶³öÔÚ¹«Íø£¬£¬¿ÉÄÜÊÜÓ°ÏìµÄÉ豸²»¼ÆÆäÊý¡£
ÆäÖУ¬£¬ CVE-2020-25684¡¢¡¢CVE-2020-25685 ºÍ CVE-2020-25686 ÕâÈý¸ö·ì϶£¬£¬¿ÉÄܵ¼Ö DNS ·þÎñÔâ·ê»º´æÖж¾¹¥»÷¡£±ðµÄËĸö·ì϶Ϊ CVE-2020-25687¡¢¡¢CVE-2020-25683¡¢¡¢CVE-2020-25682 ºÍ CVE-2020-25681 £¬£¬¾ùΪ»º³åÇøÒç³ö·ì϶¡£º£ºÚ¿Í»ò¿ÉÔÚÅäÖÃÁË DNSmasq µÄÍøÂçÉ豸ÉÏ£¬£¬ÀûÓÃÕâЩ·ì϶Զ³ÌÖ´ÐÐËÁÒâ´úÂë¡£
DNSºÍ̸¼ò½é
DNSµÄÒªÇóºÍÏìÓ¦µÄ¸ù»ùµ¥ÔªÊÇDNS±¨ÎÄ£¨Message£©¡£ÒªÇóºÍÏìÓ¦µÄDNS±¨ÎĽṹÊÇÆëȫһÑùµÄ£¬£¬Ã¿¸ö±¨ÎͼÓÉÒÔÏÂÎå¶Î£¨Section£©×é³É£º£º

DNS HeaderÊÇÿ¸öDNS±¨Îͼ±ØÐëÕ¼ÓеÄÒ»²¿ÃÅ£¬£¬ËüµÄ³¤¶È¹Ì¶¨Îª12¸ö×Ö½Ú¡£Question²¿ÃÅ´æ·ÅµÄÊÇÏò·þÎñÆ÷²éÎʵÄÓòÃûÊý¾Ý£¬£¬Í¨³£Çé¿öÏÂËüÖ»ÓÐÒ»ÌõEntry¡£Ã¿¸öEntryµÄÌåʽÊÇÒ»ÑùµÄ£¬£¬ÈçÏÂËùʾ£º£º

QNAME£º£ºÓÉlabelsÐòÁÐ×é³ÉµÄÓòÃû¡£QNAMEµÄÌåʽʹÓÃDNS³ß¶ÈÃû³Æ°µÊ¾·¨¡£Õâ¸ö×Ö¶ÎÊDZ䳤µÄ£¬£¬Òò¶øÓпÉÄܳöÏÖÆæÊý¸ö×Ö½Ú£¬£¬µ«²»½øÐв¹Æë¡£DNSʹÓÃÒ»Öֳ߶ÈÌåʽ¶ÔÓòÃû½øÐбàÂë¡£ËüÓÉһϵÁеÄlabel£¨ºÍÓòÃûÖÐÓÃ.Ô׸îµÄlabel·ÖÆç£©×é³É¡£Ã¿¸ölabelÊ××ֽڵĸßÁ½Î»ÓÃÓÚ°µÊ¾labelµÄÀàÐÍ¡£RFC1035ÖзÖÅäÁËËĸöÀïÃæµÄÁ½¸ö£¬£¬±ðÀëÊÇ£º£º00°µÊ¾µÄͨ³£label£¬£¬11£¨0xC0£©°µÊ¾µÄѹËõlabel¡£
Answer£¬£¬AuthorityºÍAdditionalÈý¸ö¶ÎµÄÌåʽÊÇÆëȫһÑùµÄ£¬£¬¶¼ÊÇÓÉÁãÖÁ¶àÌõResource Record£¨×ÊÔ´¼Í¼£©×é³É¡£ÕâЩ×ÊÔ´¼Í¼ÓÉÓÚ·ÖÆçµÄÓô¦¶ø±»·Ö¸ô´æ·Å¡£Answer¶ÔÓ¦²éÎÊÒªÇóÖеÄQuestion£¬£¬QuestionÖеÄÒªÇó²éÎÊÁ˾ֻáÔÚAnswerÖиø³ö£¬£¬ÈôÊÇÒ»¸öÏìÓ¦±¨ÎĵÄAnswerΪ¿Õ£¬£¬×¢Ã÷Õâ´Î²éÎÊûÓÐÖ±½Ó»ñµÃÁ˾֡£
RR(ResourceRecord)×ÊÔ´¼Í¼ÊÇDNSϵͳÖм«¶ÈÖØÒªµÄÒ»²¿ÃÅ£¬£¬ËüÕ¼ÓÐÒ»¸ö±ä³¤µÄ½á¹¹£¬£¬¾ßÌåÌåʽÈçÏ£º£º

¡ñ NAME£º£ºËüÖ¸¶¨¸Ã±Ê¼Í¼¶ÔÓ¦µÄÊÇÄĸöÓòÃû£¬£¬ÌåʽʹÓÃDNS³ß¶ÈÃû³Æ°µÊ¾·¨
¡ñ TYPE£º£º×ÊÔ´¼Í¼µÄÀàÐÍ¡£
¡ñ CLASS£º£º¶ÔÓ¦QuestionµÄQCLASS£¬£¬Ö¸¶¨ÒªÇóµÄÀàÐÍ£¬£¬³£ÓÃֵΪIN£¬£¬ÖµÎª0x001¡£
¡ñ TTL(Time To Live)×ÊÔ´µÄÓÐЧÆÚ£º£º°µÊ¾ÄãÄܹ»½«¸ÃÌõRR»º´æTLLÃ룬£¬TTLΪ0°µÊ¾¸ÃRR²»Äܱ»»º´æ¡£TTLÊÇÒ»¸ö4×Ö½ÚÓзûºÅÊý£¬£¬µ«ÊÇֻʹÓÃËü´óÓÚµÈÓÚ0µÄ²¿ÃÅ¡£
¡ñ RDLENGTH£º£ºÒ»¸öÁ½×ֽڷǸºÕûÊý£¬£¬ÓÃÓÚÖ¸¶¨RDATA²¿Ãŵij¤¶È£¨×Ö½ÚÊý£©¡£
¡ñ RDATA£º£º°µÊ¾Ò»¸ö³¤¶ÈºÍ½á¹¹¶¼¿É±äµÄ×ֶΣ¬£¬ËüµÄ¾ßÌå½á¹¹È¡¾öÓÚTYPE×Ö¶ÎÖ¸¶¨µÄ×ÊÔ´ÀàÐÍ¡£
DNS³£¼û×ÊÔ´¼Í¼ÀàÐÍÓÐNS¼Í¼¡¢¡¢A¼Í¼¡¢¡¢CNAME¼Í¼¡£
¡ñ NS¼Í¼
NS¼Í¼ÓÃÓÚÖ¸¶¨Ä³¸öÓòµÄȨÍþDNS¡£ºÃ±ÈÔÚcomµÄDNSÀ£¬¼Í¼×Åhttp://m.hnwnww.comÕâ¸öÓòµÄDNS£¬£¬»òÐíÈçÏ£º£º
m.hnwnww.com. NS ns1.m.hnwnww.com.
m.hnwnww.com. NS ns2.m.hnwnww.com.
m.hnwnww.com. NS ns3.m.hnwnww.com.
ÕâÈý±Ê¼Í¼£¬£¬¾ÍÊÇ˵http://ns1.m.hnwnww.com¡¢¡¢http://ns2.m.hnwnww.com¡¢¡¢http://ns3.m.hnwnww.com£¨ÒÔϼò³Æns1¡¢¡¢ns2¡¢¡¢ns3£©¶¼ÊÇhttp://m.hnwnww.comÓòµÄȨÍþDNS£¬£¬Ñ¯ÎÊËÁÒâÆäÖÐÒ»¸ö¶¼Äܹ»¡£
µ±È»£¬£¬ÔÚcomµÄȨÍþDNSÀ£¬»¹»á¼Í¼ns1~ns3Õ⼸¸öhttp://m.hnwnww.comȨÍþDNSµÄIP£¬£¬»áÒ»²¢·µ»Ø¸øÎÊѯÕߣ¬£¬ÒÔ±ãÎÊѯÕßÖ±½ÓÓÃIPÁªÏµns1~ns3¡£
¡ñ A¼Í¼
A¼Í¼¾ÍÊÇ×î¾µäµÄÓòÃûºÍIPµÄ¶ÔÓ¦£¬£¬ÔÚhttp://ns1.m.hnwnww.comÀïÃæ£¬£¬¼Í¼×Űٶȹ«Ë¾¸÷²úÆ·µÄÓòÃûºÍIPµÄ¶ÔÓ¦¹ØÏµ£¬£¬Ã¿Ò»¸öÕâÑùµÄ¼Í¼£¬£¬¾ÍÊÇÒ»¸öA¼Í¼£¬£¬ºÃ±ÈÏÂÃæµÄ3¸öA¼Í¼£º£º
image.m.hnwnww.com A 1.2.3.4
wenku.m.hnwnww.com A 5.6.7.8
tieba.m.hnwnww.com A 9.10.11.12
ÈôÊÇÓû§Ñ¯ÎÊhttp://ns1.m.hnwnww.com£º£º¡°http://wenku.m.hnwnww.comµÄIPÊǼ¸¶à£¿¡±£¬£¬ns1¾Í»áÕÒµ½¶ÔÓ¦µÄA¼Í¼»òÕßCNAME¼Í¼²¢·µ»Ø¡£
¡ñ CNAME¼Í¼
CNAME¼Í¼Ҳ³Æ±ðºÅ¼Í¼£¬£¬ÔÊÐí½«¶à¸ö¼Í¼ӳÉäµ½Í³Ò»Ì¨ÍÆËã»úÉÏ¡£ºÃ±È£¬£¬ÔÚns1ÖУ¬£¬²¢Ã»ÓÐhttp://www.m.hnwnww.comµÄA¼Í¼£¬£¬¶øÊÇÒ»¸öCNAME¼Í¼£º£º
www.m.hnwnww.com CNAME www.a.shifen.com
Ò²¾ÍÊÇ֪ͨÓû§£¬£¬http://www.m.hnwnww.comµÄ±ðºÅÊÇhttp://www.a.shifen.com£¬£¬Äܹ»Ö±½ÓÒªÇó½âÎöhttp://www.a.shifen.com¡£
DNS»º´æ¹¥»÷
µ±½Ó¼ûwww.m.hnwnww.comʱ£¬£¬ÓòÃû½âÎöµÄ´óÌåÁ÷³ÌÈçÏÂͼËùʾ¡£

DNS»º´æÖж¾ÊÇÒ»ÖÖ±ÈÁ¦¾µäµÄ¹¥»÷·½Ê½£¬£¬ÈôÊǹ¥»÷ÕßÄܹ»³É¹¦Ö´ÐУ¬£¬¾Í»áÔÚDNS»º´æ·þÎñÆ÷ÉÏÁôÏÂÒ»¸öÓꦵÄÌõ¿î£¬£¬Ê¹µÃÓû§½Ó¼ûÕý³£ÍøÕ¾µÄÒªÇóÖØ¶¨Ïòµ½±»¹¥»÷Õß½ÚÖÆµÄ¶ñÒâÍøÕ¾¡£
DNSpooqϵÁлº´æÖж¾·ì϶µÄµ¥Ò»¹¥»÷Á÷³ÌͼÈçÏÂͼËùʾ£º£º

£¨1£©Óû§·¢ËÍä¯ÀÀÌÔ±¦µÄÒªÇó¸øDNSת·¢Æ÷£¬£¬µ«Ô¸µÃµ½¶ÔÓ¦µÄIP¡£
£¨2£©DNSת·¢Æ÷ûÓдËÓòÃûµÄ»º´æ£¬£¬ËùÒÔ½«ÒªÇóת·¢¸øÉÏÓÎDNS·þÎñÆ÷¡£
£¨3£©Ôڵõ½ÉÏÓÎDNS·þÎñÆ÷»Ø¸´Ç°£¬£¬¹¥»÷Õß·¢ËÍÒ»¸öαÔìµÄ»Ø¸´£¬£¬½«ÌÔ±¦ÓòÃûÓëÒ»¸ö¶ñÒâIPÏà¶ÔÓ¦¡£
£¨4£©DNSת·¢Æ÷½ÓÊÜÁËÕâ¸öαÔìµÄ»Ø¸´£¬£¬²¢·¢Ë͸øÓû§£¬£¬Òò¶øÓû§ÒªÇó½Ó¼ûµÄÌÔ±¦±»Öض¨Ïòµ½Á˹¥»÷Õ߰ѳֵĶñÒâÍøÕ¾¡£
Õâ¸öDNSת·¢Æ÷ÀûÓó¡¾°ºÜ¿í·º£¬£¬ºÃ±ÈСÎÒ¿ªµÄÈȵ㣬£¬»ú³¡¡¢¡¢±ö¹ÝÀïµÄ¹«¹²ÍøÂçµÈ£¬£¬Ò»µ©¹¥»÷³É¹¦£¬£¬ÔòÓ°ÏìʹÓÃÕâÐ©ÍøÂçµÄËùÓÐÈË¡£
ÔÚDNS HeaderÖÐÓÐÒ»¸ö16-bitµÄÇøÓò½ÐTXID£¨transaction ID£©£¬£¬ÓÃÓÚ½«²éÎʰüºÍ»Ø¸´°üÆ¥Åä¡£ÔÚ´Óǰ£¬£¬TXIDÊÇ·ÀÓùDNS»º´æÖж¾µÄÖØÒª¼¿Á©¡£µ«ÊÇÔÚ2008Ä꣬£¬°²È«×êÑÐÔ±Dan KaminskyÖ¤Ã÷16-bitµÄTXIDÊÇÔ¶Ô¶²»¹»µÄ£¬£¬ºóÀ´ÓÖÔö³¤Á˶˿ÚËæ»ú»¯£¬£¬ËùÒÔÕâ¸öʱ³½ÏëαÔì»Ø¸´°ü£¬£¬²»½ö±ØÒª²Â¶ÔTXID£¬£¬»¹±ØÒª²Â¶Ô¶Ë¿Ú£¬£¬Ò»¹²32λµÄËæ»úÖµ£¬£¬´ËÍ⻹±ØÒªÖªÏþÔ´IPºÍÖ÷ÕÅIP¡£
DNS°²È«À©´ó
µ½ÁË21ÊÀ¼Í£¬£¬DNS°²È«À©´óÕýÔÚ±»ÂýÂýÀûÓá£DNS°²È«À©´óÊÇĿǰΪÏàʶ¾öDNSºýŪ»ººÍ´æ´«È¾ÎÊÌâ¶øÉè¼ÆµÄÒ»ÖÖ°²È«»úÖÆ¡£DNSSECÒÀ¸½Êý×ÖÊðÃûÀ´±£ÕÏDNSÓ¦´ð±¨ÎĵÄÕæÊµÐÔºÍÆëÈ«ÐÔ¡£µ¥Ò»À´Ëµ£¬£¬È¨Íþ·þÎñÆ÷ʹÓÃ˽Կ¶Ô×ÊÔ´¼Í¼½øÐÐÊðÃû£¬£¬µÝ¹é·þÎñÆ÷ÀûÓÃȨÍþ·þÎñÆ÷µÄ¹«Ô¿¶ÔÓ¦´ð±¨ÎĽøÐÐÑéÖ¤¡£ÈôÊÇÑé֤ʧ°Ü£¬£¬Ôò×¢Ã÷ÕâÒ»±¨ÎÄ¿ÉÄÜÊÇÓÐÎÊÌâµÄ¡£
ΪÁËʵÏÖ×ÊÔ´¼Í¼µÄÊðÃûºÍÑéÖ¤£¬£¬DNSSECÔö³¤ÁËËÄÖÖÀàÐ͵Ä×ÊÔ´¼Í¼£º£ºRRSIG£¨Resource Record Signature£©¡¢¡¢DNSKEY£¨DNS Public Key£©¡¢¡¢DS£¨Delegation Signer£©¡¢¡¢NSEC£¨Next Secure£©¡£
ÀýÈçÎÒÃÇÖ´ÐкÅÁîÐУº£ºdig @8.8.8.8 paypal.com£¬£¬µÃµ½µÄDNS²éÎÊÁ˾ÖÈçÏÂËùʾ£º£º

ºì¿òÖÐΪӦ´ð²¿ÃÅ£¬£¬ÕâÊÇ먦ÆôDNSSECµÄÇé¿öϵġ£ÎÒÃÇÖ´ÐкÅÁîÐУº£ºdig+dnssec @8.8.8.8 paypal.com£¬£¬µÃµ½µÄDNS²éÎÊÁ˾ÖÈçÏÂËùʾ£º£º

À¶¿òÖоÍÊÇRRSIG×ÊÔ´¼Í¼´æ´¢£¬£¬¸Ã×ÊÔ´¼Í¼´æ´¢µÄÊǶÔ×ÊÔ´¼Í¼¼¯ÖУ¨RRSets£©µÄÊý×ÖÊðÃû¡£
Dnsmasq»º´æÖж¾·ì϶
ÒÔÏÂÈý¸ö·ì϶£¬£¬×éºÏÆðÀ´ÓÃÄܹ»½µµÍαÔì»Ø¸´°üµÄìØÖµ¡£
¡ñ CVE-2020-25684
DNSmasq×ÔÉíÏÞ¶ÈÁËת·¢¸øÉÏÓηþÎñÆ÷²éÎʰüµÄÊýÁ¿£¬£¬Í¨³£×î´óÊÇ150Ìõ¡£Óû§Äܹ»×Ô¼ºÉ趨Õâ¸öÖµ¡£×ª·¢²éÎÊʹÓõÄÊÇfrec(forwardrecord)½á¹¹¡£Ã¿¸öfrec¶¼ºÍTXIDÓйØÁª¡£µ±»Ø¸´±»½ÓÊÜ»ò¾¹ýÒ»°´¹¦·ò£¬£¬Õâ¸öfrecs¾Í»á±»É¾³ý¡£
ͨ³£Çé¿öÏ£¬£¬ÓÃÓÚת·¢²éÎʵÄsocketÊýÁ¿±»ÏÞ¶ÈÔÚ64¸ö¡£Ã¿¸öÓÃÓÚת·¢µÄsocketºÍÒ»¸öËæ»úµÄ¶Ë¿Ú°ó¶¨¡£
ÀíÂÛÉÏ£¬£¬²éÎʰüÖÐTXIDºÍÔ´¶Ë¿Ú¼ÓÆðÀ´»áÓÐ32-bitµÄìØ¡£µ«ÊÇÏÖʵÉÏ£¬£¬Õâ¸öìØÒª¸üÉÙһЩ¡£ÓÉÓÚdnsmasqÔÚͳһ¸ö¶Ë¿Ú»á¶à·¸´Óöà¸öTXID£¬£¬¶øÃ»Óн«Ã¿¸öTXIDºÍÿ¸ö¶Ë¿ÚÉèÖÃΪÖðÒ»¶ÔÓ¦µÄ¹ØÏµ£¬£¬ÈçÏÂͼËùʾ¡£Á˾־ÍÊÇ£¬£¬¹¥»÷ÕßÖ»±ØÒª²ÂÖÐ64¸ö¶Ë¿ÚÖеÄÒ»¸ö¶Ë¿Ú»¹ÓÐÕýÈ·µÄTXID¾ÍÄܹ»ÁË£¬£¬¶ø²»ÓòÂÖÐij¸öÌØ¶¨µÄ¶Ë¿ÚºÍÌØ¶¨µÄTXID¡£ËùÒÔÕâµ¼ÖÂÏÖʵÉÏÖ»ÓÐ26λìØÖµ¡£

¡ñ CVE-2020-25685
ÈôÊÇÒª¶ÔDNSת·¢Æ÷½øÐÐͶ¶¾£¬£¬³ýÁ˱ØÒª²Â¶ÔÕýÈ·µÄTXIDºÍÔ´¶Ë¿Ú£¬£¬¹¥»÷Õß·¢ËÍαÔìµÄ»Ø¸´»¹±ØÒªÆ¥ÅäÒÑÊ¢¿ªµÄfrecs¡£ÈôÊÇÏëÈÃfrecÆ¥Å䣬£¬ÄÇôTXIDºÍÎÊÌâÇø¶¼ÒªÆ¥Å䣬£¬»»¾ä»°Ëµ£¬£¬»Ø¸´µÄÄÚÈÝÊÇ֮ǰѯÎʹýµÄ¡£
dnsmasqÖ»´æ·ÅÎÊÌâÇøµÄ¹þÏ£Öµ£¬£¬¶ø²»ÊǰÑÕû¸öÓï¾ä´æÏÂÀ´¡£µ±Õû¸ö²éÎÊÌá½»µÄʱ³½£¬£¬Õâ¸ö¹þÏ£Öµ»á±»±£Áô¡£
ÈôÊÇdnsmasqûÓбàÒëDNSSECÖ§³Ö£¬£¬ÄÇôËûĬÈÏʹÓÃCRC32×÷Ϊ¹þÏ£Ëã·¨¡£ÎÊÌâ¾ÍÔÚÓÚCRC32´ÓÃÜÂëѧ½Ç¶È²¢²»ÊÇÒ»¸ö°²È«µÄËã·¨¡£Äܹ»ºÜÇáËɵÄʹÓÃÀàËÆSMT solverµÈ¹¤¾ß½øÐÐCRC32Åöײ£¬£¬ÕâÀïµÀÀí²»×ö¹ý¶à½éÉÜ¡£
ËùÒÔ»ùÓÚÕâÒ»¸öÐÔ£¬£¬¹¥»÷ÕßÄܹ»ÌìÉú¶à¸ö²éÎÊ£¬£¬Ã¿Ò»¸ö²éÎʵÄCRC32µÄÖµ¶¼Ò»Ñù£¬£¬²»Íâ²éÎʵÄÊÇ·ÖÆçµÄÓòÃû£¬£¬¶øÕâЩÓòÃû×îºÃÊDz»´æÔڵ쬣¬¼´Ã»Óб»»º´æµÄ¡£¶øºó¹¥»÷ÕßÄܹ»·¢ËÍÒ»¸öÓµÓÐÒ»ÑùCRC32ÖµµÄαÔìµÄ»Ø¸´¡£
ÈçÏÂͼËùʾ£¬£¬¹¥»÷Õß½ÚÖÆÒ»Ì¨¿Í»§¶Ë¶Ô¶à¸öÓòÃûÌáÒéÎÊѯ£¬£¬Ã¿Ò»¸öCRC32µÄÖµ¶¼ÊÇÒ»ÑùµÄ£¬£¬¶øºóÔڵݹéDNS·þÎñÆ÷»Ø¸´Ö®Ç°£¬£¬»Ø¸´Ò»¸öÓµÓÐÒ»ÑùCRC32ÖµµÄÓòÃû»òIP£¬£¬¹¥»÷¼´ÓпÉÄܳɹ¦¡£

¡ñ CVE-2020-25686
dnsmasqµÄÁíÒ»¸öÎÊÌâ¾ÍÊÇÔÚͳһ¸öÓòÃû±»²éÎÊÒªÇóʱ»á´Ö³µÄ´´½¨¶à¸öfrecs¡£Ëæºó»áת·¢ËùÓеÄÒªÇ󣬣¬ÈôÊdzɹ¦µÄÆ¥ÅäÆäÖеÄËÁÒâÒ»¸ö£¬£¬¾Í¼ÆÈ뻺´æ¡£Õâ¸öÎÊÌâµ¼Ö¾ÍËãdnsmasqʹÓð²È«µÄ¹þÏ£Ëã·¨£¬£¬Ò²¿ÉÄܳɹ¦µÄÖ´Ðй¥»÷¡£
ͨ¹ýÒÔÉÏÈý¸ö·ì϶£¬£¬µ¼Ö¹¥»÷ÕßαÔì¶ñÒâ»Ø¸´°üµÄ³É¹¦ÂÊ´ó´óÌá¸ß£¬£¬ºóÃæ»¹±ØÒªÀûÓÃdnsmasqûÓжԻظ´°ü×öÑéÖ¤µÄ¸öÐÔ½øÐй¥»÷¡£
ͨ³£Çé¿öÏ£¬£¬Ôڵݹé·þÎñÆ÷ÉÏ»á¶Ô»Ø¸´°ü×öһЩÑéÖ¤»úÖÆ£¬£¬ÀýÈçbailiwicks¡£µ«ÊÇÔÚÅäÖÃdnsmasqµÄÉ豸Éϲ¢Ã»ÓÐ×öÈκÎÑéÖ¤£¬£¬ËùÒÔÄܹ»ÔÚÓû§ÒªÇówww.example.comµÄʱ³½£¬£¬¹¥»÷ÕßÄܹ»·¢ËÍÈçÏ»ظ´:
www.example.com CNAME www.bank.com
www.bank.com A 6.6.6.6
¶øºóÕâ±Ê¼Í¼µÄ»º´æ¾Í»á±»²åÈëµ½dnsmasqµÄÉ豸ÖС£Ç°ÎĽéÉܹýCNAME£¬£¬ËùÒÔµ±Óû§Ïë½Ó¼ûwww.bank.comµÄʱ³½£¬£¬»á±»Öض¨Ïòµ½±»¹¥»÷Õß½ÚÖÆµÄIPΪ6.6.6.6µÄ·þÎñÆ÷¡£¶øÅäÖÃÁËÀàËÆbailiwicksµÄÉ豸£¬£¬»áÈ¥ÕÒȨÍþ·þÎñÆ÷ѯÎÊwww.bank.comµÄIP¡£
Dnsmasq»º³åÇøÒç³ö·ì϶
¡ñ CVE-2020-25681
ÒÔÏÂÃû³ÆÒԹ淶µÄDNSÃû³Æ°¤´ÎÅÅÐò¡£×îÖØÒªµÄ±êÇ©ÊÇ¡°example¡±¡£Ôڴ˼¶±ðÉÏ£¬£¬¡°example¡±½«Ê×ÏÈÅÅÐò£¬£¬¶øºóÊÇÒÔ¡°a.example¡±½áβµÄÃû³Æ£¬£¬¶øºóÊÇÒÔ¡°z.example¡±½áβµÄÃû³Æ¡£Ã¿¸ö¼¶±ðÖеÄÃû³ÆÒÔÒ»ÑùµÄ·½Ê½ÅÅÐò¡£ÈçÏÂͼËùʾ¡£

CVE-2020-25681·ì϶λÓÚdnssec.cÎļþµÄsort_rrset()º¯ÊýÖУ¬£¬¸Ãº¯ÊýÕÆ¹ÜÒÀÕÕDNSSECÑéÖ¤¹ý³ÌµÄÒªÇóѡȡðÅÝÅÅÐòËã·¨½«¸ø¶¨µÄ×ÊÔ´¼Í¼¼¯ÖУ¨RRSets£©ÅÅÐòΪ¹æ·¶°¤´Î¡£¸Ãº¯Êý½ç˵ÈçÏ£º£º
![]()
Ëü½ÓÊÜÁËÏìÓ¦Êý¾Ý°ü£¨header£©ÒÔ¼°Êý¾Ý°ü³¤¶È£¨plen£©¡£rrsetÊÇÖ¸Ïò×ÊÔ´¼Í¼¼¯ÖÐÖÐRRÊý×éµÄÖ¸Õ룬£¬¶ørrsetidxÊǼ¯ÖÐÖеÄRRÊý£¬£¬rr_descÊÇÖ¸ÏòÓëRRset¹ØÁªµÄRRÀàÐ͵ÄÃèÊö·ûµÄÖ¸Õë¡£×îºó£¬£¬ÓÐÁ½¸ö»º³åÇøbuff1ºÍbuff2£¬£¬ËüÃÇÓÃ×÷ÅÅÐòÀý³ÌµÄ¹¤×÷Çø»º³åÇø¡£ÕâÁ½¸ö»º³åÇøÔÚ·¨Ê½Æðͷʱ¶¼ÊÇÏà¶Ô·ÖÅäµÄ£¬£¬ËüÃÇÊÇdaemon> workspacenameºÍdaemon-> keyname¡£µ±dnsmasq¿ªÆôDNSSECʱ£¬£¬½«»á·ÖÅäÕâÁ½¸ö»º³åÇø¡£

MAXDNAME¾ÞϸΪ1025£¬£¬ËùÒÔworkspacenameºÍkeynameµÄ¾Þϸ2050£¬£¬Ò²ÊǸ÷ì϶²úÉúÒç³öµÄ»º³åÇø¡£
Ê×ÏÈÆô¶¯dnsmasq£¬£¬²¢ÉèÖòÎÊýΪ£º£º
-p 53535 --no-daemon --log-queries -S127.0.0.2 --no-hosts --no-resolv -d -q --dnssec--trust-anchor=.,20326,8,2,E06D44B80B8F1D39A95C0B0D7C65D08458E880409BBC683457104237C7F8EC8D£¬£¬»ú¹ØÍê¶ñÒâDNS²éÎÊÏìÓ¦°ü£¬£¬Ê¹ÓúÅÁîÐУº£ºdig NS+dnssec @localhost -p 53535 .£¬£¬ÉäÖÐsort_rrset()º¯Êý¶ÏµãºóÈçÏÂͼËùʾ£º£º

ÔÚ»ú¹Ø×ÊÔ´¼Í¼¼¯ÖУ¨RRSets£©Ê±£¬£¬±ØÐë±£Õϼͼ¸öÊý´óÓÚ1£¬£¬ÕâÑùÄÜÁ¦±£ÕϽøÈëÅÅÐòÑ»·¡£
ÕâÀï»ú¹ØµÄrrsetidxΪ0x3¡£

Õý³£Êý¾Ý°üÈçÏÂͼËùʾ£º£º

Answers¿éÖУ¬£¬p1Ö¸ÏòµÚÒ»¸ö×ÊÔ´¼Í¼£¬£¬p2Ö¸ÏòµÚ¶þ¸ö£¬£¬¶øºó½øÐÐÅÅÐò¡£

±ðÀëÌø¹ýClass£¬£¬TypeºÍTTL£¬£¬´ïµ½RDATAÇøÓò¡£

Data lenghΪ20£¬£¬ÎªName ServerµÄ³¤¶È¡£¶øºó½øÈëÅÅÐòÑ»·¡£

ÐÐ315£¬£¬Ê×ÏÈŲÓÃget_rdata()º¯Êý½âÎöµÚÒ»¸ö×ÊÔ´¼Í¼p1µÄRDATAÓòÖеÄNameServer£¬£¬¿´Ï¸ú¯ÊýʵÏÖ¡£

ÅжÏdÊÇ·ñµÈÓÚ-1£¬£¬ÕâÀï²»µÈÓÚ£¬£¬²»½øÈëifÓï¾ä£¬£¬À´µ½ÈçÏ´úÂë¡£

¶øºóŲÓÃextract_name()º¯Êý½âÎö£¬£¬ÕâÀï±ØÒª±£ÕÏextract_name()º¯Êý½âÎöÃýÎó·µ»Ø0£¬£¬±£ÕϽøÈëget_rdata()º¯Êý·µ»ØÎª0£¬£¬Í¨¹ýÉèÖ󬳤NameServer×Ö·û´®¼´¿É¡£

½øÈëifÓï¾ä£¬£¬ÐÐ318£¬£¬ÍÆËãlen1£¬£¬Îªend1-p1£¬£¬¼´ÊÇNameServerµÄ³¤¶È¡£ÐÐ319£¬£¬Å²ÓÃmemcpy()½«p1¿½±´µ½buff1+left1ÖС£

ÕâÀïlen1ÉèÖÃΪ3550£¬£¬p1ΪNameServer£¬£¬³¤¶ÈRDLENGTHΪÓû§¿É¿Ø¡£Ç°ÎÄÒѾ½éÉÜbuff1Ϊdaemon>workspacename£¬£¬¾ÞϸΪ2020£¬£¬Òò¶ø²úÉú¶ÑÒç³ö¡£

»º½â´ëÊ©
¡ñ Éý¼¶dnsmasqµ½×îа汾(2.83¼°ÒÔÉÏ)£¬£¬ÕâÊÇĿǰ×îÓÐЧµÄ²½Öè¡£
¡ñ ÈôÊDz»ÓÃÒª£¬£¬ÅäÖÃdnsmasqÉ豸²»ÒªÔÚWAN¿Ú¼àÌý¡£
¡ñ ¾¡Á¿ÅäÖÃdnsmasq×î´óת·¢²éÎÊÌõ¿îСһµã¡£
¡ñ ÁÙʱ¹Ø±ÕDNSSECÑé֤ѡÏî¡£
¡ñ ʹÓÃΪDNSÌṩ´«Ê䰲ȫµÄºÍ̸£¬£¬ÈçDoT»òDoH¡£
²Î¿¼Á´½Ó£º£º
[1] https://www.jsof-tech.com/disclosures/dnspooq/
[2] https://www.jsof-tech.com/wp-content/uploads/2021/01/DNSpooq-Technical-WP.pdf
[3] https://www.rfc-editor.org/rfc/rfc1664.txt
[4] https://security.googleblog.com/2017/10/behind-masq-yet-more-dns-and-dhcp.html
[5] https://spoofer.caida.org/summary.php
[6] https://www.rfc-editor.org/rfc/rfc7858.txt
[7] https://www.rfc-editor.org/rfc/rfc5452.txt
[8] http://www.thekelleys.org.uk/dnsmasq/doc.html
[9]https://dl.acm.org/doi/10.1145/3372297.3417280
[10] https://github.com/Z3Prover/z3
[11] https://www.chromium.org/developers/design-documents/dns-prefetching
[12] https://www.rfc-editor.org/rfc/rfc4033.txt
[13] https://zhuanlan.zhihu.com/p/92899876
OG¶«·½Ìü»ý¼«·ÀÓù³¢ÊÔÊÒ£¨ADLab£©
ADLab³ÉÁ¢ÓÚ1999Ä꣬£¬ÊÇÖйú°²È«ÐÐÒµ×îÔç³ÉÁ¢µÄ¹¥·À¼¼Êõ×êÑг¢ÊÔÊÒÖ®Ò»£¬£¬Î¢ÈíMAPP´òËãÖ÷Ìâ³ÉÔ±£¬£¬¡°ºÚȸ¹¥»÷¡±¸ÅÄîÊ×ÍÆÕß¡£½ØÖ¹Ä¿Ç°£¬£¬ADLabÒÑͨ¹ýCVEÀۼư䲼°²È«·ì϶½ü1100¸ö£¬£¬Í¨¹ý CNVD/CNNVDÀۼư䲼°²È«·ì϶1000Óà¸ö£¬£¬³ÖÐøÎ¬³Ö¹ú¼ÊÍøÂ簲ȫÁìÓòÒ»Á÷Ë®×¼¡£³¢ÊÔÊÒ×êÑз½Ïòº¸Ç²Ù×÷ϵͳÓëÀûÓÃϵͳ°²È«×êÑС¢¡¢ÖÇÄÜÖն˰²È«×êÑС¢¡¢ÎïÁªÍøÖÇÄÜÉ豸°²È«×êÑС¢¡¢Web°²È«×êÑС¢¡¢¹¤¿ØÏµÍ³°²È«×êÑС¢¡¢Ôư²È«×êÑС£×êÑгɾÍÀûÓÃÓÚ²úÆ·Ö÷Ìâ¼¼Êõ×êÑС¢¡¢¹ú¶ÈÖØµã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢¡¢×¨Òµ°²È«·þÎñµÈ¡£



¾©¹«Íø°²±¸11010802024551ºÅ