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£©×é³É£º


1.png


DNS HeaderÊÇÿ¸öDNS±¨Îͼ±ØÐëÓµÓеÄÒ»²¿ÃÅ£¬ËüµÄ³¤¶ÈÀιÌΪ12¸ö×Ö½Ú¡£Question²¿ÃÅ´æ·ÅµÄÊÇÏò·þÎñÆ÷²éѯµÄÓòÃûÊý¾Ý£¬Ò»°ãÇé¿öÏÂËüÖ»ÓÐÒ»ÌõEntry¡£Ã¿¸öEntryµÄ¸ñʽÊÇÏàͬµÄ£¬ÈçÏÂËùʾ£º


2.png


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ϵͳÖзdz£ÖØÒªµÄÒ»²¿ÃÅ£¬ËüÓµÓÐÒ»¸ö±ä³¤µÄ½á¹¹£¬¾ßÌå¸ñʽÈçÏ£º


3.png


¡ñ 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://www.0416km.comÕâ¸öÓòµÄDNS£¬´ó¸ÅÈçÏ£º

www.0416km.com.  NS ns1.www.0416km.com. 

www.0416km.com.  NS ns2.www.0416km.com. 

www.0416km.com.  NS ns3.www.0416km.com.


ÕâÈýÌõ¼Ç¼£¬¾ÍÊÇ˵http://ns1.www.0416km.com¡¢http://ns2.www.0416km.com¡¢http://ns3.www.0416km.com£¨ÒÔϼò³Æns1¡¢ns2¡¢ns3£©¶¼ÊÇhttp://www.0416km.comÓòµÄȨÍþDNS£¬Ñ¯ÎÊÈÎÒâÆäÖÐÒ»¸ö¶¼¿ÉÒÔ¡£


ËäÈ»£¬ÔÚcomµÄȨÍþDNSÀ»¹»á¼Ç¼ns1~ns3Õ⼸¸öhttp://www.0416km.comȨÍþDNSµÄIP£¬»áÒ»²¢·µ»Ø¸øÎÊѯÕߣ¬ÒÔ±ãÎÊѯÕßÖ±½ÓÓÃIPÁªÏµns1~ns3¡£


¡ñ A¼Ç¼


A¼Ç¼¾ÍÊÇ×î¾­µäµÄÓòÃûºÍIPµÄ¶ÔÓ¦£¬ÔÚhttp://ns1.www.0416km.comÀïÃæ£¬¼Ç¼×Űٶȹ«Ë¾¸÷²úÎïµÄÓòÃûºÍIPµÄ¶ÔÓ¦¹ØÏµ£¬Ã¿Ò»¸öÕâÑùµÄ¼Ç¼£¬¾ÍÊÇÒ»¸öA¼Ç¼£¬ºÃ±ÈÏÂÃæµÄ3¸öA¼Ç¼£º


image.www.0416km.com   A    1.2.3.4 

wenku.www.0416km.com   A    5.6.7.8 

tieba.www.0416km.com     A    9.10.11.12


Èç¹ûÓû§Ñ¯ÎÊhttp://ns1.www.0416km.com£º¡°http://wenku.www.0416km.comµÄIPÊǼ¸¶à£¿¡±£¬ns1¾Í»áÕÒµ½¶ÔÓ¦µÄA¼Ç¼»òÕßCNAME¼Ç¼²¢·µ»Ø¡£


¡ñ CNAME¼Ç¼


CNAME¼Ç¼Ҳ³Æ±ðÃû¼Ç¼£¬ÔÊÐí½«¶à¸ö¼Ç¼ӳÉ䵽ͬһ̨¼ÆËã»úÉÏ¡£ºÃ±È£¬ÔÚns1ÖУ¬²¢Ã»ÓÐhttp://www.www.0416km.comµÄA¼Ç¼£¬¶øÊÇÒ»¸öCNAME¼Ç¼£º


www.www.0416km.com  CNAME  www.a.shifen.com


Ò²¾ÍÊǸæËßÓû§£¬http://www.www.0416km.comµÄ±ðÃûÊÇhttp://www.a.shifen.com£¬¿ÉÒÔÖ±½ÓÇëÇó½âÎöhttp://www.a.shifen.com¡£


DNS»º´æ¹¥»÷


µ±·ÃÎÊwww.www.0416km.comʱ£¬ÓòÃû½âÎöµÄ´óÖÂÁ÷³ÌÈçÏÂͼËùʾ¡£


4.png


DNS»º´æÖж¾ÊÇÒ»ÖÖ±ÈÁ¦¾­µäµÄ¹¥»÷·½Ê½£¬Èç¹û¹¥»÷Õß¿ÉÒÔÀÖ³ÉÖ´ÐУ¬¾Í»áÔÚDNS»º´æ·þÎñÆ÷ÉÏÁôÏÂÒ»¸öÓꦵÄÌõÄ¿£¬Ê¹µÃÓû§·ÃÎÊÕý³£ÍøÕ¾µÄÇëÇóÖØ¶¨Ïòµ½±»¹¥»÷Õß¿ØÖƵĶñÒâÍøÕ¾¡£


DNSpooqϵÁлº´æÖж¾Â©¶´µÄ¼òµ¥¹¥»÷Á÷³ÌͼÈçÏÂͼËùʾ£º


5.png


£¨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²éѯ½á¹ûÈçÏÂËùʾ£º


6.png


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


7.png


À¶¿òÖбãÊÇ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λìØÖµ¡£


8.png


¡ñ CVE-2020-25685


Èç¹ûÒª¶ÔDNSת·¢Æ÷½øÐÐͶ¶¾£¬³ýÁËÐèÒª²Â¶ÔÕýÈ·µÄTXIDºÍÔ´¶Ë¿Ú£¬¹¥»÷Õß·¢ËÍαÔìµÄ»Ø¸´»¹ÐèҪƥÅäÒÑ¿ª·ÅµÄfrecs¡£Èç¹ûÏëÈÃfrecÆ¥Å䣬ÄÇôTXIDºÍÎÊÌâÇø¶¼ÒªÆ¥Å䣬»»¾ä»°Ëµ£¬»Ø¸´µÄÄÚÈÝÊÇ֮ǰѯÎʹýµÄ¡£


dnsmasqÖ»´æ·ÅÎÊÌâÇøµÄ¹þÏ£Öµ£¬¶ø²»ÊǰÑÕû¸öÓï¾ä´æÏÂÀ´¡£µ±Õû¸ö²éѯÌá½»µÄʱºò£¬Õâ¸ö¹þÏ£Öµ»á±»Éú´æ¡£


Èç¹ûdnsmasqûÓбàÒëDNSSECÖ§³Ö£¬ÄÇôËûĬÈÏʹÓÃCRC32×÷Ϊ¹þÏ£Ëã·¨¡£ÎÊÌâ¾ÍÔÚÓÚCRC32´ÓÃÜÂëѧ½Ç¶È²¢²»ÊÇÒ»¸öÄþ¾²µÄËã·¨¡£¿ÉÒÔºÜÇáËɵÄʹÓÃÀàËÆSMT solverµÈ¹¤¾ß½øÐÐCRC32Åöײ£¬ÕâÀïÔ­Àí²»×ö¹ý¶à½éÉÜ¡£


ËùÒÔ»ùÓÚÕâÒ»ÌØÐÔ£¬¹¥»÷Õß¿ÉÒÔÉú³É¶à¸ö²éѯ£¬Ã¿Ò»¸ö²éѯµÄCRC32µÄÖµ¶¼Ïàͬ£¬²»Íâ²éѯµÄÊDzîÒìµÄÓòÃû£¬¶øÕâЩÓòÃû×îºÃÊDz»´æÔڵ쬼´Ã»Óб»»º´æµÄ¡£È»ºó¹¥»÷Õß¿ÉÒÔ·¢ËÍÒ»¸ö¾ßÓÐÏàͬCRC32ÖµµÄαÔìµÄ»Ø¸´¡£


ÈçÏÂͼËùʾ£¬¹¥»÷Õß¿ØÖÆÒ»Ì¨¿Í»§¶Ë¶Ô¶à¸öÓòÃûÌᳫÎÊѯ£¬Ã¿Ò»¸öCRC32µÄÖµ¶¼ÊÇÏàͬµÄ£¬È»ºóÔڵݹéDNS·þÎñÆ÷»Ø¸´Ö®Ç°£¬»Ø¸´Ò»¸ö¾ßÓÐÏàͬCRC32ÖµµÄÓòÃû»òIP£¬¹¥»÷¼´ÓпÉÄÜÀֳɡ£


9.png


¡ñ CVE-2020-25686


dnsmasqµÄÁíÒ»¸öÎÊÌâ¾ÍÊÇÔÚͬһ¸öÓòÃû±»²éѯÇëÇóʱ»á´Ö±©µÄ´´½¨¶à¸öfrecs¡£Ëæºó»áת·¢ËùÓеÄÇëÇó£¬Èç¹ûÀֳɵį¥ÅäÆäÖеÄÈÎÒâÒ»¸ö£¬¾Í¼ÆÈ뻺´æ¡£Õâ¸öÎÊÌâµ¼Ö¾ÍËã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¡±½áβµÄÃû³Æ¡£Ã¿¸ö¼¶±ðÖеÄÃû³ÆÒÔÏàͬµÄ·½Ê½ÅÅÐò¡£ÈçÏÂͼËùʾ¡£


10.png


CVE-2020-25681©¶´Î»ÓÚdnssec.cÎļþµÄsort_rrset()º¯ÊýÖУ¬¸Ãº¯ÊýÂôÁ¦Æ¾¾ÝDNSSECÑéÖ¤¹ý³ÌµÄÒªÇó½ÓÄÉðÅÝÅÅÐòËã·¨½«¸ø¶¨µÄ×ÊÔ´¼Ç¼¼¯ºÏ£¨RRSets£©ÅÅÐòΪ¹æ·¶Ë³Ðò¡£¸Ãº¯Êý½ç˵ÈçÏ£º


11.png


Ëü½ÓÊÜÁËÏìÓ¦Êý¾Ý°ü£¨header£©ÒÔ¼°Êý¾Ý°ü³¤¶È£¨plen£©¡£rrsetÊÇÖ¸Ïò×ÊÔ´¼Ç¼¼¯ºÏÖÐRRÊý×éµÄÖ¸Õ룬¶ørrsetidxÊǼ¯ºÏÖеÄRRÊý£¬rr_descÊÇÖ¸ÏòÓëRRset¹ØÁªµÄRRÀàÐ͵ÄÃèÊö·ûµÄÖ¸Õë¡£×îºó£¬ÓÐÁ½¸ö»º³åÇøbuff1ºÍbuff2£¬ËüÃÇÓÃ×÷ÅÅÐòÀý³ÌµÄÊÂÇéÇø»º³åÇø¡£ÕâÁ½¸ö»º³åÇøÔÚ·¨Ê½¿ªÊ¼Ê±¶¼ÊÇÏà¶Ô·ÖÅäµÄ£¬ËüÃÇÊÇdaemon> workspacenameºÍdaemon-> keyname¡£µ±dnsmasq¿ªÆôDNSSECʱ£¬½«»á·ÖÅäÕâÁ½¸ö»º³åÇø¡£


12.png


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()º¯Êý¶ÏµãºóÈçÏÂͼËùʾ£º


13.png


Ôڽṹ×ÊÔ´¼Ç¼¼¯ºÏ£¨RRSets£©Ê±£¬±ØÐë±£Ö¤¼Ç¼¸öÊý´óÓÚ1£¬ÕâÑù²ÅÆø±£Ö¤½øÈëÅÅÐòÑ­»·¡£


ÕâÀï½á¹¹µÄrrsetidxΪ0x3¡£


14.png


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


15.png


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


16.png


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


17.png


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


18.png


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


19.png


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


20.png


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


21.png


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


22.png


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


23.png


»º½â´ëÊ©


¡ñ Éý¼¶dnsmasqµ½×îа汾(2.83¼°ÒÔÉÏ)£¬ÕâÊÇĿǰ×îÓÐЧµÄÒªÁì¡£

¡ñ Èç¹û²»ÐëÒª£¬ÅäÖÃ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


¶¶È¦Îª¶Ä¶øÉú»ý¼«·ÀÓùʵÑéÊÒ£¨ADLab£©


ADLab½¨Á¢ÓÚ1999Ä꣬ÊÇÖйúÄþ¾²ÐÐÒµ×îÔ罨Á¢µÄ¹¥·À¼¼ÊõÑо¿ÊµÑéÊÒÖ®Ò»£¬Î¢ÈíMAPP¼Æ»®ºËÐijÉÔ±£¬¡°ºÚȸ¹¥»÷¡±¿´·¨Ê×ÍÆÕß¡£½ØÖ¹Ä¿Ç°£¬ADLabÒÑͨ¹ýCVEÀÛ¼ÆÐû²¼Äþ¾²Â©¶´½ü1100¸ö£¬Í¨¹ý CNVD/CNNVDÀÛ¼ÆÐû²¼Äþ¾²Â©¶´1000Óà¸ö£¬Á¬Ðø±£³Ö¹ú¼ÊÍøÂçÄþ¾²ÁìÓòÒ»Á÷Ë®×¼¡£ÊµÑéÊÒÑо¿Æ«Ïòº­¸Ç²Ù×÷ϵͳÓëÓ¦ÓÃϵͳÄþ¾²Ñо¿¡¢ÖÇÄÜÖÕ¶ËÄþ¾²Ñо¿¡¢ÎïÁªÍøÖÇÄÜÉ豸Äþ¾²Ñо¿¡¢WebÄþ¾²Ñо¿¡¢¹¤¿ØÏµÍ³Äþ¾²Ñо¿¡¢ÔÆÄþ¾²Ñо¿¡£Ñо¿½á¹ûÓ¦ÓÃÓÚ²úÎïºËÐļ¼ÊõÑо¿¡¢¹ú¼ÒÖØµã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢×¨ÒµÄþ¾²·þÎñµÈ¡£


adlab.jpg