Lodash¿âÔ­ÐÍ´«È¾·ì϶£¨CVE-2019-10744£©

°ä²¼¹¦·ò 2019-07-12

OG¶«·½Ìü¡¤(Öйú´ó½)


²¼¾°ÃèÊö


Lodash ÊÇÒ»¸ö JavaScript ¿â£¬Ô̺¬¼ò»¯×Ö·û´®¡¢¡¢Êý×Ö¡¢¡¢Êý×é¡¢¡¢º¯ÊýºÍ¶ÔÏó±à³ÌµÄ¹¤¾ß£¬Äܹ»Ô®ÊÖ·¨Ê½Ô±¸üÓÐЧµØ±àдºÍÊØ»¤ JavaScript ´úÂë¡£¡£²¢ÇÒÊÇÒ»¸öÊ¢ÐÐµÄ npm ¿â£¬½öÔÚGitHub ÉϾÍÓг¬¹ý 400 Íò¸öÏîĿʹÓã¬LodashµÄ±é¼°Âʼ«¶È¸ß£¬Ã¿ÔµÄÏÂÔØÁ¿³¬¹ý 8000 Íò´Î¡£¡£½üÆÚ±»±¬³öÒ»¸öÑÏÖØµÄÔ­ÐÍ´«È¾·ì϶¡£¡£


·ì϶Áбí


CVE ID  £º£º£º   CVE-2019-10744
·ì϶µÈ¼¶£º£º£º   ¸ßΣ
CVSSÆÀ·Ö£º£º£º   7.3
Ó°ÏìÁìÓò£º£º£º   4.17.11֮ǰµÄËùÓа汾

·ì϶ÏêÇé


ͨ¹ý»ú¹Øº¯ÊýÖØÔØµÄ·½Ê½£¬Lodash ¿âÖеĺ¯Êý defaultsDeep ºÜÓпÉÄܻᱻºýŪÔö³¤»òÅú¸Ä Object.prototype µÄÊôÐÔ£¬×îÖÕ¿ÉÄܵ¼Ö Web ÀûÓ÷¨Ê½±ÀÀ£»£»£»òŤתÆäÐÐΪ£¬¾ßÌåÈ¡¾öÓÚÊÜÓ°ÏìµÄÓÃÀý¡£¡£


Pony by Snyk


OG¶«·½Ìü¡¤(Öйú´ó½)

Ô­ÐÍ´«È¾ÊÇÒ»¸öÓ°Ïì JavaScript µÄ·ì϶¡£¡£Ô­ÐÍ´«È¾ÊÇÖ¸½«ÊôÐÔ×¢ÈëÏÖÓÐ JavaScript ˵»°»ú¹ØÔ­ÐÍ£¨Èç¶ÔÏ󣩵ÄÄÜÁ¦¡£¡£JavaScript ÔÊÐíËùÓжÔÏóÊôÐÔ±»¸ü¸Ä£¬ÀýÈçÈç_proto_£¬constructorºÍprototype¡£¡£¹¥»÷Õßͨ¹ý×¢ÈëÆäËüÖµÀ´°Ñ³ÖÕâЩÊôÐÔÀ´¸²¸Ç»ò´«È¾»ù´¡¶ÔÏóµÄ JavaScript ÀûÓ÷¨Ê½¶ÔÏóÔ­ÐÍ¡£¡£ÕâÑùºÜ¿ÉÄÜ»áÓ°ÏìÀûÓ÷¨Ê½Í¨¹ýÔ­ÐÍÁ´´¦Öà JavaScript ¶ÔÏóµÄ¹ý³Ì£¬´Ó¶øµ¼Ö»ؾø·þÎñ»òÔ¶³Ì´úÂëÖ´ÐС£¡£


Ô­ÐÍ´«È¾µÄÁ½ÖÖÖØÒª·½Ê½£º£º£º


²»°²È«µÄObjectµÝ¹é¹é²¢


°´õè¾¶½ç˵ÊôÐÔ


²»°²È«µÄ¶ÔÏóµÝ¹é¹é²¢


Ò×Êܹ¥»÷µÄµÝ¹é¹é²¢º¯ÊýµÄÂß¼­×ñÑ­ÒÔϸ߼¶Ä£ÐÍ£º£º£º

OG¶«·½Ìü¡¤(Öйú´ó½)
µ±Ô´¶ÔÏóÔ̺¬ÃûΪ_proto_defined with Object.defineProperty()µÄÊôÐÔʱ£¬²é³­ÊôÐÔÊÇ·ñ´æÔÚ²¢ÇÒÊÇÖ¸±êºÍÔ´´«µÝÉϵĶÔÏóµÄǰÌᣬ²¢Çҹ鲢½«ÓëÖ¸±ê½øÐеݹ飬×÷ΪԭÐÍObjectºÍÔ´µÄObject½ç˵¡£¡£

¶øºó¹¥»÷ÕßÔÚ Object Ô­ÐÍÉϸ´ÖÆÊôÐÔ¡£¡£


¿Ë¡²Ù×÷ÊÇÒ»¸öÌØÊâµÄ²»°²È«µÝ¹é¹é²¢×ÓÀ࣬Ëü²úÉúÔÚ¶Ô¿Õ¶ÔÏó½øÐеݹé¹é²¢Ê±£º£º£ºmerge({},source)¡£¡£


lodash ºÍ Hoek ÊÇÒ×Êܵݹé¹é²¢¹¥»÷Ó°Ïì¡£¡£


°´õè¾¶½ç˵ÊôÐÔ


ÓÐһЩ JavaScript ¿âʹÓà API ƾ¾Ý¸ø¶¨õè¾¶½ç˵¶ÔÏóµÄÊôÐÔÖµ¡£¡£Í¨³£ÊÜÓ°ÏìµÄº¯ÊýÔ̺¬´ËÊðÃû£º£º£ºtheFunction(object, path, value)

ÈôÊǹ¥»÷ÕßÄܹ»½ÚÖÆ¡°õè¾¶¡±µÄÖµ£¬ÔòÄܹ»½«´ËÖµÉèÖÃΪ_proto_.myValue¡£¡£

·À·¶´ëÊ©


¶³½á  Object.prototype £¬Ê¹Ô­ÐͲ»ÄÜÀ©³äÊôÐÔ

³ÉÁ¢ JSON schema

¶ã±Ü²»°²È«µÄµÝ¹éÐԹ鲢º¯Êý

ʹÓÃÎÞÔ­ÐͶÔÏó£¬Í»ÆÆÔ­ÐÍÁ´²¢Ô¤·À´«È¾¡£¡£

ѡȡÐ嵀 Map Êý¾ÝÀàÐÍ£¬°ü°ì Object ÀàÐÍ


¹ÌȻԭÐÍ´«È¾·ì϶ӰÏ켫¶ÈÑÏÖØ£¬µ«Êǹ¥»÷ÕßÏëÒªÀûÓÃËü²¢Ã»ÓÐÄÇôÈÝÒ×£¬ËûÃDZØÒªÉî¿ÌÏàʶÿ¸ö Web ÀûÓõŤ×÷µÀÀí¡£¡£

ÐÞ¸´½¨Òé


½¨ÒéÉý¼¶lodashµ½4.17.12


²Î¿¼Á´½Ó


https://snyk.io/blog/snyk-research-team-discovers-severe-prototype-pollution-security-vulnerabilities-affecting-all-versions-of-lodash/
https://snyk.io/vuln/SNYK-JS-LODASH-450202
https://snyk.io/blog/snyk-research-team-discovers-severe-prototype-pollution-security-vulnerabilities-affecting-all-versions-of-lodash/
https://snyk-rules-pre-repository.s3.amazonaws.com/snapshots/master/patches/npm/lodash/20190702/lodash_20190702_0_0_1f8ea07746963a535385a5befc19fa687a627d2b.patch