Минобороны США использует Node.js-пакет, который пишет россиянин

Минобороны США использует Node.js-пакет, который пишет россиянин

Минобороны США использует Node.js-пакет, который пишет россиянин

Американская компания Hunted Labs подняла тревогу: один из самых популярных Node.js-пакетов — fast-glob — фактически держится на одном человеке. При этом библиотека используется тысячами проектов по всему миру, включая более 30 систем Минобороны США.

Речь идёт об утилите для поиска файлов по шаблонам. Её автор — разработчик под ником mrmlnc. GitHub-аккаунт и личный сайт связывают его с Яндексом: по данным Hunted Labs, это Денис Малиночкин, живущий в Подмосковье.

С точки зрения безопасности ситуация вызывает вопросы: пакет скачивают более 79 миллионов раз в неделю, он встроен в Node.js-контейнеры и тысячи публичных и частных проектов.

Хотя у fast-glob нет зарегистрированных уязвимостей, библиотека имеет доступ к файловым системам, а значит, теоретически может использоваться для кибератак.

Hunted Labs подчёркивает: сам факт того, что у проекта нет внешнего контроля и дополнительных мейнтейнеров, делает его потенциальной мишенью для злоупотреблений.

«Не каждый кусок кода, написанный россиянином, подозрителен сам по себе. Но такие популярные пакеты без надзора — удобная цель для злоумышленников или государственных структур», — отметил сооснователь Hunted Labs Хейден Смит.

После публикации отчёта сам Малиночкин связался с журналистами. Он подтвердил, что действительно является единственным разработчиком fast-glob, но отверг любые предположения о «скрытых» функциях:

«Никто никогда не просил меня манипулировать проектом, встраивать скрытые изменения или собирать системные данные. Я считаю, что open source строится на доверии и разнообразии», — заявил разработчик изданию The Register он.

В Пентагоне пока не прокомментировали, будут ли отказываться от использования fast-glob.

Эксперты же сходятся в одном: сообществу open source нужно внимательнее следить за тем, кто и как поддерживает критичные проекты. Ведь как выразились в Hunted Labs, «открытому ПО не нужен CVE, чтобы быть опасным. Достаточно доступа, незаметности и беспечности».

Расширения Chrome могут слить секреты URL через атаку по стороннему каналу

Как оказалось, расширения Chrome можно использовать для слива кодов авторизации, сеансовых ID и других секретов из URL любой открытой вкладки. Никаких специальных разрешений для этого не понадобится, только доступ к declarativeNetRequest API.

Этот механизм, пришедший на смену webRequest API, позволяет расширениям сообщать браузеру, что следует изменить или заблокировать на загружаемой странице (заголовки, реклама, трекеры).

Правила обработки запросов при этом добавляются динамически, а фильтрация осуществляется по регулярным выражениям, соответствующим подмножествам знаков, которые могут присутствовать на определенных позициях в URL.

Исследователь Луан Эррера (Luan Herrera) обнаружил, что блокировку, диктуемую правилами, Chrome производит почти мгновенно, за 10-30 мс, а остальные запросы выполняются дольше (~50-100ms) — из-за сетевых подключений. Эту разницу во времени расширение может использовать для бинарного поиска с целью посимвольного слива URL.

// extensions/browser/api/web_request/extension_web_request_event_router.cc:1117-1127
case DNRRequestAction::Type::BLOCK:
  ClearPendingCallbacks(browser_context, *request);
  DCHECK_EQ(1u, actions.size());
  OnDNRActionMatched(browser_context, *request, action);
  return net::ERR_BLOCKED_BY_CLIENT;

Оракул для подобной тайминг-атаки строится с использованием chrome.tabs.reload для перезагрузки страницы и перехватчика chrome.tabs.onUpdated, помогающего отследить событие status === "complete". Замер времени между reload и завершением загрузки покажет, заблокирован запрос или успешно обработан.

Повторение проверок и бинарного поиска позволяет получить полный URL (с довеском после «?»), затратив на каждый знак строки несколько прогонов. Таким образом, можно незаметно для пользователя украсть включенные приложением в адрес секреты — токены OAuth и сброса пароля, API-ключи, ссылки на контент, закрытый для поисковых систем.

Проверка PoC проводилась на Windows 11 24H2 с использованием Chrome разных версий:

  • 144.0.7559.97 (Stable)
  • 145.0.7632.18 (Beta)
  • 146.0.7647.4 (Dev)
  • 146.0.7653.0 (Canary)

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

RSS: Новости на портале Anti-Malware.ru