¶«Éƽ̨ADLab£ºVxWorks¶à¸öÔ¶³Ì©¶´·ÖÎö
Ðû²¼Ê±¼ä 2019-08-02VxWorksÊÇÊÀ½çÉÏʹÓÃ×î¹ã·ºµÄʵʱ²Ù×÷ϵͳ£¨RTOS£©£¬ÓÐÁè¼Ý20ÒŲ́É豸ÕýÔÚʹÓ㬰üÂÞ¹¤Òµ¡¢µçÁ¦¡¢ÄÜÔ´£¬º½¿Õº½ÌìµÈÐÐÒµÒªº¦»ù´¡ÉèÊ©¡£
? ©¶´Ó°Ïì°æ±¾
URGENT/11©¶´Ó°Ïì×Ô6.5°æÒÔÀ´µÄ¼¸ºõËùÓÐVxWorks°æ±¾£¬²»°üÂÞΪÈÏÖ¤¶øÉè¼ÆµÄ²úÎï°æ±¾£¬ÀýÈçVxWorks 653ºÍVxWorks Cert Edition¡£
? VxWorks6.5~6.9.4
? ʹÓÃIPNetÍøÂçÐÒéÕ»µÄVxWorks°æ±¾

? ½â¾ö·½°¸
? ·À»ðǽºÍIDS²úÎïÌí¼Ó¹æÔò£¬¼ì²âÒì³£Á÷Á¿¡£
? ʹÓÃ×îЩ¶´É¨Ã蹤¾ß¼ì²âÄÚ²¿ÊÜ©¶´Ó°ÏìµÄÉ豸×ʲú¡£
? ·çºÓ(Wind River)¹«Ë¾ÒÑÐû²¼Ïà¹Ø°æ±¾¸üкͲ¹¶¡ÐÅÏ¢¡£
? ÂÞ¿ËΤ¶û(Rockwell)¡¢Sonicwall¡¢Ê©ÀÖ(Xerox)µÈ¹«Ë¾ÒÑÐû²¼¸üаü£¬Ç뼰ʱ¸üС£
? ©¶´ÔÀí·ÖÎö
Armis LabsÔÚVxWorksÖй²·¢ÏÖÁË11¸ö0day©¶´£¬ÆäÖÐ6¸ö©¶´ÎªÑÏÖØ©¶´²¢¿ÉÒÔÔ¶³ÌÖ´ÐдúÂ루RCE£©£¬ÆäÓà5¸ö©¶´Îª¾Ü¾ø·þÎñ£¬ÐÅϢ鶻òÂ߼ȱÏÝ©¶´¡£¾ßÌåÈçϱíËùʾ£º

¶«Éƽ̨ADLabÑ¡È¡ÁËÈý¸ö±ÈÁ¦µäÐ͵Ä©¶´CVE-2019-12255¡¢CVE-2019-12257¡¢CVE-2019-12258½øÐзÖÎö¡£ËüÃÇÉæ¼°µ½ÁËIPNetÐÒéÕ»¼°DHCPÐÒé´¦ÖÃʵÏÖ¡£
¡ø CVE-2019-12255©¶´·ÖÎö
CVE-2019-12255©¶´ÊÇIPNetÐÒéÕ»ÔÚ´¦ÖÃTCP±¨ÎÄurg±ê־ʱµÄÕûÊýÒç³ö©¶´¡£ÔÚÊÜÓ°Ïì°æ±¾µÄVxWorks TCPÐÒéջʵÏÖÖУ¬Èç¹ûÒ»¸öTCP±¨ÎÄÉèÖÃÁËurg±êÖ¾£¬ÄÇô¸ÃTCP±¨ÎĵÄurgent pointer×ֶλáÔÚiptcp_deliverº¯ÊýÖÐÓÃÓÚ±äÁ¿tcb-> recv.urg_ptrµÄ¸³Öµ¡£ÔÚVxWorks°æ±¾6.8°æ±¾ÖУ¬ÊµÏÖ´úÂëÈçÏÂËùʾ£º
ÔÚ½ñºósocketÖ´ÐÐrecv£¨£©²Ù×÷ʱ£¬»áµ÷Óú¯Êýiptcp_usr_get_from_recv_queue£¬¸Ãº¯Êý´¦Öñ¨ÎĶÎʱÊ×ÏÈÅжϵ±Ç°TCPÊý¾Ý¶ÎÊÇ·ñ°üÂÞurgent±êÖ¾£¬Èç¹û°üÂ޸ñêÖ¾£¬Ôò¼ì²éÊÇ·ñ»á½«µ±Ç°TCP´°¿ÚÖеÄurgent Êý¾Ý¶ÁÈ¡³öÀ´£¨urgentÊý¾Ý²»ÔÊÐíͨ¹ýͨÀýrecv¶ÁÈ¡£©¡£¼ì²é·½Ê½ÈçÏÂͼËùʾ£º

ÆäÖУ¬ugent_pointerÊÇÔÚº¯Êýiptcp_deliverÖи³ÖµµÄ£¬lenΪrecvº¯Êý²ÎÊý£¬Èç¹ûͨ¹ý¼ÆËã·¢ÏÖ¶ÁÈ¡len³¤¶ÈµÄÊý¾Ý»á¶ÁÈ¡µ½urgent dataÊý¾Ý£¬ÔòÖØжÔlen¸³Öµ£¬ÒÔ±£Ö¤urgent Êý¾Ý²»±»¶ÁÈ¡¡£ÏÂÃæÁ½ÕÅͼչʾÁËÉÏÊö´úÂëµÄЧ¹û¡£


Èç¹û½ÓÊÕµ½µÄTCP¶ÎÖеÄurgent_pointer×Ö¶ÎÉèÖÃΪ0£¬Ôòiptcp_usr_get_from_recv_queueͨ¹ý¼ÆËãµÃµ½ÐÞÕýºóµÄlenΪ-1¡£ÓÉÓÚlenÊÇÎÞ·ûºÅÕûÊý£¬¼´¼´ÊÇ0xffffffff¡£Õâµ¼ÖÂrecv£¨£©µ÷ÓÃÖÐÉèÖõĶÁÈ¡³¤¶ÈÏÞÖÆʧЧ£¬´Ó¶ø¿½±´ËùÓпɶÁÈ¡µÄÊý¾Ýµ½Óû§»º³åÇø£¬Ôì³ÉÒç³ö¡£
©¶´ÑéÖ¤£º
ƾ¾Ý©¶´ÔÀí£¬ÎÒÃDZàдÁ˸鶴µÄPOCÑéÖ¤·¨Ê½£¬²¢ÔÚVxWorks6.8°æ±¾µÄϵͳÉϽøÐÐÁËÑéÖ¤¡£Í¨¹ýÖ±½Ó·¢ËÍurgent pointerΪ0µÄÊý¾Ý°ü£¬Ôì³ÉÕ»Òç³öºóÁýÕÖº¯Êý·µ»ØµØÖ·£¬ÈçÏÂͼËùʾ£º

¡ø CVE-2019-12257©¶´·ÖÎö
´Ë©¶´ÊÇVxWorksϵͳÉ豸ÄÚÖõÄipdhcpc£¨VxWorksµÄÄÚÖÃDHCP¿Í»§¶Ë£©ÔÚ´¦ÖÃDHCPÏìÓ¦Êý¾Ý°üʱ´¥·¢µÄ¶ÑÒç³ö©¶´¡£µ±ipdhcpcʵÑé´ÓDHCP·þÎñÆ÷»ñÈ¡IPµØַʱ£¬ÓëÄ¿±êÉ豸λÓÚͬһ×ÓÍøÖеĹ¥»÷Õß¿ÉÒÔͨ¹ýÌØÊâÉè¼ÆµÄDHCPÏìÓ¦Êý¾Ý°ü»Ø¸´£¬Ê¹µÃVxWorksϵͳÉ豸·¢Éú¶ÑÒç³ö£¬´Ó¶ø¿ÉÒÔÔÚVxWorksϵͳÉ豸ÉÏÖ´ÐÐÈÎÒâ´úÂë¡£

µ±Í¨¹ýµ÷ÓÃipdhcpc_if_eventcbº¯Êý¶Ôdhcp¿Í»§¶ËµÄhandle½øÐгõʼ»¯Ê±£¬ipdhcpc_if_eventcbº¯Êý»áµ÷ÓÃipdhcpc_handle_mallocº¯ÊýΪdhcp¿Í»§¶ËµÄhandle·ÖÅä¿Õ¼ä£¬ÔÚipdhcpc_handle_mallocº¯ÊýÖУ¬¸Ãº¯ÊýΪhandle->info.options·ÖÅäÁ˾ÞϸΪipdhcpc.max_message_size-264×ֽڵĿռ䡣

µ±ipdhcpc_daemonµÄÖ÷Ñ»·ÄÚÖ´ÐÐipcom_recvfrom½ÓÊÕÏìÓ¦Êý¾Ý°üʱ£º

ipdhcpc_daemonº¯Êý½ÓÊÕºóÊý¾Ýºó£¬»áµ÷ÓÃipdhcpc_reply_inputº¯Êý¶Ô½ÓÊÕµ½µÄdhcpÐÒéÊý¾Ý½øÐд¦Öã¬ÆäÖÐhandle->priv->in_optlen µÄ³¤¶È»ùÓÚipdhcpc.in_pkt_len¼ÆË㣬handle->priv->in_optlen=ipdhcpc.in_pkt_len-240£¬Ò²¾ÍÊÇ˵handle->priv->in_optlenµÄ×î´óֵΪipdhcpc.max_message_size-240¡£

È»ºó£¬ÔÚºóÐøµÄµ÷Óà ipdhcpc_offer_input£¨»òipdhcpc_ack_input£©£¬ÔÚÕâÁ½¸öº¯ÊýÖлáÖ´ÐÐmemcpy²Ù×÷£º

ÔÚÉÏͼÖУ¬handle-> priv-> in_optlenµÄ×î´óÖµ¿ÉÒÔÊÇipdhcpc.max_message_size - 240£¬Ëü´óÓÚΪhandle-> info.options·ÖÅäµÄ¿Õ¼ä£¬Îªipdhcpc.max_message_size - 264¡£ÔÚvxwroksÖÐipdhcpc.max_message_sizeֵĬÈÏΪ576£¬¹¥»÷ÕßÔÚ¾ÖÓòÍøÖÐͨ¹ý½á¹¹³¤¶ÈΪ576µÄ¶ñÒâdhcpÏìÓ¦Êý¾Ý¾Í¿ÉÒÔʹµÃ±»¹¥»÷É豸ÖеÄvxworksϵͳ·¢Éú24×ֽڵĶÑÒç³ö¡£
¡ø CVE-2019-12258©¶´·ÖÎö

Iptcp_inputº¯Êý»áµ÷ÓÃiptcp_process_options()º¯Êý´¦ÖÃTCPÍ·µÄoptionsÊý¾ÝÓò¡£Iptcp_process_options()º¯ÊýÔÚÅжÏoptionsÊý¾ÝÓòÀàÐÍʱ£¬ÊµÏÖ´úÂëÈçÏ£º

¸Ãswitchƾ¾ÝoptionsÊý¾ÝÓòµÄÀàÐͽøÐзַ¢£¬Õâ¸öcase·ÖÖ§ÊÇÉèÖÃMSSµÄ£¬ÐÐ80²¢ÅжϸÃÀàÐ͵ÄoptionsÊý¾ÝÓò³¤¶È±ØÐëΪ4£¬Èç¹û²»¼´ÊÇ4£¬¾ÍÅжÏMSS·Ç·¨£¬Ö±½ÓÍ˳ö¡£·µ»Øµ½iptcp_inputº¯ÊýÖУ¬ÓÉÓÚ·µ»ØֵСÓÚ0£¬¾Í½øÈëif·ÖÖ§£¬µ÷ÓÃiptcp_send_reset()º¯Êý£¬¸Ãº¯Êý¹¦Ð§ÊÇÖØÖò¢¶Ïµôµ±Ç°TCPÁ¬½Ó¡£Èç¹û¹¥»÷Õß·¢ËͶñÒâoptionsµÄTCPÊý¾Ý°ü£¬½«µ¼ÖÂÁ¬½Ó¶Ï¿ª¡£´Ë©¶´¿ÉÒÔÔÊÐí¹¥»÷ÕßÇ¿ÖÆÖØÖÃÁ¬½Óµ½ÊÜÓ°ÏìµÄVxWorksÉ豸µÄÈκÎTCP»á»°£¬Ôì³É¾Ü¾ø·þÎñ¹¥»÷¡£
? ABB¹«Ë¾¹¤Òµ×Ô¶¯»¯²úÎï
? ͨÓõçÆø¹¤Òµ×Ô¶¯»¯²úÎï? °¬Ä¬Éú(Emerson)¹«Ë¾¹¤Òµ¿ØÖÆÉ豸
? ÈÕÁ¢(HITACHI)¹«Ë¾Ò½ÁÆÉ豸
? °Ùͨ(Belden)¹¤ÒµÉ豸
? µÂ¶û¸ñ(Dr?ger)¹«Ë¾Ò½ÁÆÉ豸
? Ê©Ä͵Â(Schneider)¹«Ë¾PLC
? ÈýÁâ(Mitsubishi)¹«Ë¾¹¤Òµ¿ØÖÆÆ÷
? ·ÉÀûÆÖ(Philips)¹«Ë¾Ò½ÁÆÉ豸
? ¿â¿¨(KUKA)¹«Ë¾¹¤Òµ»úÆ÷ÈË
? Ê·Ìձȶû(St?ubli)¹«Ë¾¹¤Òµ»úÆ÷ÈË
? °²´¨(Yaskawa)µç»ú¹¤Òµ»úÆ÷ÈË
³ýÁËÒÔÉÏÉ豸£¬»¹ÓдóÁ¿Ê¹ÓÃVxWorksµÄÉ豸£¬ÏêϸÁбíÇë²ÎÕղο¼ÎÄÏ×Á´½Ó1ºÍ2¡£
²Î¿¼ÎÄÏ×£º
2.https://en.wikipedia.org/wiki/VxWorks#Notable_uses
3.https://armis.com/urgent11/
4.https://rockwellautomation.custhelp.com/app/answers/detail/a_id/1088561
5.https://www.sonicwall.com/support/product-notification/?sol_id=190717234810906
6.https://security.business.xerox.com/en-us/
7.https://www.windriver.com/security/announcements/tcp-ip-network-stack-ipnet-urgent11/