Исследователь из Google Сэм Сакконе (Sam Saccone) еще в начале года проинформировал npm о неприятной уязвимости, способной привести к распространению вредоносного кода по множеству зависимых друг от друга пакетов. В феврале информация об уязвимости была раскрыта, а на днях добралась до CERT, после чего привлекла всеобщее внимание.
Проблема в первую очередь связана с тем, что при установке пакета из npm могут выполняться вспомогательные скрипты (так называемые lifecycle scripts). Выполняются они обычно с правами текущего пользователя, хотя на некоторых системах им запросто может оказаться root. Проблема известная, но Сакконе пошел чуть дальше.
Во-первых, он использовал тот факт, что при использовании npm'шной версионной системы SemVer и подключении к своему проекту сторонних модулей далеко не все разработчики фиксируют их версии (ведь так удобно автоматически получить новую функциональность/исправление ошибок, когда автор модуля его обновит).
Во-вторых, многие разработчики сами являются авторами модулей, выложенных в npm, причем в npm не предусмотрен автоматический выход - кто залогинился, тот так и остается авторизованным пользователем, пока явно не выйдет. Так что подхваченный скрипт запросто может что-то сделать от имени этого пользователя.
Все это, усугубленное централизованностью npm, позволило создать демонстрационный модуль, который по сути является npm-червем. Как только его установит разработчик другого модуля, дальше он начнет распространяться как снежный ком по всем проектам, выставившим зависимость на модуль первой жертвы, от них дальше, дальше и дальше.
Администрация npm уже заявила, что не располагает ресурсами, достаточными для проверки всех модулей, и возлагает свои надежды на сообщество.
Источник: Softpedia |
теги: javascript | предложить новость | обсудить | все отзывы (0) | [7460] |
|
|
|
|