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

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

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

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

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


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


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


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


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


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


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


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


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


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


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


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


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


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


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


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


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
¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾

²¹¶¡±È¶Ô

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


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾


Çå¾²½¨Òé

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


¿­·¢¡¤k8(ÖйúÓÎ)¹Ù·½ÍøÕ¾