Выпущен инструмент Synode для обнаружения инъекций кода в модулях Node.js

nodejs_synode

Исследователи в области информационной безопасности обнаружили, что тысячи модулей Node.js уязвимы к нападениям с применением вредоносного кода. Для устранения данной бреши они выпустили инструмент Synode.

Авторы утилиты проанализировали 235 850 npm-модулей и обнаружили, что 3 % (7686 модулей) и 4 % (9111 модулей) используют наиболее уязвимые семейства интерфейсов exec и eval соответственно. 20 % всех устройств оказываются зависимыми от по меньшей мере одной API-инъекции.

synode grafic

Распространенность API-инъекций в npm-модулях

Механизм обнаружения брешей

Утилита использует статический анализ для обнаружения мест, потенциально уязвимых для атак путем внедрения кода, и анализ времени выполнения программы для их поиска и пресечения. Разработчики рекомендуют использовать Synode через процесс пост-инсталляции npm. Фаза статического анализа идентифицирует входы API-инъекций и обобщает информацию о значениях, которые могут быть переданы функции в дереве шаблонов:

synode tree

Пример дерева шаблонов.

Затем деревья шаблонов сводятся к набору строк и вставок:

synode strings

Пример шаблонов.

Если в шаблонах нет неизвестных частей, тогда сайт статически безопасен. Иначе проверка продолжается в процессе выполнения программы.

Итоги

18 924 из всех 51 627 вызовов API-инъекций являются статически безопасными (36,66 %). Шаблоны для подавляющего большинства сайтов вызовов имеют не более одной уязвимости. Статический анализ заканчивается для 96,27 % из 15 604 модулей менее чем за минуту, со средним временем анализа для этих модулей 4,38 секунды.

Источник: блог Acolyer

Ещё интересное для вас:
Тест: какой язык программирования вам стоит выбрать для изучения?
Тест: как хорошо вы разбираетесь в Data Science?
Соревнования и бесплатная онлайн-школа для программистов