¶«É­Æ½Ì¨ADLab£ºVxWorks¶à¸öÔ¶³Ì©¶´·ÖÎö

Ðû²¼Ê±¼ä 2019-08-02
? ©¶´Åä¾°

VxWorksÊÇÊÀ½çÉÏʹÓÃ×î¹ã·ºµÄʵʱ²Ù×÷ϵͳ£¨RTOS£© £¬ÓÐÁè¼Ý20ÒŲ́É豸ÕýÔÚʹÓà £¬°üÂÞ¹¤Òµ¡¢µçÁ¦¡¢ÄÜÔ´ £¬º½¿Õº½ÌìµÈÐÐÒµÒªº¦»ù´¡ÉèÊ©¡£


½üÈÕ £¬ArmisÑо¿ÍŶÓArmis LabsÔÚVxWorksÖз¢ÏÖÁË11¸ö0day©¶´±»³ÆΪURGENT/11 £¬ÆäÖÐ6¸ö©¶´ÎªÑÏÖØ©¶´²¢¿ÉÒÔÔ¶³ÌÖ´ÐдúÂ루RCE£© £¬ÆäÓà5¸ö©¶´°üÂ޾ܾø·þÎñ¡¢ÐÅϢй¶ºÍÂß¼­È±ÏÝ©¶´¡£ÕâЩ©¶´Äܹ»Ê¹¹¥»÷ÕßÔ¶³Ì½Ó¹ÜÉ豸 £¬¶øÎÞÐè½»»¥ £¬ÉõÖÁ¿ÉÒÔÈƹý·À»ðǽµÈÖܱßÄþ¾²É豸¡£ÕâЩÌØÕ÷ʹÕâЩ©¶´¡°Ò×ÓÚʹÓá± £¬ÕâÒâζ×ÅËüÃÇ¿ÉÓÃÓÚ½«¶ñÒâÈí¼þÁ÷´«µ½ÍøÂçÄÚ²¿ £¬ÕâÖÖ¹¥»÷¾ßÓкܴóµÄDZÁ¦ £¬ÀàËÆÓÚWannaCry¶ñÒâÈí¼þµÄÁ÷´«·½Ê½ £¬¶«É­Æ½Ì¨ADLabÇ¿ÁÒ½¨ÒéÏà¹ØÓû§¾¡¿ì½øÐÐÉ豸°æ±¾Éý¼¶²¢×öºÃÍøÂçÄþ¾²É豸µÄ¹æÔòÉý¼¶ÊÂÇé¡£

? ©¶´Ó°Ïì°æ±¾


URGENT/11©¶´Ó°Ïì×Ô6.5°æÒÔÀ´µÄ¼¸ºõËùÓÐVxWorks°æ±¾ £¬²»°üÂÞΪÈÏÖ¤¶øÉè¼ÆµÄ²úÎï°æ±¾ £¬ÀýÈçVxWorks 653ºÍVxWorks Cert Edition¡£


? VxWorks7(SR540ºÍSR610)
? VxWorks6.5~6.9.4
? ʹÓÃIPNetÍøÂçЭÒéÕ»µÄVxWorks°æ±¾

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
±í1 ©¶´Ó°ÏìÁбí

? ½â¾ö·½°¸

? ·À»ðǽºÍIDS²úÎïÌí¼Ó¹æÔò £¬¼ì²âÒì³£Á÷Á¿¡£
? ʹÓÃ×îЩ¶´É¨Ã蹤¾ß¼ì²âÄÚ²¿ÊÜ©¶´Ó°ÏìµÄÉ豸×ʲú¡£
? ·çºÓ(Wind River)¹«Ë¾ÒÑÐû²¼Ïà¹Ø°æ±¾¸üкͲ¹¶¡ÐÅÏ¢¡£
? ÂÞ¿ËΤ¶û(Rockwell)¡¢Sonicwall¡¢Ê©ÀÖ(Xerox)µÈ¹«Ë¾ÒÑÐû²¼¸üаü £¬Ç뼰ʱ¸üС£

? ©¶´Ô­Àí·ÖÎö

Armis LabsÔÚVxWorksÖй²·¢ÏÖÁË11¸ö0day©¶´ £¬ÆäÖÐ6¸ö©¶´ÎªÑÏÖØ©¶´²¢¿ÉÒÔÔ¶³ÌÖ´ÐдúÂ루RCE£© £¬ÆäÓà5¸ö©¶´Îª¾Ü¾ø·þÎñ £¬ÐÅϢ鶻òÂß¼­È±ÏÝ©¶´¡£¾ßÌåÈçϱíËùʾ£º

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
±í2 ©¶´ÃèÊöÁбí


¶«É­Æ½Ì¨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°æ±¾ÖÐ £¬ÊµÏÖ´úÂëÈçÏÂËùʾ£º

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ1 iptcp_deliverÖÐÉèÖÃurg_ptrµÄ´úÂë


ÔÚ½ñºósocketÖ´ÐÐrecv£¨£©²Ù×÷ʱ £¬»áµ÷Óú¯Êýiptcp_usr_get_from_recv_queue £¬¸Ãº¯Êý´¦Öñ¨ÎĶÎʱÊ×ÏÈÅжϵ±Ç°TCPÊý¾Ý¶ÎÊÇ·ñ°üÂÞurgent±êÖ¾ £¬Èç¹û°üÂ޸ñêÖ¾ £¬Ôò¼ì²éÊÇ·ñ»á½«µ±Ç°TCP´°¿ÚÖеÄurgent Êý¾Ý¶ÁÈ¡³öÀ´£¨urgentÊý¾Ý²»ÔÊÐíͨ¹ýͨÀýrecv¶ÁÈ¡£©¡£¼ì²é·½Ê½ÈçÏÂͼËùʾ£º


¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ2 ¼ì²é¶ÁÈ¡Êý¾ÝÊÇ·ñ»á°üÂÞurgent data


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


¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ3 recvÇëÇóµÄÊý¾ÝÇøÓò£¨À´Ô´£ºURGENT/11¼¼Êõ°×ƤÊ飩

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ4 ÖØÐÂÐÞÕýlenÖ®ºórecv¶ÁÈ¡µÄÊý¾ÝÇøÓò£¨À´Ô´£ºURGENT/11¼¼Êõ°×ƤÊ飩


Èç¹û½ÓÊÕµ½µÄTCP¶ÎÖеÄurgent_pointer×Ö¶ÎÉèÖÃΪ0 £¬Ôòiptcp_usr_get_from_recv_queueͨ¹ý¼ÆËãµÃµ½ÐÞÕýºóµÄlenΪ-1¡£ÓÉÓÚlenÊÇÎÞ·ûºÅÕûÊý £¬¼´¼´ÊÇ0xffffffff¡£Õâµ¼ÖÂrecv£¨£©µ÷ÓÃÖÐÉèÖõĶÁÈ¡³¤¶ÈÏÞÖÆʧЧ £¬´Ó¶ø¿½±´ËùÓпɶÁÈ¡µÄÊý¾Ýµ½Óû§»º³åÇø £¬Ôì³ÉÒç³ö¡£


©¶´ÑéÖ¤£º


¸Ã©¶´Ó°ÏìµÄ°æ±¾°üÂÞVxWorks6.5µ½VxWorks 6.9.3¡£
ƾ¾Ý©¶´Ô­Àí £¬ÎÒÃDZàдÁ˸鶴µÄPOCÑéÖ¤·¨Ê½ £¬²¢ÔÚVxWorks6.8°æ±¾µÄϵͳÉϽøÐÐÁËÑéÖ¤¡£Í¨¹ýÖ±½Ó·¢ËÍurgent pointerΪ0µÄÊý¾Ý°ü £¬Ôì³ÉÕ»Òç³öºóÁýÕÖº¯Êý·µ»ØµØÖ· £¬ÈçÏÂͼËùʾ£º

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ5 CVE-2019-12255©¶´ÑéÖ¤

¡ø CVE-2019-12257©¶´·ÖÎö


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


ipdhcpcÊØ»¤½ø³ÌÆô¶¯ºó»á½øÈëipdhcpc_daemonº¯Êý½øÐÐÍøÂçÊý¾ÝµÄÑ­»·¼àÌý £¬ipdhcpc_daemonº¯ÊýÖ÷ÒªÁ÷³ÌÓÐÈý²½ £¬µÚÒ»²½ÊÇͨ¹ýµ÷ÓÃipdhcpc_if_eventcbº¯Êý¶ÔDHCP¿Í»§¶ËµÄhandle½øÐгõʼ»¯²¢·¢ËÍDHCP¹ã²¥ÇëÇó £¬µÚ¶þ²½Êǵ÷ÓÃipcom_recvfrom½ÓÊÕDHCP·þÎñÆ÷»Ø¸´µÄÏìÓ¦Êý¾Ý°ü £¬µÚÈý²½ÊÇͨ¹ýµ÷ÓÃipdhcpc_replay_input¶Ô½ÓÊÕµ½µÄÏìÓ¦Êý¾Ý°ü½øÐд¦Öá£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ6 ipdhcpc_daemonº¯ÊýÁ÷³ÌʾÒâ


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


¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ7 ipdhcpc_handle_mallocº¯ÊýÁ÷³ÌʾÒâ


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


´Ë´¦½ÓÊÕ×î¶àΪipdhcpc.max_message_size×Ö½ÚµÄÊý¾Ý°ü £¬ipdhcpc.in_pkt_lenµÄ×î´ó³¤¶ÈΪipdhcpc.max_message_size¡£

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ8 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¡£


¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ9 ipdhcpc_reply_inputº¯Êýµ÷ÓÃʾÒâ


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


¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ10 ipdhcpc_reply_inputÁ÷³ÌʾÒâ


ÔÚÉÏͼÖÐ £¬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©¶´·ÖÎö


CVE-2019-12255©¶´ÊÇIPNetЭÒéÕ»ÔÚ´¦ÖÃTCP±¨ÎÄ·ÖƬʱµÄ¾Ü¾ø·þÎñ©¶´¡£ÔÚÊÜÓ°ÏìµÄVxWorksϵͳÖÐIptcp_inputº¯ÊýÓÃÓÚ´¦ÖÃTCP·ÖƬµÄÊý¾Ý°ü £¬ÔÚ½âÎöTCPͷʱ £¬ÊµÏÖ´úÂëÈçÏ£º

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ11 Iptcp_inputº¯ÊýʾÒâ


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


¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
ͼ12 Iptcp_process_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¡£


²Î¿¼ÎÄÏ×£º


1.https://www.windriver.com/customers/
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/