Атака на NPM, якая дазваляе вызначыць наяўнасць пакетаў у прыватных рэпазітарах

У NPM выяўлена недапрацоўка, якая дазваляе вызначыць існаванне пакетаў у зачыненых рэпазітарах. Праблема выклікана розным часам рэакцыі пры запыце існага і неіснуючага пакета іншым карыстачом, не мелага доступу да рэпазітара. Пры адсутнасці доступу для любых пакетаў у прыватных рэпазітарах сервер registry.npmjs.org вяртае памылку з кодам "404", але ў выпадку існавання пакета з запытаным імем памылка выдаецца з адчувальнай затрымкай. Атакуючы можа выкарыстоўваць дадзеную асаблівасць для вызначэння наяўнасці пакета пры падборы імёнаў пакетаў па слоўніках.

Вызначэнне імёнаў пакетаў у зачыненых рэпазітарах можа запатрабавацца для здзяйснення нападу праз змешванне залежнасцяў, якая маніпулюе скрыжаваннем імёнаў залежнасцяў у публічных і ўнутраных рэпазітарах. Ведаючы, якія ўнутраныя NPM-пакеты прысутнічаюць у карпаратыўных рэпазітарах, атакавалы можа размясціць пакеты з тымі ж імёнамі і навейшымі нумарамі версій у публічным рэпазітары NPM. Калі пры зборцы ўнутраныя бібліятэкі відавочна не прывязаныя ў наладах да свайго рэпазітара, пакетны мэнэджар npm палічыць больш прыярытэтным публічны рэпазітар і загрузіць падрыхтаваны атакавалым пакет.

GitHub быў апавешчаны аб праблеме ў сакавіку, але адмовіўся дадаваць абарону ад нападу, спаслаўшыся на архітэктурныя абмежаванні. Кампаніям, якія выкарыстоўваюць прыватныя рэпазітары, рэкамендавана перыядычна правяраць з'яўленне перасякальных імёнаў у публічным рэпазітары або стварыць ад свайго імя заглушкі з імёнамі, якія паўтараюць імёны пакетаў у прыватных рэпазітарах, каб зламыснікі не маглі размясціць свае пакеты з імёнамі, якія перасякаюцца.

Крыніца: opennet.ru

Дадаць каментар