UPnPºÍ̸CallStranger·ì϶ӰÏìÊý°ÙÍòÉ豸

°ä²¼¹¦·ò 2020-06-30

Ò»¡¢·ì϶¸ÅÊö


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


¶þ¡¢·ì϶ӰÏì


Óë֮ǰµÄUPnP·ì϶·ÖÆç£¬CallStranger·ì϶´æÔÚÓÚºÍ̸Éè¼ÆÖУ¬Òò¶ø¸Ã·ì϶ӰÏìÏÕЩËùÓÐÖ§³ÖUPnPµÄÉ豸£¬Ô̺¬Windows 10ËùÓа汾¡¢Â·ÓÉÆ÷¡¢½Ó¼û½ÓÈëµã¡¢´òÓ¡»ú¡¢ÓÎÏ·»ú¡¢ÃÅÁå¶Ô½²»ú¡¢Ã½ÌåÀûÓ÷¨Ê½ºÍÉ豸¡¢ÉãÏñÍ·¡¢µçÊÓ»úµÈ¡£Æ¾¾ÝSHODANºÍZoomEyeµÄËÑË÷Á˾Ö£¬ÖÁÉÙº±¼ûÒÔ°ÙÍò¼ÆµÄÔÚÏßÉ豸Êܵ½Ó°Ïì¡£


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


Èý¡¢·ì϶·ÖÎö


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


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


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


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


CALLBACKµÄֵͨ³£Îª»Øµ÷µØÖ·µÄURL¡£NTÈ¡upnp:event°µÊ¾¶©ÔÄÊÂÎñ¡£


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


Õû¸ö¶©ÔÄÁ÷³Ì»òÐíÄܹ»¼ò»¯ÈçÏÂͼ¡£


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾

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


ÏÂͼΪIntel UPnP SDKÖв鳭CALLBACK URLµÄÓйشúÂ룬create_url_listº¯Êý½ö½ö²é³­ÁËURLÊÇ·ñºÏ·¨£¬²¢Ã»ÓÐÈ·¶¨ÆäÊÇ·ñºÏÀí¡£


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


ËÄ¡¢·ì϶·çÏÕ


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


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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Êý¾Ý°üµÄÊýÁ¿Æ¾¾ÝÉ豸²Ù×÷ϵͳºÍÅäÖÃµÄ·ÖÆç¶ø·ÖÆç£¬ÀûÓÃÄ³Æ·ÅÆÖÇÄܵçÊÓ¶ÔÊܺ¦É豸½øÐÐSYNºéË®¹¥»÷²âÊÔ£¬²âÊÔÁ˾ÖÈçÏÂͼËùʾ¡£


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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


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


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


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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


4.3 Êý¾ÝÌÓÒÝ


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


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


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


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


4.4 ¶Ë¿ÚɨÃè


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


ÈçǰÎÄÌáµ½µÄ£¬ÈôCALLBACK½ç˵Á˲»Ö¹Ò»¸öURL£¬Ôò»á°´°¤´Î³¢ÊÔTCPÏνÓ£¬Ö±µ½ÓÐÒ»¸ö³É¹¦£¬ÄÇôÕâ¸ö¹æ¶¨ÏÔȻҲÄܹ»ÓÃÓÚ¶Ë¿ÚɨÃ裬ÈçÏÂͼËùʾ£¬Èç¹û¹¥»÷Õß±ØÒªÉ¨ÃèIPΪ192.168.1.13µÄ555¶Ë¿ÚÊÇ·ñ¿ªÆô£¬ÄÇô¹¥»÷ÕßÖ»±ØÒª½«Ä³¸öÄܹ»¼à¿ØµÄURL¸éÖÃÔÚºó¼´¿ÉÈ·ÈÏ£¬Èô¹¥»÷ÕßÊÕµ½ÏνÓÒªÇó£¬Ôò¶Ë¿Ú먦Æô£¬·´Ö®£¬Ôò¿ªÆô¡£


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


Îå¡¢·ì϶»º½â¼°½¨¸´


¿ÉѡȡÈçÏ´ëÊ©½øÐзì϶»º½â£º

²é³­¿ÉÒÉÉ豸£¬ÈôÊÇûÓбØÒª£¬Ôò¹Ø¹Ø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




GA»Æ½ð¼×»ý¼«·ÀÓù³¢ÊÔÊÒ£¨ADLab£©


ADLab³ÉÁ¢ÓÚ1999Ä꣬ÊÇÖйú°²È«ÐÐÒµ×îÔç³ÉÁ¢µÄ¹¥·À¼¼Êõ×êÑг¢ÊÔÊÒÖ®Ò»£¬Î¢ÈíMAPP´òËãÖ÷Ìâ³ÉÔ±£¬¡°ºÚȸ¹¥»÷¡±¸ÅÏëÊ×ÍÆÕß¡£½ØÖ¹Ä¿Ç°£¬ADLabÒÑͨ¹ýCVEÀۼư䲼°²È«·ì϶1000Óà¸ö£¬Í¨¹ý CNVD/CNNVDÀۼư䲼°²È«·ì϶800Óà¸ö£¬³ÖÐøÎ¬³Ö¹ú¼ÊÍøÂ簲ȫÁìÓòÒ»Á÷Ë®×¼¡£³¢ÊÔÊÒ×êÑз½Ïòº­¸Ç²Ù×÷ϵͳÓëÀûÓÃϵͳ°²È«×êÑÓ×¢ÒÆ¶¯ÖÇÄÜÖն˰²È«×êÑÓ×¢ÎïÁªÍøÖÇÄÜÉ豸°²È«×êÑÓ×¢Web°²È«×êÑÓ×¢¹¤¿ØÏµÍ³°²È«×êÑÓ×¢ÔÆ°²È«×êÑС£×êÑгɾÍÀûÓÃÓÚ²úÆ·Ö÷Ìâ¼¼Êõ×êÑÓ×¢¹ú¶È³Áµã¿Æ¼¼ÏîÄ¿¹¥¹Ø¡¢×¨Òµ°²È«·þÎñµÈ¡£



GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾