Windows DHCP ServerÔ¶³Ì´úÂëÖ´Ðзì϶·ÖÎö£¨CVE-2019-0626£©

°ä²¼¹¦·ò 2019-02-19
·ì϶²¼¾°

2ÔÂ12ÈÕ£¬£¬£¬Î¢Èí°ä²¼2Ô·ÝÔ¶ÈÀýÐа²È«²¼¸æ£¬£¬£¬ÐÞ¸´Á˶à¸ö¸ßΣ·ì϶£¬£¬£¬ÆäÖÐÔ̺¬Windows DHCP ServerÔ¶³Ì´úÂëÖ´Ðзì϶CVE-2019-0626¡£¡£µ±¹¥»÷ÕßÏòDHCP·þÎñÆ÷·¢Ë;«ÐÄÉè¼ÆµÄÊý¾Ý°ü²¢³É¹¦ÀûÓú󣬣¬£¬¾ÍÄܹ»ÔÚDHCP·þÎñÖÐÖ´ÐÐËÁÒâ´úÂ룬£¬£¬·ì϶ӰÏìÁìÓò½Ï´ó¡£¡£Õë¶Ô´Ë·ì϶£¬£¬£¬OG¶«·½Ìü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·þÎñ¶ËµÄ½»»¥¹ý³ÌÈçÏÂͼËùʾ¡£¡£


OG¶«·½Ìü¡¤(Öйú´ó½)


´«ÊäµÄDHCPºÍ̸±¨ÎÄÐè×ñÑ­ÒÔÏÂÌåʽ£º£º


OG¶«·½Ìü¡¤(Öйú´ó½)


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


OG¶«·½Ìü¡¤(Öйú´ó½)


TypeȡֵÁìÓò1~255£¬£¬£¬²¿ÃÅTypeÀàÐÍÈçÏÂͼËùʾ¡£¡£


OG¶«·½Ìü¡¤(Öйú´ó½)


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


OG¶«·½Ìü¡¤(Öйú´ó½)


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


OG¶«·½Ìü¡¤(Öйú´ó½)


OG¶«·½Ìü¡¤(Öйú´ó½)


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


OG¶«·½Ìü¡¤(Öйú´ó½)


DHCP·þÎñÆ÷ÊÕµ½DiscoveryÒªÇó±¨ÎÄ£¬£¬£¬¶ÔÊý¾Ý°ü½øÐд¦Öᣡ£Ê×ÏÈÖ´ÐÐExtractOptions´¦ÖÃOptions£¬£¬£¬µ±´¦ÖÃvendor_specificÀàÐ͵ÄOptionʱ£¬£¬£¬½øÈëµ½ParseVendorSpecific½øÐд¦Öᣡ£POCÖлú¹ØÒ»¸öºÏ·¨µÄvendor_specific1£¬£¬£¬Ö÷ÕÅÊÇΪÁËÈÆ¹ý84~85ÐеÄУÑé´úÂ룬£¬£¬Ê¹·¨Ê½Ë³ÀûÖ´Ðе½ParseVendorSpecificº¯Êý¡£¡£


OG¶«·½Ìü¡¤(Öйú´ó½)


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
OG¶«·½Ìü¡¤(Öйú´ó½)

²¹¶¡±È¶Ô

²¹¶¡ºóµÄ°æ±¾Ôö³¤Á˶ÔLength×ֶεÄÓÐЧÐÔÅжÏ¡£¡£


OG¶«·½Ìü¡¤(Öйú´ó½)


°²È«½¨Òé

ʵʱװÖð²È«²¹¶¡£¡£º£ºhttps://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2019-0626


OG¶«·½Ìü¡¤(Öйú´ó½)