У Composer виявлено вразливість, яка компрометує сховище PHP Packagist

Кілька днів тому з'явилася новина про те, що виявлено критичну вразливість en менеджер залежностей Композитор (CVE-2021-29472), що дозволяє запускати довільні команди в системі при обробці пакету зі спеціально сформованим значенням URL, яке визначає напрямок завантаження вихідного коду.

Проблема проявляється у компонентах GitDriver, SvnDriver та HgDriver використовується з системами управління джерелами Git, Subversion та Mercurial. Уразливість була виправлена ​​у версіях Composer 1.10.22 та 2.0.13.

Зокрема, особливо постраждало сховище пакетів Packagist за замовчуванням, яке містить 306.000 1.400 пакетів розробників PHP і пропонує понад XNUMX мільярда завантажень щомісяця.

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

Експеримент показав, що якщо є інформація про проблему, зловмисники можуть взяти під контроль інфраструктуру Packagist і перехопити облікові дані супровідників або перенаправити завантаження пакетів на сторонній сервер, домовляючись про доставку варіантів пакетів із змінами. зловмисна для заміни бэкдора під час встановлення залежностей.

Небезпека для кінцевих користувачів обмежена через те, що вміст composer.json зазвичай визначається користувачем, а посилання на джерело передаються під час доступу до сторонніх сховищ, які, як правило, є надійними. Основний удар припав на репозиторій Packagist.org та службу Private Packagist, що викликає Composer із передачею даних, отриманих від користувачів. Зловмисники могли запускати свій код на серверах Packagist, скинувши спеціально створений пакет.

Команда Packagist усунула уразливість протягом 12 годин після повідомлення вразливості. 22 квітня дослідники приватно повідомили розробників Packagist, і проблема була виправлена ​​того ж дня. Публічне оновлення Composer із виправленням уразливості було випущено 27 квітня, а подробиці були розкриті 28 квітня. Аудит журналів на серверах Packagist не виявив жодної підозрілої діяльності, пов’язаної з уразливістю.

Помилки введення аргументів - це справді цікавий клас помилок, на які часто не звертають уваги під час огляду коду та взагалі не помічаються у взаємодії чорних ящиків.

Проблема спричинена помилкою в коді перевірки URL-адреси у кореневому файлі composer.json та у вихідних посиланнях для завантаження. Помилка присутня в коді з листопада 2011 р. Packagist використовує спеціальні рівні для управління завантаженнями коду без прив'язки до певної системи управління джерелом, яка виконується за допомогою виклику "fromShellCommandline" з аргументами командного рядка.

Суть проблеми полягає в тому, що метод ProcessExecutor дозволив в URL-адресі вказати будь-які додаткові параметри виклику. Така втеча відсутня у драйверах GitDriver.php, SvnDriver.php та HgDriver.php. Атаці GitDriver.php перешкоджав той факт, що команда "git ls-remote" не підтримувала вказівку додаткових аргументів після шляху.

Атака на HgDriver.php стала можливою, передавши параметр "–config" утиліті "hq", що дозволяє організувати виконання будь-якої команди, маніпулюючи конфігурацією "alias.identify".

Надіславши тестовий пакет із подібною URL-адресою до Packagist, дослідники забезпечили, що після його публікації їх сервер отримав HTTP-запит від одного із серверів Packagist на AWS, який містив список файлів у поточному каталозі.

Слід зазначити, що супровідники не виявили жодних ознак попередньої експлуатації цієї вразливості в публічній інстанції пакувальника.

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


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: AB Internet Networks 2008 SL
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.