npmã¬ãžã¹ããªå ã®æªè³ªãªcrossenvããã±ãŒãž
ä»å¹Žã®8æ1æ¥ãç§ãã¡npmjs.comã®ç®¡çè ã¯ãäžè¬çãª
cross-env
ãšéåžžã«ãã䌌ãååã®ããã±ãŒãžããã€ã³ã¹ããŒã«ã³ã³ããã¹ãããnpm.hacktask.netã«ç°å¢å€æ°ãéä¿¡ããããšãTwitterã§éç¥ãããŸããã ãã®ããã±ãŒãžãããã«èª¿æ»ããã¬ãžã¹ããªããåé€ããŸããã ç¶æ³ãããã«èª¿æ»ããçµæãã¬ãžã¹ããªå ã«å¥ã®40åã®æªæã®ããããã±ãŒãžãçºèŠãããŸããã
7æ19æ¥ããŠãŒã¶ãŒhacktaskã¯å€ãã®ããã±ãŒãžãå ¬éããŸããããããã®ããã±ãŒãžã®ååã¯ã人æ°ã®ããnpmããã±ãŒãžã®ååãšéåžžã«äŒŒãŠããŸããã ãã®çŸè±¡ããtypo-squattingããšåŒã³ãŸããããã¯ãã¿ã€ããã¹ã«ããç¹å®ã®ãªãœãŒã¹ã®æŒåã§ãã 以åã¯ãããã¯äž»ã«å¶ç¶ã«èµ·ãããŸããã ããã±ãŒãžãåœåãããã®æ¹æ³ã®æå³çãªäœ¿çšãèŠãŠããŸããããããã¯æ¢åã®ããã±ãŒãžãšç«¶åããã©ã€ãã©ãªã®äœè ã«é Œã£ãŠããŸããã çŸåšãããã±ãŒãžã®ååã¯ç¹å¥ã«éžæãããŠãããããã¯æããã«æªæãæã£ãŠè¡ãããŸããã ã€ãŸããããã±ãŒãžã®äœæè ã¯ãèŠåœéãã®ãŠãŒã¶ãŒããããŒã¿ãçãããšãæå³ããŠããŸããã ãã®çµæããã¹ãŠã®hacktaskãŠãŒã¶ãŒããã±ãŒãžãã¬ãžã¹ããªããåé€ãããŸããã
Lift Securityã® Adam Baldwinããã®äºä»¶ã«èå³ãæã¡ãã¬ãžã¹ããªã«hacktaskã«å±ããªããåãã³ãŒããå«ãä»ã®ããã±ãŒãžãå«ãŸããŠãããã©ããã調ã¹ãããšã«ããŸããã ããã«ã¯ãå ¬éãããŠãããã¹ãŠã®ããã±ãŒãžã®ã³ã³ãã³ãã®ããã·ã¥ã®ãªã¹ããå«ãŸããŠããããããã®ãããªèª¿æ»ãå¯èœã«ãªããŸãã 圌ã¯ãã¬ãžã¹ããªã§åãå 容ã®ä»ã®ãã¡ã€ã«ãèŠã€ããããšãã§ããŸããã§ããã
maliciousæªæã®ããããã±ãŒãžã®ãªã¹ã
7æ19æ¥ãã7æ31æ¥ãŸã§ã®ããŠã³ããŒãç·æ°ãå«ãhacktaskã®ããã±ãŒãžã®ãªã¹ãã以äžã«ç€ºããŸãã ãããã®ããã±ãŒãžã®ããŠã³ããŒãæ°ã¯ãæªæã®ããã³ãŒããæ€åºãããçŽåŸã«å¢å ããŸãããããã¯ãåé¡ã«å¯Ÿããäžè¬çãªé¢å¿ãåå ã§ãã åé¡ãç¹å®ããåã«ããŒã¿ãããŠã³ããŒããããšãã€ã³ã·ãã³ãã®èŠæš¡ãããæ£ç¢ºã«åæ ãããŸãã ããã¯ãã¬ãžã¹ããªãã©ãŒãžã®èªåããŠã³ããŒãã®æ°ã«å¯Ÿå¿ãããããã¬ãžã¹ããªã§å ¬éãããŠããå ¬éããã±ãŒãžã®äžè¬çãªæ°ã¯çŽ40ã®ããŠã³ããŒãã§ããããšã«æ³šæããŠãã ããã ãããèãããšãå®éã®è åšã¯
crossenv
ããã±ãŒãžã«ç±æ¥ããããšã
crossenv
ãŸã
crossenv
ããã±ãŒãžã¯700件è¿ãã®ããŠã³ããŒããèšé²ãã2çªç®ã«
jquery.js
ããã±ãŒãžã§ãã ãã ããããã§ã¯ãã»ãšãã©ã®ããŠã³ããŒãã
crossenv
ããã±ãŒãžã®16ã®å ¬éãããããŒãžã§ã³ã®ã³ããŒãèŠæ±ãããã©ãŒã«ãã£ãŠå®è¡ããããšããäºå®ãèæ ®ããå¿ èŠããããŸãã å®éã®
crossenv
ã€ã³ã¹ããŒã«ã®æ°ã¯çŽ50ãããããããããå°ãªããšæšå®ãããŸãã
- ããã«ã¯ãªïŒ42
- cross-env.jsïŒ43
- crossenvïŒ679
- d3.jsïŒ72
- fabric-jsïŒ46
- ffmepgïŒ44
- gruntcliïŒ67
- http-proxy.jsïŒ41
- jquery.jsïŒ136
- mariadbïŒ92
- ã¢ã³ãŽã¹ïŒ196
- mssql-nodeïŒ46
- mssql.jsïŒ48
- mysqljsïŒ77
- ããŒããã¡ããªãã¯ïŒ87
- node-opencvïŒ94
- node-openslïŒ40
- node-opensslïŒ29
- node-sqliteïŒ61
- node-tkinterïŒ39
- nodecaffeïŒ40
- nodefabricïŒ44
- nodeffmpegïŒ39
- nodemailer-jsïŒ40
- nodemailer.jsïŒ39
- nodemssqlïŒ44
- noderequestïŒ40
- nodesassïŒ66
- nodesqliteïŒ45
- opencv.jsïŒ40
- openssl.jsïŒ43
- proxy.jsïŒ43
- ã·ã£ããŠãœãã¯ïŒ40
- smbïŒ40
- sqlite.jsïŒ48
- å¹³æ¹ãªããã«ïŒ45
- sqlserverïŒ50
- tkinterïŒ45
ãã®ãªã¹ãããäœããããŠã³ããŒãããŠã€ã³ã¹ããŒã«ããå Žåãã·ã§ã«ç°å¢ã«ããå¯èœæ§ã®ããè³æ Œæ å ±ãããã«éã¢ã¯ãã£ãåãŸãã¯å€æŽããå¿ èŠããããŸãã
registryã¬ãžã¹ããªãä¿è·ããããã®ãããªãã¢ã¯ã·ã§ã³ã«ã€ããŠ
hacktaskãŠãŒã¶ãŒã®ã¡ãŒã«ã¢ãã¬ã¹ããnpmã¬ãžã¹ããªã«ããã±ãŒãžãå ¬éããããšã¯ãããã¯ãããŸãã æè¿ã§ã¯ãããŠã¹ã§2åã¯ãªãã¯ããã ãã§ã¡ãŒã«ãå ¥åã§ããå Žåãããã¯ããã¯ããŒã ããã¯ã¿ã¹ã¯ã®èåŸã«ãã人ãå±éºãªããã±ãŒãžãå ¬éããããšããæ°ããè©Šã¿ãé»æ¢ããã®ã«ååã§ã¯ãããŸããããããã¯å¿ èŠãªæé ã§ãããšå€æããŸããã
ç§ãã¡ã¯ãLift Securityããã³Node Security Projectããå ¬éãããŠããããã±ãŒãžã®éçåæãå®è¡ããçŸåšé²è¡äžã®äœæ¥ã§ãµããŒãããŠããŸããããããã®åªåã«ãããåé¡ã®ããããã±ãŒãžãå®å šã«èŠã€ããããšã¯ã§ããŸããã ãããªãã·ã¥æã«æ害ãªäœããããã±ãŒãžã«å«ãŸããŠãããã©ãããå€æããããšã¯ããã¡ãããã·ã£ããããŠã³ã®åé¡ã«çžåœããããããããè¡ãããšã¯ã§ããŸããã
ååãå¶ç¶ãŸãã¯æå³çã«æ¢åã®ããã±ãŒãžã®ååã«éåžžã«è¿ãããã±ãŒãžã®å ¬éãæ€åºããã³é²æ¢ããããã®ããŸããŸãªã¢ãããŒãã«ã€ããŠèª¬æããŸãã ãã®åé¡ãããã°ã©ã ã§è§£æ±ºããæ¹æ³ãããããããã䜿çšããŠãã®ãããªããã±ãŒãžã®å ¬éãçŠæ¢ããå ŽåããããŸãã SmyteãµãŒãã¹ã䜿çšããŠã¹ãã ã®å ¬éãæ€åºãã ããã䜿çšããŠãå©çšèŠçŽã®ä»ã®çš®é¡ã®éåãæ€åºããŸãã
æªæã®ããnpmããã±ãŒãžã«ææãããããžã§ã¯ããèŠã€ããæ¹æ³
以äžã¯ããªã¹ã«ãŒãã«ã ã¹ãã³ã®ãã€ãŒãã®ã¹ã¯ãªãŒã³ã·ã§ããã§ããnpmjs.comã®ãããã§ã
crossenv
ããã±ãŒãžãç°å¢å€æ°ãçãå¯èœæ§ã
crossenv
ããšãããããŸããã
Crossenvããã±ãŒãžåæ
ããã¯ãããŸããŸãªãµãŒãã¹ã®è³æ Œæ å ±ãç°å¢å€æ°ã«å«ãŸããŠããå¯èœæ§ãããããšãèæ ®ãããšãç¹ã«å±éºã§ã ã åé¡ã¯
crossenv
ããã±ãŒãžã«éå®ãããŸããã ããã¯ããã±ãŒãžã®ã»ããå šäœã§ãã ãããã®ãã¹ãŠã¯ããããã®ååã人æ°ã®ããã¢ãžã¥ãŒã«ã®ååã«äŒŒãŠããããã€ãã³ããªããªã©ã®ã¿ã€ããã¹ã«äŒŒãŠãããšããç¹ã§æ³šç®ã«å€ããŸãã
projectsæªæã®ããããã±ãŒãžã®ãããžã§ã¯ãã®ç¢ºèª
åé¡ã®ããã±ãŒãžã¯ã¬ãžã¹ããªããåé€ãããŠããŸãããããã±ãŒãžã®ã€ã³ã¹ããŒã«äžã«ããŒã¿ãçãŸããã®ã§ããããã®ãããããã€ã³ã¹ããŒã«ãããã©ããã確èªããå¿ èŠããããŸãã Ivan Akulov ã¯ãããã®ããã±ãŒãžã®ãªã¹ãããŸãšããŠã圌ã®ããã°ã«å ¬éããŸããã ããã«ã圌ã¯ãããã®ããã±ãŒãžãçŸåšã®ãããžã§ã¯ãã§äœ¿çšãããŠãããã©ããã確èªããããã«äœ¿çšã§ããå°ããªããã°ã©ã ãäœæããŸããã
npm ls | grep -E "babelcli|crossenv|cross-env.js|d3.js|fabric-js|ffmepg|gruntcli|http-proxy.js|jquery.js|mariadb|mongose|mssql.js|mssql-node|mysqljs|nodecaffe|nodefabric|node-fabric|nodeffmpeg|nodemailer-js|nodemailer.js|nodemssql|node-opencv|node-opensl|node-openssl|noderequest|nodesass|nodesqlite|node-sqlite|node-tkinter|opencv.js|openssl.js|proxy.js|shadowsock|smb|sqlite.js|sqliter|sqlserver|tkinter"
MacMacããã³Linuxã§ãææããããããžã§ã¯ããæ€çŽ¢ãã
ç§ã®ããã«ãNode.jsçšã«å®æçã«éçºããŠããå Žåã¯ããã§ãã¯ããã®ã«é©ããäžé£ã®ãããžã§ã¯ããäœæã§ããŸãã ãã®ãããIvanã®ã³ãŒããæ£ç¢ºã«æ¡åŒµããŸããã ç¹ã«ã
xargs
ã³ãã³ããš
xargs
ã³ãã³ãã䜿çšããŠããããžã§ã¯ããå«ããã©ã«ããŒã®ãã¹ãŠã®ãµããã£ã¬ã¯ããªãã¹ãã£ã³ããŸããã 次ã«ãäžèšã®ã³ãŒãã䜿çšããŠåãããžã§ã¯ããæ€èšŒãããŸãã ã¹ã¯ãªãããã³ãã³ãã©ã€ã³ã«ã³ããŒããã ãã§å®è¡ã§ããŸãã
find . -type d -maxdepth 4 -name node_modules -print0 | xargs -0 -L1 sh -c 'cd "$0/.." && pwd && npm ls 2>/dev/null | grep -E "babelcli|crossenv|cross-env.js|d3.js|fabric-js|ffmepg|gruntcli|http-proxy.js|jquery.js|mariadb|mongose|mssql.js|mssql-node|mysqljs|nodecaffe|nodefabric|node-fabric|nodeffmpeg|nodemailer-js|nodemailer.js|nodemssql|node-opencv|node-opensl|node-openssl|noderequest|nodesass|nodesqlite|node-sqlite|node-tkinter|opencv.js|openssl.js|proxy.js|shadowsock|smb|sqlite.js|sqliter|sqlserver|tkinter"'
ã³ãŒããããªã倧ããããšãããã£ãŠããã®ã§ãäœãäœã§ãããã説æããŸãã
- çŸåšã®ãã£ã¬ã¯ããªããéå§ããã¹ã¯ãªããã¯ã
find
ã䜿çšããŠnode_modules
ãšããååã®ãã©ã«ããŒã®ååž°æ€çŽ¢ãå®è¡ããŸãã çŸåšãæ€çŽ¢ã®æ·±ãã¯4ã¬ãã«ã®ãã¹ãã«å¶éãããŠããŸããããããžã§ã¯ãã®æ§é ã«å¿ããŠãããå€æŽã§ããŸãã
- 次ã«
xargs
ã³ãã³ããé©çšãããxargs
ã«ãã£ãŠè¿ãããåè¡ïŒã€ãŸãããã£ã¬ã¯ããªïŒã®ã³ãŒããå®è¡ããfind
ã
- å®è¡ãããã³ãŒãã¯ã次ã®ã¢ã¯ã·ã§ã³ãå®è¡ãããæ°ããã·ã§ã«ã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã
- ãŸããã·ã§ã«ã¯
node_modules
ãã©ã«ããŒã®èŠªãã£ã¬ã¯ããªã«node_modules
ãŸãã
- 次ã«ã
pwd
ã䜿çšããŠãçŸåšã¹ãã£ã³ãããŠãããã£ã¬ã¯ããªã®ååã衚瀺ãããŸãã 衚瀺ããããã£ã¬ã¯ããªã®ååã¯ããææãããŠããããšãæå³ãããã®ã§ã¯ãªãããšã«æ³šæããŠãã ããã
- ãã®åŸã
npm ls
ãèµ·åãããããžã§ã¯ãã«ã€ã³ã¹ããŒã«ãããŠãããã¹ãŠã®ã¢ãžã¥ãŒã«ãçµäºããŸãã
-
npm ls
ã¯ååšããªãäŸåé¢ä¿ãŸãã¯ãã®ä»ã®ãšã©ãŒã«é¢ããã¡ãã»ãŒãžã衚瀺ã§ãããããstderr
å®ãŠã®ãã¹ãŠã®ã¡ãã»ãŒãžã/dev/null
ã«ãªãã€ã¬ã¯ãããŸãïŒã€ãŸããããããåã«ããããããŸãïŒã
- ä»ã®ãã¹ãŠã¯
grep
ã«æž¡ãããæªæã®ããããã±ãŒãžã®èšè¿°ããã§ãã¯ããŸãã ãã®ãããªããã±ãŒãžãèŠã€ãã£ãå Žåãããã°ã©ã ã¯ãã®ããã±ãŒãžã®ãã¹ã瀺ããŠãããå ±åããŸãã
- ãŸããã·ã§ã«ã¯
WindowsWindowsã§ãææããããããžã§ã¯ããæ€çŽ¢ãã
Windowsãå®è¡ããŠããå ŽåãCorey Weathersã«ãã£ãŠèšè¿°ãããPowerShellã¹ã¯ãªããã¯æ¬¡ã®ãšããã§ãã ããã¯ãMacãšLinuxåãã«ã¬ãã¥ãŒããã°ããã®ããã°ã©ã ãšåãããšãè¡ããŸãã
Get-ChildItem $directory -Directory -Recurse -Include "node_modules" | foreach { cd $_.FullName; cd ..; npm ls | Select-String -Pattern "babelcli|crossenv|cross-env\.js|d3\.js|fabric-js|ffmepg|gruntcli|http-proxy\.js|jquery\.js|mariadb|mongose|mssql\.js|mssql-node|mysqljs|nodecaffe|nodefabric|node-fabric|nodeffmpeg|nodemailer-js|nodemailer\.js|nodemssql|node-opencv|node-opensl|node-openssl|noderequest|nodesass|nodesqlite|node-sqlite|node-tkinter|opencv\.js|openssl\.js|proxy\.js|shadowsock|smb|sqlite\.js|sqliter|sqlserver|tkinter"} -ErrorAction Ignore
maliciousæªæã®ããããã±ãŒãžãèŠã€ãã£ãããšãã©ã®ããã«ç解ããŸããïŒ
æªæã®ããããã±ãŒãžãæ€åºããããšãã®ç»é¢ã¯æ¬¡ã®ãšããã§ãã ãã®å Žåããã¢ã³ã¹ãã¬ãŒã·ã§ã³ã®ç®çã§ã
express
ããã±ãŒãžãæ¢ããŠããŸããã
èŠã€ãã£ãæªæã®ããããã±ãŒãžã«é¢ããã¡ãã»ãŒãžã¯èµ€ã§ããŒã¯ãããŠããŸã
maliciousæªæã®ããããã±ãŒãžãèŠã€ãã£ãå Žåã¯ã©ããªããŸããïŒ
ãã®ãããªç¶æ³ã§ã¯ãç°å¢å€æ°ã«ä¿åãããŠãããã¹ãŠã®ç§å¯ããŒã¿ãããã«å€æŽããå¿ èŠããããŸãã ããšãã°ãã¢ã«ãŠã³ãã«ã¢ã¯ã»ã¹ããããã®ãã¹ã¯ãŒããAPIããŒãªã©ã«ã€ããŠè©±ããŸãã äžç·ã«åãçµãã§ãããããžã§ã¯ãã«è匱æ§ãèŠã€ãã£ãå Žåã¯ããã¹ãŠã®éçºè ã«å±éºãå¿ ãéç¥ããŠãã ããã ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã·ã¹ãã ãšã¯ã©ãŠããã¹ãã£ã³ã°ãç°å¢å€æ°ã䜿çšããããšã«æ³šæããŠãã ããã ãããã£ãŠããããã®ãããžã§ã¯ãã®1ã€ãå®çšŒåç°å¢ã«èœã¡ãå ŽåããŸãã¯ç°å¢å€æ°ãããã·ã¹ãã ã䜿çšããŠããå Žåãæ»æè ã«å±ãå¯èœæ§ã®ããããŒã¿ã圹ã«ç«ããªãããšã確èªããŠãã ããã
nothingäœãèŠã€ãããªãå Žåããã¹ãŠå€§äžå€«ã§ããïŒ
äžèšã®ã¹ã¯ãªããã¯ãå±éºæ§ãããã£ãŠãããããžã§ã¯ãã®npmããã±ãŒãžãåçŽã«ãã§ãã¯ããŸãã ãã ããnpmãšã³ã·ã¹ãã ã¯å·šå€§ã§ãããããä»ã®å±éºãªããã±ãŒãžããªããšæèšããããšã¯ã§ããŸããã ãããã®å Žåã§ãããã¹ã¯ãŒããå®æçã«å€æŽãã貎éãªããŒã¿ãæ éã«ä¿åããããšã圹ç«ã¡ãŸãã
ããã«ãããšãã°ãè³æ Œæ å ±ãç°å¢å€æ°ã«ä¿åãããŠãããµãŒãã¹ã®äœ¿çšæ¹æ³ã«æ³šæããå¿ èŠããããŸãã Twilioã®ã¢ã«ãŠã³ãã«ã€ããŠè©±ããŠããå Žåãçãããããšé»è©±ãã¡ãã»ãŒãžã®æ°ãäºæ³å€ã«æ¥å¢ããã¯ãã§ãã
ãŸãšã
äžå¯©ãªnpmããã±ãŒãžãèŠã€ãã£ãå Žåã¯ãsecurity @ npmjs.comã«æžã蟌ã¿ãnpmjs.comã»ãã¥ãªãã£ãµãŒãã¹ã«å¿ ãéç¥ããŠãã ããã 圌ãã¯ç¶æ³ã調æ»ããæãã確èªãããå Žåãå±éºãªããã±ãŒãžãã¬ãžã¹ããªããåé€ããå Žåã«ãã£ãŠã¯ããã€ãã®ããã±ãŒãžãåé€ããŸãã
æªæã®ããnpmããã±ãŒãžã¯æ¯èŒçæ°ããçŸè±¡ã§ãã ãã®è åšã«äžç·ã«å¯ŸåŠã§ããããšãé¡ã£ãŠããŸãã
芪æãªãèªè ïŒ npmããã±ãŒãžã®çãããåäœã«ééããããšã¯ãããŸããïŒ