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.zhenyibh.comÕâ¸öÓòµÄDNS£¬´ó¸ÅÈçÏ£º

www.zhenyibh.com.  NS ns1.www.zhenyibh.com. 

www.zhenyibh.com.  NS ns2.www.zhenyibh.com. 

www.zhenyibh.com.  NS ns3.www.zhenyibh.com.


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


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


¡ñ A¼Ç¼


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


image.www.zhenyibh.com   A    1.2.3.4 

wenku.www.zhenyibh.com   A    5.6.7.8 

tieba.www.zhenyibh.com     A    9.10.11.12


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


¡ñ CNAME¼Ç¼


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


www.www.zhenyibh.com  CNAME  www.a.shifen.com


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


DNS»º´æ¹¥»÷


µ±·ÃÎÊwww.www.zhenyibh.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