Критическая уязвимость в node-netmask затрагивает 279 тысяч приложений

Критическая уязвимость в node-netmask затрагивает 279 тысяч приложений

Критическая уязвимость в node-netmask затрагивает 279 тысяч приложений

В популярном npm-пакете node-netmask выявлена уязвимость, позволяющая обойти ограничение доступа к IP-адресам и провести атаку SSRF, RFI или LFI на приложение на базе Node.js. Проблема устранена с выпуском версии 2 продукта.

Библиотека netmask выполняет парсинг IP-адресов при обращении к сетевым ресурсам через приложение. На этот компонент полагаются свыше 279 тыс. проектов на GitHub; из репозитория npm его еженедельно скачивают по 3 млн раз и более.

Уязвимость в netmask, получившая идентификатор CVE-2021-28918, вызвана ошибкой в реализации проверки входных данных и проявляется при обработке IP-адресов смешанного формата.

Согласно спецификациям IETF, адреса IPv4 в текстовом виде могут быть представлены в различных форматах, в том числе в десятичном и восьмеричном. В последнем случае строковое значение адреса начинается с нуля — например, 0150.0024.0073.0321, что соответствует более привычному 104.20.59.209. Основные браузеры обычно отслеживают префикс «0» в адресной строке и автоматически совершают перевод IP-адреса в десятичный формат.

Как оказалось, netmask эту особенность не учитывает и попросту отбрасывает начальный 0, обрабатывая все части адреса как десятичные числа. Злоумышленник может, например, запросить ресурс, указав IP-адрес как 0177.0.0.1 (эквивалентно 127.0.0.1 — кольцевому адресу, возвращающему к локальному хост-компьютеру), и уязвимый модуль обработает его как внешний адрес 177.0.0.1. В итоге использующее netmask приложение не уловит тождества 0177.0.0.1 и 127.0.0.1 и загрузит ресурс в обход возможных запретов.

Точно так же при обращении к приложению на базе Node.js автор атаки может указать localhost-адрес как 0127.0.0.1 (соответствует десятичному 87.0.0.1). Модуль netmask обработает его как публичный 127.0.0.1, и искомый доступ будет получен.

 

Уязвимость в netmask позволяет также обойти проверку разрешений на доступ к интранет-адресам, VPN, контейнерам и узлам локальной сети путем ввода IP-адреса 012.0.0.1 (10.0.0.1), который netmask воспримет как 12.0.0.1 (публичный).

Обнаружившие проблему исследователи отметили, что она «катастрофична», так как возможность манипуляции значениями IP-адресов на уровне ввода грозит атаками типа RFI (Remote File Inclusion, динамическое подключение файлов с других серверов), LFI (Local File Inclusion, включение в цепочку выполнения локальных файлов) и SSRF (подмена адресов на стороне сервера).

Патч для netmask вышел десять дней назад в составе сборки 2.0.0 пакета; разработчикам приложений настоятельно рекомендуется обновить зависимости в коде.

Ваши данные могут пробить по звонку или ссылке через рекламные сервисы

Исследователь Антон Бочкарев из 3side (Третья Сторона) сообщил о новой потенциальной проблеме с сервисами таргетированной рекламы, связанными с операторами связи. Если верить опубликованному разбору, некоторые из таких платформ позволяют буквально по одному звонку или одному переходу по ссылке собрать о человеке крайне подробный цифровой профиль.

Автор материала на «Хабре »напоминает, что ещё полтора года назад уже описывал похожую историю с «пробивом» абонентов через рекламный сервис.

Тогда публикация вызвала резонанс, и уязвимость, по его словам, в итоге закрыли. Но теперь, как утверждается, на других площадках ситуация может быть даже хуже.

Для регистрации в одном из таких сервисов, как пишет автор, оказалось достаточно принять СМС на любой номер. После этого пользователю открывались инструменты настройки рекламной аудитории: геолокация, фильтрация по звонкам, интересам, сайтам, данным о полученных сообщениях и другим признакам.

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

 

 

Отдельное внимание автор уделяет так называемым рекламным счётчикам. Логика здесь такая: если поставить счётчик на сайт и заманить туда конкретного человека, то затем его визит можно использовать как фильтр в рекламной системе. А дальше — попытаться получить о нём уже куда более широкий набор данных, чем просто факт посещения страницы.

Среди параметров, которые, по словам автора, доступны в таких системах, — пол, возраст, уровень дохода, интересы, посещаемые сайты, отправители СМС, сведения о звонках, семейный статус, наличие недвижимости, автомобиля и даже данные о детях. Если всё это действительно доступно в описанном виде, речь идёт уже не просто о рекламной аналитике, а о крайне удобном инструменте для слежки и «пробива».

Отдельно подчёркивается, что для подобных действий якобы не нужно запускать реальную рекламную кампанию и тратить деньги: достаточно этапа предварительной оценки аудитории. И именно это, по мнению автора, делает проблему особенно опасной — входной порог минимален, а потенциальная польза для злоумышленников огромна.

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

В итоге пользователям стоит исходить из того, что их мобильная активность может быть куда менее приватной, чем принято думать. А главный вывод здесь, пожалуй, в том, что вопрос уже давно не только в рекламе. Когда инструменты маркетинга позволяют восстанавливать личные связи, маршруты и цифровые привычки конкретного человека, это выглядит уже как история про массовую слежку под вполне легальной вывеской.

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