package-lock.json - json пакетін құлыптау - npm теру сквоттау

Package-Lock.json қатесі: Бұл сіздің құрастыруыңызды қалай бұзуы мүмкін

Неліктен Package-Lock.JSON әзірлеушілер үшін маңызды

Node.js жобаларында package-lock.json тек package.json файлының серіктесі ғана емес. Ол әрбір орнатылған тәуелділіктің, соның ішінде ішкі нұсқалардың нақты нұсқаларын құлыптайды. Бұл файл орталар бойынша қайталануды қамтамасыз етеді және жаңа пакет нұсқалары жарияланған кезде күтпеген өзгерістердің алдын алады. Онсыз әзірлеушілер тәуелділік ағаштарының ауысуына байланысты әзірлеу, тестілеу және өндіріс кезеңдерінде әртүрлі әрекеттерге ұшырайды және тіпті құлыптау файлына қателер түсіп кетсе, npm typoscotting-ке жол ашады.


Дұрыс пайдаланылған кезде, package-lock.json сіздің командаңыздағы және сіздің барлық мүшелеріңіздің қауіпсіздігін қамтамасыз етеді CI/CD pipeline орнатады сол код. Бірақ бұл файлдағы бір ғана қате теру қолданбаңызды тікелей тұзаққа бағыттауы мүмкін.

Қате терулер NPM Typosquatting шабуылдарына қалай әкеледі?

Айталық, заңды пакет пакет.json дұрыс жазылған, мысалы лодашБірақ қате жазылған жазба package-lock.json, сияқты лодалар, тәуелділік ағашыңызға әлі де енуі мүмкін, әсіресе біреу оны қолмен өңдеген немесе ақаулы құрал жазған болса.

Шабуылдаушылар бұл қателіктерге npm typosquatting деп аталатын әдісті қолдана отырып сенеді. Олар танымал пакеттерге ұқсас атаулары бар зиянды пакеттерді жүктейді (мысалы, реакция домы, экспрессиялайды, бұрыштықЕгер сіздің пакет құлыптау JSON файлыңызда осындай қате болса, npm шабуылдаушының пакетін сұрақсыз орнатады, себебі сіз оған нақты айтқансыз.

npm typoskvotting тек теориялық қана емес. Нақты әлемдегі npm typoskvotting шабуылдары жаңалықтарға шықты. Осындай мысалдардың бірі ... болды. Coa пакетінің келісімі, мұндағы зиянды код сенімді пакеттің жаңартуы арқылы жіберілді. Айырмашылығы - npm typosquatting кезінде әзірлеуші ​​кездейсоқ тәуелділікті қате теру арқылы шабуылдаушыны шақырады.

Нақты тәуекелдер CI/CD Pipelines пакет құлыптауынан туындаған json қателері

Қазіргі заманғы CI/CD pipelineтойлау package-lock.json шындық көзі ретінде. Құрастыру немесе орналастыру кезінде, pipeline айдап npm ci or npm орнату, екеуі де құлыптау файлынан оқылады. Егер қате терілген болса, зиянды пакет автоматты түрде жүктеледі. Ешқандай ескертулер жоқ. Ешқандай сұраулар жоқ.

Бұл жергілікті әзірлеу кезінде енгізілген қателік өндіріске немесе тіпті өндіріске дейін үнсіз таралуы мүмкін дегенді білдіреді. Шабуылдаушылар тіркелгі деректерін ұрлаушыларды, криптомайнерлерді немесе орналастырудан кейінгі әрекетті белсендіретін бэкдорларды енгізе алады. Мұның бәрі қауіпсіздік құралдарын іске қоспай-ақ болуы мүмкін, себебі тәуелділік «жарияланған» package-lock.json.

Бұл жай ғана қателік емес. Бұл жеткізу тізбегінің бұзылуын күтіп тұр, ал npm қате теру оны нақты қауіпке айналдырады.

NPM Typosquatting-ті азайту үшін тәуелділік қателерін анықтау және алдын алу

Қате терілген package-lock.json егер сіз оларды белсенді түрде іздемесеңіз, көрінбейді. Міне, қалай бастау керек:

  • Статикалық талдауКейбір құралдар бұл мәселелерді анықтамайды, бірақ арнайы тәуелділік сканерлері анықтай алады. npm typosquatting үлгілерін сканерлейтін және тексеретін құралдарды біріктіріңіз package-lock.json сәйкессіздіктер үшін.
  • Құлыптау файлдарын тізбектеуТексеру үшін арнайы сызықтау ережелерін немесе плагиндерді пайдаланыңыз package-lock.json белгілі қауіпсіз тізімдерге қарсы жазбалар.
  • Код шолуларыҚұрдастардың пікірлері өте маңызды. Lockfile айырмашылықтары шулы, бірақ командаңызға оларды код сияқты қарап шығуды үйретіңіз.
  • Автоматтандырылған тексерулер: Орнату pre-commit hooks немесе тексерілмеген немесе күдікті жазбаларды қабылдамау үшін CI тапсырмалары package-lock.json.

GitHub Actions көмегімен практикалық мысал келтірілген:

Бұл сенімді емес, бірақ npm теру кезінде қате жіберуі мүмкін таңқаларлық пакет атауларын белгілейді.

Node.js жобаларын NPM Typosquatting және жеткізу тізбегінің шабуылдарынан қорғау

Node.js қолданбаңызды құлыптау және шабуылдардың алдын алу үшін package-lock.json:

  • Қатаң нұсқаны бекітуНұсқа диапазондарынан аулақ болыңыз (^, ~) пакет.jsonКүтпеген жаңартулар мен дрейфті азайту үшін барлық тәуелділіктерді дәл нұсқаларға бекітіңіз.
  • Қолтаңбаны тексеруПакеттердің түпнұсқалығы мен шығу тегін тексеру үшін Sigstore және npm шығу тегі мүмкіндіктері сияқты құралдарды пайдаланыңыз.
  • Өзгермейтін құрылымдар: Әрқашан пайдаланыңыз npm ci расталған package-lock.json Өндірістік ортадағы файл. Ешқашан сенбеңіз npm орнату орналастыру кезінде, себебі ол тексерілмеген өзгерістер енгізуі мүмкін.
  • Үздіксіз мониторингКелесі жағдайларда сізге ескерту беретін бақылау шешімдерін пайдаланыңыз:
    • Жаңа пакеттер сіздің қалтаңызда пайда болады package-lock.json
    • Бар пакеттер күтпеген жерден өзгереді
    • Күдікті үлгілер (мысалы, пакет атаулары сияқты) экспрессиялайды, реакция домы, бұрыштық) анықталды
  • Тәуелділік аудиті құралдарысияқты автоматтандырылған құралдарды біріктіріңіз npm аудиті, Сныкнемесе Ксигени сіздің CI-ге pipeline осалдықтарды және қате жазу көрсеткіштерін сканерлеу үшін.
  • Құлыптау файлдарының гигиенасы: емдеңіз package-lock.json код ретінде. Оны қарап шығу кезінде pull requests, әсіресе тәуелділіктер жаңартылған немесе қосылған кезде.
  • автоматтандырылған Pre-Commit Тексерулер: Пайдаланыңыз pre-commit hooks құлыптау файлыңызды нұсқаны басқаруға жеткенге дейін тексеру үшін.

package-lock.json npm typosquatting шабуылдарындағы жоғары құнды нысана болып табылады. typosquatting сияқты реакция домы or лодалар шабуылдаушыларға сіздің құрылымыңызға тікелей жол береді pipelineБұл файлға қатысты сақтық шаралары жеткізу тізбегінің тұтастығын сақтау үшін өте маңызды.

Сонымен, бір ғана қате сіздің құрылысыңызды суға батыруы мүмкін. Оған жол бермеңіз!

Қате жазылған package-lock.json жай ғана абайсыз кодтау емес; бұл npm теру квотациясы үшін нақты қауіп векторы. Файл қақпашы болып табылады, ал егер ол бұзылса, сіздің pipeline тым көп. Түзету қызықты емес: баяулатыңыз, құлыптау файлын қарап шығыңыз, тексерулерді автоматтандырыңыз және өзгерістерді бақылаңыз. Бірақ бұл тұрарлық.

Қорғаныс деңгейіңізді арттыру үшін, теріп жазуды анықтауға, тексеруге арналған Xygeni сияқты құралдарды пайдалануды қарастырыңыз. JSON пакетін құлыптау файлдарды сақтаңыз және бүкіл жүйеңізде пакеттің тұтастығын қорғаңыз CI/CD pipelineАшық бастапқы код дәуірінде сенімге ие болу және оны растау жүзеге асырылады.

sca-құралдары-бағдарламалық жасақтама-композиция-талдау-құралдары
Бағдарламалық жасақтама тәуекелдеріне басымдық беріңіз, оларды жойыңыз және қауіпсіз етіңіз
Тегін аккаунтыңызды алыңыз.
Несие картасы қажет емес.

Бағдарламалық жасақтаманы әзірлеу және жеткізуді қауіпсіз етіңіз

Xygeni өнім жиынтығымен бірге