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


¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾