package-lock.json - ລັອກແພັກເກດ json - npm typosquatting

Package-Lock.json Typo: ມັນສາມາດລັກເອົາ Build ຂອງເຈົ້າໄດ້ແນວໃດ

ເປັນຫຍັງ Package-Lock.JSON ຈຶ່ງມີຄວາມສຳຄັນຕໍ່ນັກພັດທະນາ

ໃນໂຄງການ Node.js, package-lock.json ບໍ່ພຽງແຕ່ເປັນໄຟລ໌ຄູ່ກັບ package.json ເທົ່ານັ້ນ. ມັນລັອກລຸ້ນທີ່ແນ່ນອນຂອງທຸກໆ dependency ທີ່ຕິດຕັ້ງໄວ້, ລວມທັງລຸ້ນທີ່ຊ້ອນກັນ. ໄຟລ໌ນີ້ຮັບປະກັນຄວາມສາມາດໃນການສ້າງຊ້ຳໄດ້ໃນທົ່ວສະພາບແວດລ້ອມ ແລະ ປ້ອງກັນການປ່ຽນແປງທີ່ບໍ່ຄາດຄິດເມື່ອລຸ້ນແພັກເກດໃໝ່ຖືກເຜີຍແຜ່. ຖ້າບໍ່ມີມັນ, ນັກພັດທະນາຈະມີຄວາມສ່ຽງຕໍ່ພຶດຕິກຳທີ່ແຕກຕ່າງກັນໃນຂັ້ນຕອນການພັດທະນາ, ການທົດສອບ, ແລະ ການຜະລິດເນື່ອງຈາກການປ່ຽນແປງຕົ້ນໄມ້ dependency, ແລະ ແມ່ນແຕ່ເປີດໂອກາດໃຫ້ການພິມຜິດ npm ຖ້າຄວາມຜິດພາດເກີດຂຶ້ນໃນ lockfile.


ເມື່ອໃຊ້ຢ່າງຖືກຕ້ອງ, package-lock.json ຈະຮັບປະກັນທຸກຄົນໃນທີມ ແລະ ທີມຂອງທ່ານ CI/CD pipeline ຕິດຕັ້ງ ລະຫັດດຽວກັນ. ແຕ່ການພິມຜິດທີ່ງຽບໆພຽງຄັ້ງດຽວໃນໄຟລ໌ນີ້ສາມາດປ່ຽນເສັ້ນທາງແອັບຯຂອງທ່ານໄປສູ່ກັບດັກໄດ້ໂດຍກົງ.

ການພິມຜິດນຳໄປສູ່ການໂຈມຕີ Typosquatting ຂອງ NPM ແນວໃດ?

ສົມມຸດວ່າແພັກເກດທີ່ຖືກຕ້ອງຕາມກົດໝາຍໃນ ຊຸດ .json ຖືກສະກົດຖືກຕ້ອງ, ຄື lodashແຕ່ມີລາຍການທີ່ພິມຜິດ package-lock.json, ເຊັ່ນ​ວ່າ ໂລດາສ, ຍັງສາມາດລັກລອບເຂົ້າໄປໃນຕົ້ນໄມ້ການເພິ່ງພາອາໄສຂອງທ່ານໄດ້, ໂດຍສະເພາະຖ້າມີຄົນແກ້ໄຂມັນດ້ວຍຕົນເອງ ຫຼື ເຄື່ອງມືທີ່ມີຂໍ້ບົກຜ່ອງຂຽນມັນ.

ຜູ້ໂຈມຕີໃຊ້ເຕັກນິກທີ່ເອີ້ນວ່າ npm typosquatting ເພື່ອກວດສອບຄວາມຜິດພາດເຫຼົ່ານີ້. ພວກເຂົາອັບໂຫລດແພັກເກດທີ່ເປັນອັນຕະລາຍທີ່ມີຊື່ຄ້າຍຄືກັບແພັກເກດທີ່ນິຍົມ (ຕົວຢ່າງ, ປະຕິກິລິຍາ-ໂດມ, ສະແດງອອກ, ເປັນລ່ຽມ). ຖ້າ JSON ລັອກແພັກເກດຂອງເຈົ້າມີການພິມຜິດແບບນັ້ນ, npm ຈະຕິດຕັ້ງແພັກເກດຂອງຜູ້ໂຈມຕີໂດຍບໍ່ມີຄຳຖາມ, ເພາະວ່າເຈົ້າໄດ້ບອກມັນຢ່າງຊັດເຈນ.

ການໂຈມຕີ typosquatting npm ໃນໂລກຕົວຈິງໄດ້ກາຍເປັນຫົວຂໍ້ຂ່າວ. ຕົວຢ່າງໜຶ່ງດັ່ງກ່າວແມ່ນ ການປະນີປະນອມແພັກເກດ Coa, ບ່ອນທີ່ ລະຫັດທີ່ເປັນອັນຕະລາຍ ຖືກສົ່ງຜ່ານການອັບເດດຂອງແພັກເກດທີ່ເຊື່ອຖືໄດ້. ຄວາມແຕກຕ່າງແມ່ນວ່າດ້ວຍການພິມຜິດ npm, ນັກພັດທະນາໄດ້ເຊີນຜູ້ໂຈມຕີເຂົ້າມາໂດຍບັງເອີນໂດຍການພິມຜິດ dependency.

ຄວາມສ່ຽງທີ່ແທ້ຈິງໃນ CI/CD Pipelineເກີດຈາກຄວາມຜິດພາດ json ລັອກແພັກເກດ

ທີ່ທັນສະໄຫມ CI/CD pipelineການປິ່ນປົວ package-lock.json ເປັນແຫຼ່ງຄວາມຈິງ. ໃນລະຫວ່າງການສ້າງ ຫຼື ການນຳໃຊ້, pipeline ແລ່ນ npm ci or npm ຕິດຕັ້ງ, ເຊິ່ງທັງສອງຢ່າງນີ້ອ່ານຈາກໄຟລ໌ລັອກ. ຖ້າມີການພິມຜິດ, ແພັກເກດທີ່ເປັນອັນຕະລາຍຈະຖືກດຶງເຂົ້າມາໂດຍອັດຕະໂນມັດ. ບໍ່ມີການແຈ້ງເຕືອນ. ບໍ່ມີການກະຕຸ້ນເຕືອນ.

ນັ້ນໝາຍຄວາມວ່າການພິມຜິດທີ່ນຳສະເໜີໃນລະຫວ່າງການພັດທະນາທ້ອງຖິ່ນສາມາດແຜ່ລາມໄປຢ່າງງຽບໆຈົນເຖິງຂັ້ນຕອນການຜະລິດ ຫຼື ແມ່ນແຕ່ການຜະລິດ. ຜູ້ໂຈມຕີສາມາດຝັງຕົວລັກຂໍ້ມູນປະຈຳຕົວ, ຜູ້ຂຸດຄົ້ນ crypto, ຫຼື backdoors ທີ່ເປີດໃຊ້ງານຫຼັງການນຳໃຊ້. ທັງໝົດນີ້ສາມາດເກີດຂຶ້ນໄດ້ໂດຍບໍ່ຕ້ອງກະຕຸ້ນເຄື່ອງມືຄວາມປອດໄພ, ເພາະວ່າການເພິ່ງພາອາໄສໄດ້ຖືກ "ປະກາດ" ໃນ package-lock.json.

ນີ້ບໍ່ແມ່ນພຽງແຕ່ຄວາມຜິດພາດເທົ່ານັ້ນ. ມັນເປັນການລະເມີດລະບົບຕ່ອງໂສ້ການສະໜອງທີ່ລໍຖ້າໃຫ້ເກີດຂຶ້ນ, ແລະການພິມຜິດ npm ເຮັດໃຫ້ມັນກາຍເປັນໄພຂົ່ມຂູ່ທີ່ແທ້ຈິງ.

ການກວດຫາ ແລະ ການປ້ອງກັນການພິມຜິດ Dependency ເພື່ອຫຼຸດຜ່ອນການພິມຜິດ NPM

ການພິມຜິດ package-lock.json ຈະເບິ່ງບໍ່ເຫັນ ເວັ້ນເສຍແຕ່ວ່າທ່ານຈະຊອກຫາພວກມັນຢ່າງຕັ້ງໜ້າ. ນີ້ແມ່ນວິທີການເລີ່ມຕົ້ນ:

  • ການວິເຄາະສະຖິດ: ບາງເຄື່ອງມືບໍ່ສາມາດແກ້ໄຂບັນຫາເຫຼົ່ານີ້ໄດ້, ແຕ່ເຄື່ອງສະແກນ dependency ທີ່ອຸທິດຕົນສາມາດເຮັດໄດ້. ລວມເຄື່ອງມືທີ່ສະແກນຫາຮູບແບບການພິມຜິດ npm ແລະກວດສອບຂອງທ່ານ package-lock.json ສຳລັບຄວາມບໍ່ສອດຄ່ອງ.
  • ໄຟລ໌ລັອກ Lintingໃຊ້ກົດລະບຽບ linting ທີ່ກຳນົດເອງ ຫຼື plugins ເພື່ອກວດສອບຄວາມຖືກຕ້ອງ package-lock.json ລາຍການທຽບກັບບັນຊີລາຍຊື່ທີ່ປອດໄພທີ່ຮູ້ຈັກ.
  • ການທົບທວນຄືນລະຫັດການທົບທວນຄືນຈາກເພື່ອນຮ່ວມງານແມ່ນມີຄວາມສຳຄັນຫຼາຍ. ຄວາມແຕກຕ່າງຂອງ Lockfile ແມ່ນມີສຽງດັງ, ແຕ່ສອນທີມງານຂອງທ່ານໃຫ້ທົບທວນຄືນພວກມັນຄືກັນກັບລະຫັດ.
  • ການກວດສອບອັດຕະໂນມັດ: ຕັ້ງ​ຄ່າ pre-commit hooks ຫຼື ວຽກ CI ເພື່ອປະຕິເສດລາຍການທີ່ບໍ່ໄດ້ຮັບການຢືນຢັນ ຫຼື ໜ້າສົງໄສໃນ package-lock.json.

ນີ້ແມ່ນຕົວຢ່າງທີ່ໃຊ້ໄດ້ຈິງໂດຍໃຊ້ GitHub Actions:

ອັນນີ້ບໍ່ສາມາດປ້ອງກັນໄດ້, ແຕ່ມັນໝາຍເຖິງຊື່ແພັກເກດແປກໆທີ່ອາດຈະເປັນສັນຍານຂອງການພິມຜິດ npm.

ການຮັກສາຄວາມປອດໄພຂອງໂຄງການ Node.js ຕໍ່ກັບການໂຈມຕີ NPM Typosquatting ແລະ Supply Chain

ເພື່ອລັອກແອັບ Node.js ຂອງທ່ານ ແລະ ປ້ອງກັນການໂຈມຕີຜ່ານ package-lock.json:

  • ການປັກໝຸດເວີຊັນທີ່ເຂັ້ມງວດຫຼີກລ່ຽງຊ່ວງເວີຊັນ (^, ~in ຊຸດ .jsonລັອກ dependencies ທັງໝົດໃຫ້ເປັນເວີຊັນທີ່ແນ່ນອນເພື່ອຫຼຸດຜ່ອນການອັບເດດ ແລະ ການເລື່ອນລອຍທີ່ບໍ່ຄາດຄິດ.
  • ການກວດສອບລາຍເຊັນໃຊ້ປະໂຫຍດຈາກເຄື່ອງມືຕ່າງໆເຊັ່ນ Sigstore ແລະ ຄຸນສົມບັດຕົ້ນກຳເນີດຂອງ npm ເພື່ອກວດສອບຄວາມຖືກຕ້ອງ ແລະ ຕົ້ນກຳເນີດຂອງແພັກເກດຕ່າງໆ.
  • ການສ້າງທີ່ບໍ່ປ່ຽນແປງ: ໃຊ້ສະເໝີ npm ci ດ້ວຍການກວດສອບແລ້ວ package-lock.json ໄຟລ໌ໃນສະພາບແວດລ້ອມການຜະລິດ. ຢ່າອີງໃສ່ npm ຕິດຕັ້ງ ໃນລະຫວ່າງການນຳໃຊ້, ຍ້ອນວ່າມັນສາມາດນຳສະເໜີການປ່ຽນແປງທີ່ບໍ່ໄດ້ຮັບການກວດສອບ.
  • ຕິດຕາມຢ່າງຕໍ່ເນື່ອງໃຊ້ວິທີແກ້ໄຂການຕິດຕາມກວດກາທີ່ແຈ້ງເຕືອນທ່ານເມື່ອ:
    • ແພັກເກດໃໝ່ຈະປາກົດຢູ່ໃນຂອງທ່ານ package-lock.json
    • ແພັກເກດທີ່ມີຢູ່ແລ້ວຈະປ່ຽນແປງໂດຍບໍ່ຄາດຄິດ
    • ຮູບແບບທີ່ໜ້າສົງໄສ (ຕົວຢ່າງ, ຊື່ແພັກເກດເຊັ່ນ ສະແດງອອກ, ປະຕິກິລິຍາ-ໂດມ, ເປັນລ່ຽມ) ຖືກກວດພົບ
  • ເຄື່ອງມືກວດສອບການເພິ່ງພາອາໄສ: ປະສົມປະສານເຄື່ອງມືອັດຕະໂນມັດເຊັ່ນ: npm ການກວດສອບ, Snyk, ຫຼື ຊີເກນີ ເຂົ້າໄປໃນ CI ຂອງທ່ານ pipeline ເພື່ອສະແກນຫາຈຸດອ່ອນ ແລະ ຕົວຊີ້ບອກການພິມຜິດ.
  • ສຸຂະອະນາໄມ Lockfile: ປິ່ນປົວ package-lock.json ເປັນລະຫັດ. ກວດສອບມັນໃນລະຫວ່າງ pull requests, ໂດຍສະເພາະເມື່ອ dependencies ຖືກອັບເດດ ຫຼື ເພີ່ມເຂົ້າມາ.
  • ອັດຕະໂນມັດ Pre-Commit ການກວດສອບ: ໃຊ້ pre-commit hooks ເພື່ອກວດສອບຄວາມຖືກຕ້ອງຂອງໄຟລ໌ລັອກຂອງທ່ານກ່ອນທີ່ມັນຈະຮອດການຄວບຄຸມເວີຊັນ.

package-lock.json ເປັນເປົ້າໝາຍທີ່ມີມູນຄ່າສູງໃນການໂຈມຕີການພິມຜິດ npm. ການພິມຜິດຄ້າຍຄືກັບ ປະຕິກິລິຍາ-ໂດມ or ໂລດາສ ໃຫ້ເສັ້ນທາງໂດຍກົງແກ່ຜູ້ໂຈມຕີເຂົ້າໄປໃນການສ້າງຂອງທ່ານ pipelineການລະມັດລະວັງກ່ຽວກັບເອກະສານນີ້ແມ່ນສິ່ງຈໍາເປັນສໍາລັບການຮັກສາຄວາມສົມບູນຂອງລະບົບຕ່ອງໂສ້ການສະໜອງ.

ສະນັ້ນ, ການພິມຜິດພຽງຄັ້ງດຽວສາມາດເຮັດໃຫ້ຜົນງານຂອງເຈົ້າລົ້ມໄດ້. ຢ່າປ່ອຍໃຫ້ມັນ!

ມີການພິມຜິດ package-lock.json ບໍ່ພຽງແຕ່ເປັນການຂຽນໂປຣແກຣມທີ່ບໍ່ລະມັດລະວັງເທົ່ານັ້ນ; ມັນເປັນເວັກເຕີໄພຂົ່ມຂູ່ທີ່ແທ້ຈິງສຳລັບການພິມຜິດ npm. ໄຟລ໌ນີ້ແມ່ນຕົວຮັກສາປະຕູ, ແລະຖ້າມັນຖືກໂຈມຕີ, ຂອງທ່ານ pipeline ກໍ່ຄືກັນ. ການແກ້ໄຂບໍ່ໄດ້ດຶງດູດຄວາມສົນໃຈ: ຊ້າລົງ, ກວດສອບໄຟລ໌ລັອກ, ກວດສອບອັດຕະໂນມັດ, ແລະ ຕິດຕາມການປ່ຽນແປງ. ແຕ່ມັນກໍ່ຄຸ້ມຄ່າ.

ເພື່ອຍົກລະດັບການປ້ອງກັນຂອງທ່ານ, ລອງພິຈາລະນາໃຊ້ເຄື່ອງມືຕ່າງໆເຊັ່ນ Xygeni, ເຊິ່ງຖືກອອກແບບມາເພື່ອກວດຫາການພິມຜິດ, ກວດສອບ JSON ລັອກແພັກເກດ ໄຟລ໌, ແລະ ປົກປ້ອງຄວາມສົມບູນຂອງແພັກເກດຕະຫຼອດທັງຊຸດຂອງທ່ານ CI/CD pipelineໃນຍຸກຂອງແຫຼ່ງເປີດ, ຄວາມໄວ້ວາງໃຈແມ່ນໄດ້ຮັບ ແລະ ໄດ້ຮັບການຢືນຢັນ.

ເຄື່ອງມືວິເຄາະອົງປະກອບຊອບແວ SCA
ຈັດລຳດັບຄວາມສຳຄັນ, ແກ້ໄຂ ແລະ ຮັກສາຄວາມສ່ຽງດ້ານຊອບແວຂອງທ່ານໃຫ້ປອດໄພ
ຮັບບັນຊີຟຣີຂອງທ່ານ.
ບໍ່ຕ້ອງມີບັດເຄດິດ.

ຮັບປະກັນການພັດທະນາຊອບແວ ແລະ ການຈັດສົ່ງຂອງທ່ານ

ດ້ວຍຊຸດຜະລິດຕະພັນ Xygeni