В библиотеках JavaScript содержится код с элементами управления, который разработчики приложений могут использовать, чтобы не писать соответствующие элементы с нуля. Right9ctrl получил доступ к библиотеке Event-Stream, которой еженедельно пользуются до двух миллионов человек. Как отмечает ArsTechnica, среди пользователей — как стартапы, так и крупные компании, входящие в Fortune 500.
В августе 2018 года создатель Event-Stream передал права администратора человеку, предложившему «помочь с ее поддержкой».
«Не знаю даже, что сказать», — написал он на GitHub в ноябре.
По словам создателя Event-Stream, когда ему написал Right9ctrl, он уже некоторое время не занимался поддержкой библиотеки и «ничего с нее не получал», поэтому согласился передать права человеку, который выразил желание заняться библиотекой.
О том, что библиотека заражена, стало известно в начале ноября 2018 года, однако некоторое время оставалось непонятно, что именно делал вредоносный код.
ZDNet со ссылкой на «наблюдательных пользователей» пишет, что, получив доступ к Event-Stream, Right9ctrl написал новую версию библиотеки (3.3.6). Добавленный в ней код не делал ничего до тех пор, пока пользователь не запускал приложение Copay — электронный кошелек, разработанный биткойновой платежной системой BitPay. В Copay используется, в том числе, библиотека Event-Stream.
При открытии кошелька вредоносный код из библиотеки добавлялся в код Copay, похищал данные пользователей, включая секретные ключи, и отправлял на сервер в Куала-Лумпуре. Вероятно, с помощью этих данных Right9ctrl мог выводить криптовалюту с кошельков пораженных пользователей.
Преставители Copay признали уязвимость и призвали пользователей срочно обновить приложения до новой версии. Вредоносная версия Event-Stream 3.3.6 также была удалена с репозитория.
Удалось ли хакеру Right9ctrl украсть криптовалюту со счетов пользователей библиотеки, неизвестно. Как отмечает ExtremeTech, вычислить злоумышленника, которому удалось увести биткойны таким способом, практически невозможно, а застраховать сбережения в криптовалюте нельзя — в отличие от обычных денежных вкладов.