Sécurité des projets npm, partie 1

Sécurité des projets npm, partie 1



salut! Dans le dernier article, nous avons commencé à examiner l'importante question de la sécurité dans npm et à discuter des mesures que l'entreprise elle-même utilise pour identifier et prévenir les menaces. Cette fois, je veux parler des outils et des approches qui sont à votre disposition personnellement, et que je recommande vivement à tous les développeurs de mettre en œuvre dans leur pratique.





npm install (: preinstall, install/postinstall), . , . , , .



, :



Un exemple de package contenant un script malveillant



: npm install malicious-package, evil.sh, unix-.



, , 2018 eslint-scope eslint-config-eslint, , .



, , , , , .



, npm npm, . , npm registry , , , , npm .



, , , , . , , .

, npm , npm , . .



, :



npm install suspicious-package --ignore-scripts


, ( .npmrc):



npm config set ignore-scripts true


, . , .





Limitation d'exécution



, , npm, npm install. , Docker-, . , npm root-; , . . : npm, .



: - , . , . npm.





Sécurité des jetons et des clés



: , . , npm .npmrc , .



npm - (, CI/CD), . , , read-only, . .



npm IP- (CIDR). IP ( IP) . , , (on-demand). , , .



.npmrc, (Git). NPM_TOKEN ( ).



npm token create, :



  • --read-only — , (. . , );
  • --cidr=<CIDR> — , IP. CIDR, IP. : --cidr=192.0.2.0/24.


, npm-, . npm, npm token list.



, npm adduser .npmrc . .



~/.npmrc :



//registry.npmjs.org/:_authToken=00000000-0000-0000-0000-000000000000


npm registry, .



, ~/.npmrc unix-!

(, SSH), , . , . . , . SSH, EdDSA . , . : Ed25519 (EdDSA) RSA ( 2048 ) .





Globes oculaires



, , . . , , npm install packae-name: 404, — .



npm , . , , , copy-and-paste.





Mots de passe sécurisés



, , :



  • , . (16 );
  • . ;
  • ;
  • , .


: . KeePass ( ). -, . -, , , . (., Google Drive DropBox), .



, , !


(MFA)



Authentification multifactorielle (MFA)



, . . : - , . - SMS- . , . . .



, npm -. : « » « ». « », . . , npm OTP npm adduser, - (, npm publish).



, npm 2FA, . : , QR-, -. , CLI :



  • npm profile enable-2fa auth-and-writes

    — « » ()
  • npm profile enable-2fa auth-only

    — « »


CLI npm ( ), QR-. (OTP), , .



npm , , , .



, , 2FA npm profile disable-2fa, . , , npm (, ).





Limiter les fichiers publiés



, npm publish, npm .



, npm
  • .git
  • CVS
  • .svn
  • .hg
  • .lock-wscript
  • .wafpickle-N
  • .*.swp
  • .DS_Store
  • ._*
  • npm-debug.log
  • .npmrc
  • node_modules
  • config.gypi
  • *.orig
  • package-lock.json


- registry , , , . . npm - , , .



, files package.json. , ( glob), . , - .



, , files:



  • package.json
  • README
  • CHANGES, CHANGELOG, HISTORY
  • LICENSE, LICENCE
  • NOTICE
  • , main


README, CHANGES, LICENSE NOTICE .



, .



, npm publish, --dry-run npm pack --dry-run. , , . --dry-run , , , .





, , npm-. — .



, .






, , , , . , .



- , , .



.




All Articles