Уразлівасць, якая дазваляла выпусціць абнаўленне для любога пакета ў рэпазітары NPM

Кампанія GitHub раскрыла інфармацыю аб двух інцыдэнтах у інфраструктуры рэпазітара пакетаў NPM. 2 лістапада іншыя даследчыкі бяспекі (Kajetan Grzybowski і Maciej Piechota) у рамках праграмы Bug Bounty паведамілі аб наяўнасці ў рэпазітары NPM уразлівасці, якая дазваляе апублікаваць новую версію любога пакета, выкарыстоўваючы для гэтага свой уліковы запіс, не аўтарызаваную для выканання падобных абнаўленняў.

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

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

Другі інцыдэнт здарыўся 26 кастрычніка. Падчас тэхнічных прац з базай дадзенага сэрвісу replicate.npmjs.com была выяўлена прысутнасць у даступнай для вонкавых запытаў БД канфідэнцыйных дадзеных, якія расчыняюць інфармацыю аб імёнах унутраных пакетаў, якія згадваліся ў логу змен. Інфармацыя аб падобных імёнах можа быць скарыстана для здзяйснення нападаў на залежнасці ва ўнутраных праектах (у лютым падобная атака дазволіла выканаць код на серверах PayPal, Micrоsoft, Apple, Netflix, Uber і яшчэ 30 кампаній).

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

Нагадаем, што ў адпаведнасці з праведзеным у 2020 годзе даследаваннем, толькі 9.27% ​​мэйнтэнераў пакетаў выкарыстоўваюць для абароны доступу двухфактарную аўтэнтыфікацыю, а ў 13.37% выпадкаў пры рэгістрацыі новых уліковых запісаў распрацоўшчыкі спрабавалі паўторна выкарыстоўваць скампраметаваныя паролі, якія фігуруюць у вядомых уцечка. Падчас праверкі надзейнасці выкарыстоўваных пароляў атрымалася атрымаць доступ да 12% акаўнтаў у NPM (13% пакетаў) з-за выкарыстанні прадказальных і трывіяльных пароляў, такіх як "123456". У ліку праблемных апынуліся 4 уліковыя запісы карыстальнікаў з Top20 самых папулярных пакетаў, 13 уліковых запісаў, пакеты якіх загружалі больш за 50 млн раз у месяц, 40 – больш за 10 млн загрузак у месяц і 282 з больш за 1 млн загрузак у месяц. З улікам загрузкі модуляў па ланцужку залежнасцяў, кампраметацыя ненадзейных уліковых запісаў магла трапіць у суме да 52% ад усіх модуляў у NPM.

Крыніца: opennet.ru

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