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ЧÀͶ˵Ľ»»¥Àú³ÌÈçÏÂͼËùʾ¡£¡£¡£


¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨


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


¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨


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


¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨


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


¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨


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


¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨


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


¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨


¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨


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£©¡£¡£¡£


¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨


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


¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨


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
¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨

²¹¶¡±È¶Ô

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


¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨


Çå¾²½¨Òé

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


¼øºÚµ£±£Íø(jhdbw)¡¤×î¾ßȨÍþΨһάȨµ£±£Æ½Ì¨