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


±¦ÔËÀ³¡¤(ÖйúÇø)×îйٷ½ÍøÕ¾