event-stream

История дня (или даже, наверно, правильно было бы сказать “fuckup дня”… хм, может, FUBAR дня?) уходит к event-stream, JavaScript-библиотеке с открытым исходным кодом. Как оказалось, злоумышленник (или злоумышленники) обратились к администратору популярной, но не очень активной в разработке библиотеки, получили админские права, влили туда свой вредоносный код, и таким образом за неделю доставили библиотеку со своим кодом в 2 миллиона установленных приложений с ней.

Все началось с версии 3.3.6, опубликованной 8 сентября, в которую вошел модуль flat-stream. 5 октября этот модуль был обновлен кодом для воровства кошельков Bitcoin и передачи баланса с них на сервер в Малайзии. Кроме постепенного внедрения кода в библиотеку, злоумышленник также зашифровал модуль flat-stream, чтобы код было сложнее вычислить. О ситуации стало известно только во вторник на прошлой неделе, а NPM выпустил рекомендацию только в этот понедельник. Если я правильно понял из обсуждения, цель кода была заключалась в том, чтобы украсть кошельки с криптовалютой, разработанных Copay. Дополнительное обсуждение у Copay тут. Похоже, что это была очень таргетированная атака против разработчиков Copay, и затем код должен был войти в приложение для пользователей, чтобы украсть Bitcoin у конечных пользователей кошельков Copay.

Нужна ли тут какая-то мораль? open source — это, конечно, хорошо, но открытость и в то же время отсутствие денег приводят к подобным ситуациям. NPM пытается внедрять функциональность, которая бы ограничивала установку определенных версий кода, но усилий, предпринимаемых NPM, явно недостаточно для предотвращения попадания этих зависимостей в код, который может нас окружать.