Windows DHCP ServerÔ¶³Ì´úÂëÖ´ÐÐÎó²îÆÊÎö£¨CVE-2019-0626£©

Ðû²¼Ê±¼ä 2019-02-19
Îó²îÅä¾°

2ÔÂ12ÈÕ£¬£¬£¬£¬Î¢ÈíÐû²¼2Ô·ÝÔ¶ÈÀýÐÐÇ徲ͨ¸æ£¬£¬£¬£¬ÐÞ¸´Á˶à¸ö¸ßΣÎó²î£¬£¬£¬£¬ÆäÖаüÀ¨Windows DHCP ServerÔ¶³Ì´úÂëÖ´ÐÐÎó²îCVE-2019-0626¡£¡£¡£¡£µ±¹¥»÷ÕßÏòDHCPЧÀÍÆ÷·¢ËÍÈ«ÐÄÉè¼ÆµÄÊý¾Ý°ü²¢ÀÖ³ÉʹÓú󣬣¬£¬£¬¾Í¿ÉÒÔÔÚDHCPЧÀÍÖÐÖ´ÐÐí§Òâ´úÂ룬£¬£¬£¬Îó²îÓ°Ïì¹æÄ£½Ï´ó¡£¡£¡£¡£Õë¶Ô´ËÎó²î£¬£¬£¬£¬¿­Ðý¹ú¼ÊÓÎÏ·ADLabµÚһʱ¼ä¶ÔÆä¾ÙÐÐÁËÏêϸÆÊÎö¡£¡£¡£¡£

Îó²îÓ°Ïì°æ±¾

Windows 7
Windows 8.1
Windows 10 
Windows Server 2008
Windows Server 2012
Windows Server 2016

Windows Server 2019


ЭÒé¼ò½é


DHCP£¬£¬£¬£¬¶¯Ì¬Ö÷»úÉèÖÃЭÒ飬£¬£¬£¬Ç°ÉíÊÇBOOTPЭÒ飬£¬£¬£¬ÊÇÒ»¸ö¾ÖÓòÍøµÄÍøÂçЭÒé¡£¡£¡£¡£DHCPͨ³£ÓÃÓÚ¼¯ÖÐÖÎÀí·ÖÅÉIPµØµã£¬£¬£¬£¬Ê¹client¶¯Ì¬µØ»ñµÃIPµØµã¡¢GatewayµØµã¡¢DNSЧÀÍÆ÷µØµãµÈÐÅÏ¢¡£¡£¡£¡£DHCP¿Í»§¶ËºÍDHCPЧÀͶ˵Ľ»»¥Àú³ÌÈçÏÂͼËùʾ¡£¡£¡£¡£


¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾


´«ÊäµÄDHCPЭÒ鱨ÎÄÐè×ñÕÕÒÔÏÂÃûÌãº


¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾


DHCP°üÀ¨Ðí¶àÀàÐ͵ÄOption£¬£¬£¬£¬Ã¿¸öOptionÓÉType¡¢LengthºÍDataÈý¸ö×Ö¶Î×é³É¡£¡£¡£¡£


¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾


Typeȡֵ¹æÄ£1~255£¬£¬£¬£¬²¿·ÖTypeÀàÐÍÈçÏÂͼËùʾ¡£¡£¡£¡£


¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾


DHCPЧÀÍÔÚ´¦Öóͷ£Vendor Specific ÀàÐÍ£¨Type=43£©µÄOption½á¹¹±£´æÇå¾²Îó²î¡£¡£¡£¡£Ê×ÏÈ¿´ÏÂDHCPЧÀͳÌÐò¶ÔOptionµÄ´¦Öóͷ£Àú³Ì£¬£¬£¬£¬ ProcessMessageº¯ÊýÈÏÕæ´¦Öóͷ£ÊÕµ½µÄDHCP±¨ÎÄ£¬£¬£¬£¬Å²ÓÃExtractOptionsº¯Êý´¦Öóͷ£DHCPµÄOption×ֶΣ¬£¬£¬£¬´«È뺯ÊýExtractOptionsµÄ²ÎÊý1£¨v7£©ÎªDHCP±¨ÎÄÖ¸Õ룬£¬£¬£¬²ÎÊý3£¨*(unsigned int *)(v5 + 16)£©¶ÔÓ¦Ö¸ÕëÆ«ÒÆÎ»ÖÃ+16µÄÊý¾Ý£¬£¬£¬£¬¼´Len×ֶΡ£¡£¡£¡£


¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾


ExtractOptionº¯ÊýÈçÏÂËùʾ¡£¡£¡£¡£ v6 = (unsigned __int64)&a1[a3 - 1];Ö¸Ïò±¨ÎÄĩβλÖ㻣»£»£»£» £»v10=a1+240;Ö¸Ïò±¨ÎÄÖÐOption½á¹¹¡£¡£¡£¡£ÔÚforÑ­»·Öд¦Öóͷ£²î±ðÀàÐ͵ÄOption½á¹¹£¬£¬£¬£¬µ±type=43£¨Vendor Specific Information£©£¬£¬£¬£¬´«ÈëÖ¸Õëv10ºÍÖ¸Õëv6×÷Ϊ²ÎÊý£¬£¬£¬£¬Å²ÓÃParseVendorSpecificº¯Êý¾ÙÐд¦Öóͷ£¡£¡£¡£¡£


¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾


¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾


ParseVendorSpecificº¯ÊýÄÚ²¿Å²ÓÃUncodeOptionº¯Êý¡£¡£¡£¡£UncodeOptionº¯Êý²ÎÊýa1Ö¸ÏòoptionÆðʼλÖ㬣¬£¬£¬a2Ö¸Ïò±¨ÎĵÄĩβλÖᣡ£¡£¡£UncodeOptionº¯Êý±£´æÇå¾²Îó²î£¬£¬£¬£¬ÏÂÃæÁ¬ÏµPOCºÍ²¹¶¡±È¶Ô¾ÙÐÐÆÊÎö¡£¡£¡£¡£


Îó²îÆÊÎö

½á¹¹Ò»¸öDHCP Discovery±¨ÎÄ£¬£¬£¬£¬POCÈçÏÂËùʾ£¬£¬£¬£¬POC°üÀ¨Á½¸övendor_specific ÀàÐ͵ÄOption½á¹¹¡£¡£¡£¡£vendor_specific1ÊÇÕýµ±µÄOption½á¹¹£¬£¬£¬£¬Lengthȡֵ0x0a¼´ÊÇDataµÄÏÖʵ³¤¶È£¨0x0a£©£¬£¬£¬£¬vendor_specific2ÊDz»Õýµ±µÄOption½á¹¹£¬£¬£¬£¬ Lengthȡֵ0x0f´óÓÚDataµÄÏÖʵ³¤¶È£¨0x0a£©¡£¡£¡£¡£


¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾


DHCPЧÀÍÆ÷ÊÕµ½DiscoveryÇëÇó±¨ÎÄ£¬£¬£¬£¬¶ÔÊý¾Ý°ü¾ÙÐд¦Öóͷ£¡£¡£¡£¡£Ê×ÏÈÖ´ÐÐExtractOptions´¦Öóͷ£Options£¬£¬£¬£¬µ±´¦Öóͷ£vendor_specificÀàÐ͵ÄOptionʱ£¬£¬£¬£¬½øÈëµ½ParseVendorSpecific¾ÙÐд¦Öóͷ£¡£¡£¡£¡£POCÖнṹһ¸öÕýµ±µÄvendor_specific1£¬£¬£¬£¬Ä¿µÄÊÇΪÁËÈÆ¹ý84~85ÐеÄУÑé´úÂ룬£¬£¬£¬Ê¹³ÌÐò˳ËìÖ´Ðе½ParseVendorSpecificº¯Êý¡£¡£¡£¡£


¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾


ParseVendorSpecificŲÓÃUncodeOptionº¯Êý£¬£¬£¬£¬ÏêϸÈçÏ£º


32~43ÐÐÔÚdo-whileÑ­»·ÖÐÅÌËãOption½á¹¹µÄ LengthÖµÖ®ºÍ£¬£¬£¬£¬ÉúÑĵ½v13£¬£¬£¬£¬×÷Ϊ·ÖÅɶÑÄڴ泤¶È¡£¡£¡£¡£POCÖаüÀ¨Á½¸övendor_specific½á¹¹£¬£¬£¬£¬Ê×ÏÈ´¦Öóͷ£vendor_specific1£¬£¬£¬£¬ÅÌËãv13£¬£¬£¬£¬¼´vendor_specific1³¤¶Èa£¬£¬£¬£¬²¢ÇÒʹv12Ö¸ÏòÏÂÒ»¸öOption½á¹¹vendor_specific2£¬£¬£¬£¬µ±½øÈë43ÐÐwhileÌõ¼þÅжϣ¬£¬£¬£¬ÓÉÓÚvendor_specific2³¤¶È²»Õýµ±£¬£¬£¬£¬do-whileÑ­»·¿¢Ê¡£¡£¡£¡£

48ÐÐŲÓÃHeapAlloc·ÖÅɶÑÄڴ棬£¬£¬£¬·ÖÅɵÄÄÚ´æ¾Þϸv13=a¡£¡£¡£¡£


51~58ÐÐÔÚforÑ­»·ÖÐÒÀ´Î½«vendor_specific½á¹¹ÖеÄData¿½±´µ½·ÖÅɵĶÑÄÚ´æÖС£¡£¡£¡£½øÈëµÚÒ»´ÎÑ­»·Ê±£¬£¬£¬£¬v1Ö¸Ïòvendor_specific1£¬£¬£¬£¬v8Ö¸ÏòĩβλÖ㬣¬£¬£¬Öª×ãÌõ¼þv1
¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾

²¹¶¡±È¶Ô

²¹¶¡ºóµÄ°æ±¾Ìí¼ÓÁ˶ÔLength×ֶεÄÓÐÓÃÐÔÅжÏ¡£¡£¡£¡£


¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾


Çå¾²½¨Òé

ʵʱװÖÃÇå¾²²¹¶¡£¡£¡£¡£ºhttps://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0626


¿­Ðý¹ú¼ÊÓÎÏ·(Öйú)¹Ù·½ÍøÕ¾