Lodash¿âÔ­ÐÍÎÛȾ©¶´£¨CVE-2019-10744£©

Ðû²¼Ê±¼ä 2019-07-12

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


Åä¾°ÃèÊö


Lodash ÊÇÒ»¸ö JavaScript ¿â £¬°üÂÞ¼ò»¯×Ö·û´®¡¢Êý×Ö¡¢Êý×é¡¢º¯ÊýºÍ¹¤¾ß±à³ÌµÄ¹¤¾ß £¬¿ÉÒÔ×ÊÖú·¨Ê½Ô±¸üÓÐЧµØ±àдºÍά»¤ JavaScript ´úÂë¡£¶øÇÒÊÇÒ»¸öÁ÷ÐÐµÄ npm ¿â £¬½öÔÚGitHub ÉϾÍÓÐÁè¼Ý 400 Íò¸öÏîĿʹÓà £¬LodashµÄÆÕ¼°Âʷdz£¸ß £¬Ã¿ÔµÄÏÂÔØÁ¿Áè¼Ý 8000 Íò´Î¡£½üÆÚ±»±¬³öÒ»¸öÑÏÖصÄÔ­ÐÍÎÛȾ©¶´¡£


©¶´Áбí


CVE ID  £º   CVE-2019-10744
©¶´Æ·¼¶£º   ¸ßΣ
CVSSÆÀ·Ö£º   7.3
Ó°Ï췶Χ£º   4.17.11֮ǰµÄËùÓа汾

©¶´ÏêÇé


ͨ¹ý½á¹¹º¯ÊýÖØÔصķ½Ê½ £¬Lodash ¿âÖеĺ¯Êý defaultsDeep ºÜÓпÉÄܻᱻÆÛÆ­Ìí¼Ó»òÐÞ¸Ä Object.prototype µÄÊôÐÔ £¬×îÖÕ¿ÉÄܵ¼Ö Web Ó¦Ó÷¨Ê½±ÀÀ£»ò¸Ä±äÆäÐÐΪ £¬¾ßÌåÈ¡¾öÓÚÊÜÓ°ÏìµÄÓÃÀý¡£


Pony by Snyk


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

Ô­ÐÍÎÛȾÊÇÒ»¸öÓ°Ïì JavaScript µÄ©¶´¡£Ô­ÐÍÎÛȾÊÇÖ¸½«ÊôÐÔ×¢ÈëÏÖÓÐ JavaScript ÓïÑԽṹԭÐÍ£¨È繤¾ß£©µÄÄÜÁ¦¡£JavaScript ÔÊÐíËùÓй¤¾ßÊôÐÔ±»¸ü¸Ä £¬ÀýÈçÈç_proto_ £¬constructorºÍprototype¡£¹¥»÷Õßͨ¹ý×¢ÈëÆäËüÖµÀ´ÀûÓÃÕâЩÊôÐÔÀ´ÁýÕÖ»òÎÛȾ»ù´¡¹¤¾ßµÄ JavaScript Ó¦Ó÷¨Ê½¹¤¾ßÔ­ÐÍ¡£ÕâÑùºÜ¿ÉÄÜ»áÓ°ÏìÓ¦Ó÷¨Ê½Í¨¹ýÔ­ÐÍÁ´´¦Öà JavaScript ¹¤¾ßµÄ¹ý³Ì £¬´Ó¶øµ¼Ö¾ܾø·þÎñ»òÔ¶³Ì´úÂëÖ´ÐС£


Ô­ÐÍÎÛȾµÄÁ½ÖÖÖ÷Òª·½Ê½£º


²»Äþ¾²µÄObjectµÝ¹éºÏ²¢


°´Â·¾¶½ç˵ÊôÐÔ


²»Äþ¾²µÄ¹¤¾ßµÝ¹éºÏ²¢


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

¶«É­¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾
µ±Ô´¹¤¾ß°üÂÞÃûΪ_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 ÀàÐÍ


ËäȻԭÐÍÎÛȾ©¶´Ó°Ïì·Ç³£ÑÏÖØ £¬µ«Êǹ¥»÷ÕßÏëÒªÀûÓÃËü²¢Ã»ÓÐÄÇôÈÝÒ× £¬ËûÃÇÐèÒªÉîÈëÁ˽âÿ¸ö 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