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ϵͳÖзdz£ÖØÒªµÄÒ»²¿ÃÅ£¬ËüÓµÓÐÒ»¸ö±ä³¤µÄ½á¹¹£¬¾ßÌå¸ñʽÈçÏ£º
¡ñ 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ʱ£¬ÓòÃû½âÎöµÄ´óÖÂÁ÷³ÌÈçÏÂͼËùʾ¡£
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îÒìµÄÓòÃû£¬¶øÕâЩÓòÃû×îºÃÊDz»´æÔڵģ¬¼´Ã»Óб»»º´æµÄ¡£È»ºó¹¥»÷Õß¿ÉÒÔ·¢ËÍÒ»¸ö¾ßÓÐÏàͬCRC32ÖµµÄαÔìµÄ»Ø¸´¡£
ÈçÏÂͼËùʾ£¬¹¥»÷Õß¿ØÖÆһ̨¿Í»§¶Ë¶Ô¶à¸öÓòÃûÌᳫÎÊѯ£¬Ã¿Ò»¸öCRC32µÄÖµ¶¼ÊÇÏàͬµÄ£¬È»ºóÔڵݹéDNS·þÎñÆ÷»Ø¸´Ö®Ç°£¬»Ø¸´Ò»¸ö¾ßÓÐÏàͬCRC32ÖµµÄÓòÃû»òIP£¬¹¥»÷¼´ÓпÉÄÜÀֳɡ£
¡ñ 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¡±½áβµÄÃû³Æ¡£Ã¿¸ö¼¶±ðÖеÄÃû³ÆÒÔÏàͬµÄ·½Ê½ÅÅÐò¡£ÈçÏÂͼËùʾ¡£
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¼°ÒÔÉÏ)£¬ÕâÊÇÄ¿Ç°×îÓÐЧµÄÒªÁì¡£
¡ñ Èç¹û²»ÐëÒª£¬ÅäÖÃ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Äþ¾²Ñо¿¡¢¹¤¿ØϵͳÄþ¾²Ñо¿¡¢ÔÆÄþ¾²Ñо¿¡£Ñо¿½á¹ûÓ¦ÓÃÓÚ²úÎïºËÐļ¼ÊõÑо¿¡¢¹ú¼ÒÖصã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢×¨ÒµÄþ¾²·þÎñµÈ¡£