Sicherheit von npm-Projekten, Teil 1

Sicherheit von npm-Projekten, Teil 1



Hallo! Im letzten Beitrag haben wir uns mit dem wichtigen Thema Sicherheit in npm befasst und darüber gesprochen, welche Maßnahmen das Unternehmen selbst ergreift, um Bedrohungen zu identifizieren und zu verhindern. Dieses Mal möchte ich über die Tools und Ansätze sprechen, die Ihnen persönlich zur Verfügung stehen und die ich allen Entwicklern in ihrer Praxis wärmstens empfehlen kann.





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



, :



Ein Beispiel für ein Paket, das ein schädliches Skript enthält



: 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


, . , .





Laufzeitbegrenzung



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



: - , . , . npm.





Sicherheit von Token und Schlüsseln



: , . , 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 ) .





Augäpfel



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



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





Sichere Passwörter



, , :



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


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



, , !


(MFA)



Multifaktor-Authentifizierung (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 (, ).





Beschränkung veröffentlichter Dateien



, 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