UPnPЭÒéCallStranger©¶´Ó°ÏìÊý°ÙÍòÉ豸

Ðû²¼Ê±¼ä 2020-06-30

Ò»¡¢Â©¶´¸ÅÊö


2020Äê6ÔÂ8ÈÕ£¬Äþ¾²Ñо¿Ô±Yunus ?adirciÐû²¼UPnP£¨Í¨Óü´²å¼´Óã©Ð­Ò驶´Í¨¸æ£¨CVE-2020-12695£©£¬²¢½«ÆäÃüÃûΪCallStranger©¶´¡£¸Ã©¶´ÔÊÐí¹¥»÷ÕßÈƹýÄÚÍøµÄÊý¾Ý·Àй¶ϵͳ£¨DLP£©½øÐÐÊý¾ÝÌÓÒÝ£¬¿Éµ¼ÖÂÃô¸ÐÊý¾Ýй¶£¬¶øÇҿɶÔÉ豸ËùÔÚÄÚ²¿ÍøÂç½øÐÐɨÃ裬ÉõÖÁÄܽٳÖÉ豸½øÐÐÂþÑÜʽ¾Ü¾ø·þÎñ£¨DDOS£©¹¥»÷¡£¶«É­Æ½Ì¨ADLabÒÔij¿îÖÇÄܵçÊÓ×÷Ϊ²âÊÔÄ¿±ê£¬¶ÔCallStranger©¶´µÄΣº¦ÐÔ½øÐÐÁËÑÝʾ·ÖÎö¡£


¶þ¡¢Â©¶´Ó°Ïì


Óë֮ǰµÄUPnP©¶´²îÒ죬CallStranger©¶´´æÔÚÓÚЭÒéÉè¼ÆÖУ¬Òò´Ë¸Ã©¶´Ó°Ï켸ºõËùÓÐÖ§³ÖUPnPµÄÉ豸£¬°üÂÞWindows 10ËùÓа汾¡¢Â·ÓÉÆ÷¡¢·ÃÎʽÓÈëµã¡¢´òÓ¡»ú¡¢ÓÎÏ·»ú¡¢ÃÅÁå¶Ô½²»ú¡¢Ã½ÌåÓ¦Ó÷¨Ê½ºÍÉ豸¡¢ÉãÏñÍ·¡¢µçÊÓ»úµÈ¡£Æ¾¾ÝSHODANºÍZoomEyeµÄËÑË÷½á¹û£¬ÖÁÉÙÓÐÊýÒÔ°ÙÍò¼ÆµÄÔÚÏßÉ豸Êܵ½Ó°Ïì¡£


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


Èý¡¢Â©¶´·ÖÎö


UPnPÈ«³ÆΪUniversal Plug andPlay£¬¼´Í¨Óü´²å¼´Óã¬UPnPÔÊÐíÖÖÖÖÍøÂçÉ豸ÔÚûÓÐÈκÎÌØÊâÉèÖûòÅäÖõÄÇé¿öϽøÐÐͨÐÅ£¬Ê¹É豸Ï໥¿É×Ô¶¯Á¬½ÓºÍЭͬÊÂÇé¡£ÀýÈçеĴòÓ¡»ú²åÉϵ粢Á¬½ÓÍøÂçÖ®ºó£¬¾ÖÓòÍøÄڵļÆËã»ú¾ÍÖªµÀÁË´òÓ¡»úµÄÐͺŵÈÐÅÏ¢£¬·½±ã½øÐÐÇý¶¯°²×°¡£


ÔÚUPnPЭÒé¹æ·¶ÖÐÓÐÒ»¸ö·Ç³£ÖØÒªµÄ¹¦Ð§Ä£¿é£¬½Ð×öʼþ(Eventing)¡£ÔÚUPnP·þÎñ½øÐеÄʱ¼äÄÚ£¬Ö»ÒªÉ豸ÓÃÓÚUPnP·þÎñµÄ±äÁ¿Öµ·¢Éú±ä»¯»òÕßģʽ·¢ÉúÁ˸ı䣬¾Í»á·¢ÉúÒ»¸öʼþ£¬ËæÖ®ÏòÕû¸öÍøÂç½øÐй㲥¡£»òÕßÓû§¿ÉÒÔÊÂÏÈÏòUPnPÉ豸·¢ËͶ©ÔÄÇëÇ󣬱£Ö¤UPnPÉ豸¼°Ê±µØ½«Ê¼þ´«Ë͹ýÀ´¡£


UPnP DeviceArchitecture 2.0[1]ÖйØÓÚUPnPµÄNTÓëCALLBACK¶©ÔÄÄ£¿éÓÐÈçϸñʽ£º


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


publisher pathÒ»°ãΪ¶©ÔĵķþÎñ£¬ÒÔGENA¸ñʽ´æ·ÅÔÚÉ豸µÄij¸öXMLÎļþÖУ¬ÀàËÆÏÂͼ¡£


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


CALLBACKµÄÖµÒ»°ãΪ»Øµ÷µØÖ·µÄURL¡£NTÈ¡upnp:eventÌåÏÖ¶©ÔÄʼþ¡£


UPnPЭÒé¹æ·¶ÎĵµÖÐÌáµ½£ºCALLBACKÊDZØÌîÇøÓò£¬ËùÌîÐÅϢΪ·¢ËÍʼþÐÅÏ¢µÄURL¡£Ò»°ãÇé¿öÏÂΪUPnP¹©Ó¦ÉÌÖ¸¶¨¡£Èç¹ûÆäÖнç˵Á˲»Ö¹Ò»¸öURL£¬É豸»á°´Ë³ÐòʵÑéÁ¬½Ó£¬Ö±µ½ÓÐÒ»¸öÁ¬½ÓÀֳɡ£Ã¿¸öURLÒ»°ãΪHTTPЭÒé(¼´Ç°×ºÎª¡±http://¡±)¡£É豸²»µÃÒÔÈκη½Ê½½Ø¶ÏÕâЩURL¡£Èç¹ûÄÚ´æ²»×ãÒÔ´æ´¢ËùÓеÄCALLBACK URL£¬É豸»á¾Ü¾ø¶©ÔÄ¡£


Õû¸ö¶©ÔÄÁ÷³Ì´ó¸Å¿ÉÒÔ¼ò»¯ÈçÏÂͼ¡£


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

ºÜÏÔÈ»£¬¸ÃЭÒ鲢ûÓжÔCALLBACK´«ÈëµÄURL½øÐÐÏÞÖƺ͹淶£¬Ò²¾ÍÊÇ˵£¬CALLBACKURLÊǹ¥»÷Õ߿ɿصÄ¡£


ÏÂͼΪIntel UPnP SDKÖмì²éCALLBACK URLµÄÏà¹Ø´úÂ룬create_url_listº¯Êý½ö½ö¼ì²éÁËURLÊÇ·ñºÏ·¨£¬²¢Ã»ÓÐÈ·¶¨ÆäÊÇ·ñºÏÀí¡£


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


ËÄ¡¢Â©¶´Î£º¦


CallStranger©¶´ËùÔì³ÉµÄΣº¦¿ÉÒÔ·ÖÈý¸ö·½Ã棺DDoS¹¥»÷¡¢Êý¾ÝÌÓÒݺͶ˿ÚɨÃè¡£ÆäÖÐÔì³ÉµÄDDoS¹¥»÷¿ÉÒÔ·ÖÁ½ÖÖ£¬SYNºéË®¹¥»÷ºÍTCP·´Éä·Å´ó¹¥»÷£¬ÈçÏÂͼËùʾ¡£


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


4.1 SYNºéË®¹¥»÷


¼ÙÉèÎÒÃÇÒѾ­Í¨¹ýһЩҪÁì(ÈçÔÚ¾ÖÓòÍø¹ã²¥µÈ)»ñµÃÁËijЩÉ豸UPnP·þÎñµÄeventSubURL£¬ÏÂÃæ¾Í¿ÉÒÔÏòUPnPÉ豸ÌᳫһÏÔÄ·þÎñ£¬¸ñʽÈçÏÂ:


SUBSCRIBE eventSubURLHTTP/1.1

NT:upnp:enent

Callback: deliveryURL

Host: upnpÉ豸:upnp·þÎñ¶Ë¿Ú


ÈçÇ°ÎÄЭÒé¹æ·¶ÖÐÌáµ½µÄ£¬ÈôCALLBACL ValueÖнç˵Á˲»Ö¹Ò»¸öURL£¬Ôò»á°´Ë³ÐòʵÑéTCPÁ¬½Ó£¬Ö±µ½ÓÐÒ»¸öÁ¬½ÓÀֳɡ£ÄÇô¹¥»÷Õß¿ÉÔÚCALLBACK ValueÖо«ÐĽṹ¶à¸öURL£¬Ê¹Ã¿Ò»¸ö¶¼ÎÞ·¨Á¬½ÓÀֳɣ¬ÕâÑùUPnPÉ豸¾Í»áÓöà¸öSYN°üÒÀ´Î¶Ôÿ¸öURLʵÑéTCPÎÕÊÖ¡£¼ÙÉè¹¥»÷Õß¿ÉÒԲٿغܶà¸öÉ豸£¬¾Í»áµ¼ÖÂÊܺ¦É豸ÔâÊÜDDoS¹¥»÷¡£


SYNÊý¾Ý°üµÄÊýÁ¿Æ¾¾ÝÉ豸²Ù×÷ϵͳºÍÅäÖõIJîÒì¶ø²îÒ죬ÀûÓÃijƷÅÆÖÇÄܵçÊÓ¶ÔÊܺ¦É豸½øÐÐSYNºéË®¹¥»÷²âÊÔ£¬²âÊÔ½á¹ûÈçÏÂͼËùʾ¡£


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


¸ÃÖÇÄܵçÊÓÿÊÕµ½Ò»¸öCALLBACK Value¾Í»á·¢ËÍ8¸öSYNÊý¾Ý°üʵÑéÁ¬½ÓÊܺ¦É豸¡£ÈôÎÒÃÇÿ¸öCALLBACKµÄURLֵΪ25×Ö½Ú£¬ÄÇô´ø¿í·Å´óÒò×Ó±ã¿ÉÒÔµ½´ï8*60/25=19.2¡£ÒòΪCALLBACK ValueµÄ¸öÊýÊÇûÓÐÏÞÖƵÄ£¬ËùÒÔÀíÂÛÉÏÊÇ¿ÉÒÔÎÞÏÞ·Å´óµÄ¡£


4.2 TCP·´Éä·Å´ó¹¥»÷


Windows Media PlayerÔÚ²¥·ÅÊÓƵʱҲÓÐÏàÓ¦µÄUPnP·þÎñ£¬ÎÒÃÇ»ñÈ¡µ½µÄUPnP·þÎñÁбíÈçÏ£º


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


ÎÒÃÇÑ¡È¡ÆäÖÐÒ»Ïî·þÎñÀ´²âÊÔһϡ£¹¥»÷ÕßÖ»ÐèÒª·¢ËÍ210×Ö½Ú¶©ÔÄ°ü£¬ÈçÏÂͼ¡£


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


Êܺ¦É豸֮ºó¾Í»áÊÕµ½½ü700×Ö½ÚµÄÊý¾Ý°ü£¬·Å´óÒò×Ó´ïÈý±¶¶à¡£Æä·Å´óЧ¹ûÒ»°ãÓëUPnPÉ豸µÄ²Ù×÷ϵͳºÍ³§ÉÌÅäÖÃÓйØ¡£


4.3 Êý¾ÝÌÓÒÝ


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


Ò»°ãÇé¿öÏ£¬ÆóÒµÄÚ²¿ÍøÂ綼ÓвîÒìµÄÄþ¾²Æ·¼¶»®·Ö¡£µ±¹¥»÷ÕßÉø͸µ½ÆóÒµÄÚÍøʱ£¬ÈôÄÚÍø¿ªÆôÊý¾Ýй¶·À»¤ÏµÍ³£¬ÎÞ·¨½«»ñµÃµÄÃô¸ÐÊý¾Ý´«Êä³öÈ¥£¬´ËʱUPnPÉ豸»áÊÇÒ»¸öºÜºÃµÄÌø°å¡£


ÔÚRFC7230µÄ3.1.1½Ú[2]ÖУ¬²¢Ã»ÓжÔRequest LineµÄ³¤¶È×öÈκÎÏÞÖÆ£¬ÕâʹµÃ¹¥»÷Õß¿ÉÒÔ½«Êý¾Ýͨ¹ýCallbackµÄURLÖµ´«Êä³öÈ¥¡£ÈçÏÂͼ£¬Ä³Æ·ÅÆÖÇÄܵçÊÓÒ»´ÎÇëÇó¾Í´«ÊäÁË2500KBµÄÊý¾Ý¡£


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


4.4 ¶Ë¿ÚɨÃè


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


ÈçÇ°ÎÄÌáµ½µÄ£¬ÈôCALLBACK½ç˵Á˲»Ö¹Ò»¸öURL£¬Ôò»á°´Ë³ÐòʵÑéTCPÁ¬½Ó£¬Ö±µ½ÓÐÒ»¸öÀֳɣ¬ÄÇôÕâ¸ö¹æÔòÏÔȻҲ¿ÉÒÔÓÃÓڶ˿ÚɨÃ裬ÈçÏÂͼËùʾ£¬¼ÙÉè¹¥»÷ÕßÐèҪɨÃèIPΪ192.168.1.13µÄ555¶Ë¿ÚÊÇ·ñ¿ªÆô£¬ÄÇô¹¥»÷ÕßÖ»ÐèÒª½«Ä³¸ö¿ÉÒÔ¼à¿ØµÄURL·ÅÖÃÔÚºó¼´¿ÉÈ·ÈÏ£¬Èô¹¥»÷ÕßÊÕµ½Á¬½ÓÇëÇó£¬Ôò¶Ë¿Ú먦Æô£¬·´Ö®£¬Ôò¿ªÆô¡£


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


Î塢©¶´»º½â¼°ÐÞ¸´


¿É½ÓÄÉÈçÏ´ëÊ©½øÐЩ¶´»º½â£º

¼ì²é¿ÉÒÉÉ豸£¬Èç¹ûûÓÐÐëÒª£¬Ôò¹Ø±ÕUPnP¶Ë¿Ú¡£

ÔÚÍø¹ØµÈÉ豸ÖÐÉó¼ÆNOTIFYHTTPÊý¾Ý°ü¡£

ÔÚ×îиüеÄUPnPЭÒé¹æ·¶[1]4.1.1½ÚÖУ¬¿ÉÒÔ¿´³ö¿ª·¢ÕßÏÞÖÆÁ˶©ÔÄʼþµÄÔ´IPºÍÄ¿±êIP¶¼±ØÐëÔÚÄÚÍøÖУ¬Õâ´ÓÒ»¶¨Ë®Æ½ÉÏÐÞ¸´Á˸鶴¡£


²Î¿¼Á´½Ó£º


[1]https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf

[2]https://tools.ietf.org/html/rfc7230#section-3.1.1

[3]https://delaat.net/rp/2008-2009/p26/report.pdf

[4]https://kb.cert.org/vuls/id/339275

[5]https://zh-cn.tenable.com/blog/cve-2020-12695-callstranger-vulnerability-in-universal-plug-and-play-upnp-puts-billions-of

[6]https://www.youtube.com/watch?v=hJSxDHPyTBE




¶«É­Æ½Ì¨»ý¼«·ÀÓùʵÑéÊÒ£¨ADLab£©


ADLab½¨Á¢ÓÚ1999Ä꣬ÊÇÖйúÄþ¾²ÐÐÒµ×îÔ罨Á¢µÄ¹¥·À¼¼ÊõÑо¿ÊµÑéÊÒÖ®Ò»£¬Î¢ÈíMAPP¼Æ»®ºËÐijÉÔ±£¬¡°ºÚȸ¹¥»÷¡±¿´·¨Ê×ÍÆÕß¡£½ØֹĿǰ£¬ADLabÒÑͨ¹ýCVEÀÛ¼ÆÐû²¼Äþ¾²Â©¶´1000Óà¸ö£¬Í¨¹ý CNVD/CNNVDÀÛ¼ÆÐû²¼Äþ¾²Â©¶´800Óà¸ö£¬Á¬Ðø±£³Ö¹ú¼ÊÍøÂçÄþ¾²ÁìÓòÒ»Á÷Ë®×¼¡£ÊµÑéÊÒÑо¿Æ«Ïòº­¸Ç²Ù×÷ϵͳÓëÓ¦ÓÃϵͳÄþ¾²Ñо¿¡¢Òƶ¯ÖÇÄÜÖÕ¶ËÄþ¾²Ñо¿¡¢ÎïÁªÍøÖÇÄÜÉ豸Äþ¾²Ñо¿¡¢WebÄþ¾²Ñо¿¡¢¹¤¿ØϵͳÄþ¾²Ñо¿¡¢ÔÆÄþ¾²Ñо¿¡£Ñо¿½á¹ûÓ¦ÓÃÓÚ²úÎïºËÐļ¼ÊõÑо¿¡¢¹ú¼ÒÖصã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢×¨ÒµÄþ¾²·þÎñµÈ¡£



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