ProIT: медіа для профі в IT
2 хв

Пакет Everything спричинив хаос у репозиторії NPM – звіт Checkmarx

author avatar ProIT NEWS

Компанія Checkmarx опублікувала звіт із детальним описом пакету, що розповсюджується через репозиторій NPM і руйнує будь-яку машину, яка використовується для його завантаження. Про це повідомляє DevOps.com.

Розробник JavaScript-пакетів, відомий як PatrickJS (також відомий як gdi2290), завантажив у репозиторій NPM пакет Everything, який містить понад 3000 підпакетів та охоплює залежностями всі наявні пакети в репозиторії. Кожен підпакет призводить до перехідних залежностей, які порушують конвеєри та вичерпують простір для зберігання.

Для реалізації подібної можливості пакет Everything пов’язаний прямими залежностями із п’ятьма пакетами @everything-registry/chunk-N, які своєю чергою прив’язуються до більш ніж 3000 пакетів sub-chunk-N, у кожному з яких здійснюється прив’язка до 800 наявних пакетів у репозиторії.

Розміщення пакету Everything у NPM призвело до того, що він став своєрідним інструментом для здійснення DoS-атак, оскільки спроба його встановлення призводить до завантаження мільйонів розміщених у NPM пакетів і вичерпання наявного дискового простору або зупинення виконання складальних процесів.

За статистикою NPM пакет був завантажений орієнтовно 250 разів, але ніщо не заважає додати його до іншого пакету після зламу облікового запису розробника для здійснення диверсії.

Крім того, мимоволі атаці піддалися деякі служби та інструменти, що здійснюють моніторинг і перевірку нових пакетів, які розміщуються в NPM.

Публікація пакету Everything фактично заблокувала можливість видалення будь-яких пакетів у NPM, які опинилися у списку його залежностей. Пакет із NPM може бути видалений автором, тільки якщо він ще не використовується в залежностях інших пакетів. Але після публікації Everything залежностями виявилися охоплені всі пакети в репозиторії.

Примітно, що видалення самого пакету також виявилося заблокованим, оскільки 9 років тому в репозиторії був розміщений тестовий пакет everything-else, в якому було вказано рядок everything у списку залежностей. Таким чином, пакет Everything після публікації опинився в залежності від іншого пакету.

Спільнота розробників Node.js оперативно зробила вебсайт про цю ситуацію і відпрацювала з адміністрацією GitHub можливість приховувати цей проєкт на ресурсі.

Після значних зусиль пакет Everything було вилучено із реєстру, але зловмисники створили домен, де демонструють свою роботу.

Поки незрозуміло, чи був пакет Everything створений як жарт над розробниками, чи вони переслідували якийсь інший зловмисний намір.

Йосеф Харуш Кадоурі, керівник відділу безпеки ланцюга поставок програмного забезпечення Checkmarx, сказав, що подібні інциденти трапляються час від часу, оскільки немає процесу перевірки пакетів перед їх завантаженням у реєстр.

Фактично, подібний інцидент вже відбувся і раніше, коли пакет Zalastax, який залежав від кожного загальнодоступного пакету NPM, було завантажено у реєстр.

Лише коли було виявлено проблему, розробники реєстру NPM видалили пакет через брак ресурсів та інструментів, які були б потрібні для сканування кожного пакету, зазначив Харуш Кадоурі.

Саме такі інциденти, а також вразливості, виявлені в пакетах NPM, слугуватимуть поштовхом для перегляду робочих процесів, які складають ланцюг постачання програмного забезпечення.

Понад 10 років розробники завантажували компоненти програмного забезпечення із різних репозиторіїв, практично не звертаючи уваги на вразливості. Оскільки ці вразливості використовуються все більше, IT-організації, які покладаються на це програмне забезпечення, тепер вимагають від постачальників програм надання видимості походження компонентів, які використовуються для його створення.

Загальна мета полягає у тому, щоб спростити виправлення застосунків, особливо коли виявлено вразливість нульового дня.

Тим часом організаціям було б доцільно створити репозиторій перевірених програмних компонентів. Розробники все ще можуть легко отримати доступ до цих компонентів для створення програм, але проблем із безпекою подальших програм повинно бути менше, якщо компоненти, що знаходяться в цьому реєстрі, були проскановані.

Якщо ж розробникам дозволено безпосередньо завантажувати пакети та компоненти із загальнодоступного реєстру, то це лише питання часу, перш ніж виникне проблема безпеки програми.

Коли організації засвоять найкращі практики DevSecOps, кількість проблем із безпекою застосунків неухильно зменшуватиметься, а ланцюги поставок програмного забезпечення ставатимуть більш захищеними.

Раніше ProIT повідомляв, що патч Microsoft за січень 2024 року виправляє 49 вразливостей і 12 помилок RCE.

Також ми писали, що хакери намагалися вкрасти 900 ГБ даних Ubisoft.

Підписуйтеся на ProIT у Telegram, щоб не пропустити жодної публікації!

Приєднатися до company logo
Продовжуючи, ти погоджуєшся з умовами Публічної оферти та Політикою конфіденційності.