Осебпазирӣ дар NPM, ки боиси дубора навиштани файлҳо дар система мегардад

GitHub тафсилоти ҳафт осебпазириро дар бастаҳои tar ва @npmcli/arborist ошкор кардааст, ки функсияҳои кор бо бойгониҳои tar ва ҳисоб кардани дарахти вобастагӣ дар Node.js-ро таъмин мекунанд. Осебиятҳо имкон медиҳанд, ки ҳангоми кушодани бойгонии махсус тарҳрезишуда файлҳоро берун аз директорияи решавӣ, ки кушодан ба он дар он сурат мегирад, аз нав сабт кунанд, то он даме, ки ҳуқуқҳои дастрасии ҷорӣ иҷозат медиҳанд. Мушкилотҳо имкон медиҳанд, ки иҷрои коди худсарона дар система ташкил карда шавад, масалан, тавассути илова кардани фармонҳо ба ~/.bashrc ё ~/.profile, вақте ки амалиёт аз ҷониби корбари беимтиёз иҷро карда мешавад, ё иваз кардани файлҳои система ҳангоми иҷро ҳамчун реша.

Хавфи осебпазирӣ аз он сабаб зиёд мешавад, ки рамзи мушкилот дар мудири бастаи npm ҳангоми иҷрои амалиёт бо бастаҳои npm истифода мешавад, ки имкон медиҳад ҳамла ба корбарон тавассути ҷойгир кардани бастаи махсус тарҳрезишудаи npm дар анбор, коркард ташкил карда шавад. ки аз он рамзи ҳамлакунандаро дар система иҷро мекунад. Ҳамла ҳатто ҳангоми насб кардани бастаҳо дар реҷаи "-ignore-scripts", ки иҷрои скриптҳои дарунсохтро ғайрифаъол мекунад, имконпазир аст. Дар маҷмӯъ, npm аз ҳафт осеб ба чор осебпазирӣ (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 ва CVE-2021-39135) таъсир мерасонад. Ду мушкилоти аввал ба бастаи қатрон ва ду мушкилоти боқимонда ба бастаи @npmcli/arborist дахл доранд.

Хавфноктарин осебпазирӣ, CVE-2021-32804, аз он иборат аст, ки ҳангоми тоза кардани роҳҳои мутлақи дар бойгонии tar нишондодашуда, аломатҳои такрории "/" нодуруст коркард карда мешаванд - танҳо аломати аввал нест карда мешавад ва боқимонда боқӣ мемонад. Масалан, роҳи "/home/user/.bashrc" ба "home/user/.bashrc" ва роҳи "//home/user/.bashrc" ба "/home/user/.bashrc" табдил дода мешавад. Осебияти дуюм, CVE-2021-37713, танҳо дар платформаи Windows пайдо мешавад ва бо тозакунии нодурусти роҳҳои нисбӣ, ки дорои аломати гардонандаи номаҳдуд ("C: some\path") ва пайдарпаии бозгашт ба директорияи қаблӣ ( "C:../foo").

Осиятҳои CVE-2021-39134 ва CVE-2021-39135 ба модули @npmcli/arborist хосанд. Мушкилоти аввал танҳо дар системаҳое пайдо мешавад, ки ҳолати аломатҳои системаи файлиро фарқ намекунанд (macOS ва Windows) ва ба шумо имкон медиҳад, ки файлҳоро ба як қисми ихтиёрии системаи файлӣ тавассути муайян кардани ду модули "foo" дар байни вобастагӣ нависед. : "file:/some/path"' ва ' FOO: "file:foo.tgz"', ки коркарди онҳо боиси нест кардани мундариҷаи директорияи /some/path ва навиштани мундариҷаи foo.tgz ба он мегардад. Мушкилоти дуюм имкон медиҳад, ки файлҳо тавассути коркарди истинодҳои рамзӣ дубора навишта шаванд.

Осиятҳо дар версияҳои Node.js 12.22.6 ва 14.17.6, npm CLI 6.14.15 ва 7.21.0 ва бастаҳои инфиродии қатрон 4.4.19, 5.0.11 ва 6.1.10 ҳал карда мешаванд. Пас аз гирифтани маълумот дар бораи мушкилот дар доираи ташаббуси "буг мукофот", GitHub ба муҳаққиқон 14500 доллар пардохт кард ва мундариҷаи анборро скан кард, ки кӯшиши истифодаи осебпазириро ошкор накардааст. Барои муҳофизат аз ин мушкилот, GitHub инчунин нашри бастаҳои NPM-ро, ки истинодҳои рамзӣ, истинодҳои сахт ва роҳҳои мутлақи анборро дар бар мегиранд, манъ кардааст.

Манбаъ: opennet.ru

Илова Эзоҳ