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

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

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


²¼¾°ÃèÊö


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


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

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


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


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


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


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


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

GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
µ±Ô´¶ÔÏóÔ̺¬ÃûΪ_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