Исходный код открыт для всех
6 декабря 2018
21 ноября 2018 года случилось странное. GitHub-
пользователь @FallingSnow сообщил, что в одной из
зависимостей event-stream спрятан вредоносный код,
который фактически представляет собой бэкдор
неизвестной функциональности.
Существует расхожее мнение, что программы с открытым исходным кодом заведомо защищены от закладок и недокументированных функций, но на деле все обстоит несколько иначе.
Рассмотрим доводы сторонников такого подхода.
Любой желающий может проанализировать код программы и понять, что она делает на самом деле.
Во-первых, не любой. Для этого необходимо как минимум обладать познаниями в области программирования и быть знакомым с языком, на котором написана программа.
Во-вторых, код можно самостоятельно проанализировать, если объем его невелик. Если же мы возьмем программу, код которой состоит из нескольких сотен страниц, доскональное его изучение может отнять слишком много времени.
Открытое сообщество разработчиков следит за вкладом каждого участника и анализирует изменения, которые он внес.
Безусловно. Но по мере того, как сообщество разрастается, контролировать вклад каждого участника становится все сложнее.
Итак, началось расследование. Благодаря истории коммитов на GitHub сразу стало понятно, что вредоносный коммит сделал другой пользователь @right9ctrl, которому были предоставлены права мейнтейнера для event-stream. На его счету ряд нормальных коммитов, а автор проекта Доминик Карр (@dominictarr) передал ему права мейнтейнера.
Инструменты контроля версий — такие, например, как используются на Github — позволяют не допустить несанкционированного изменения программы.
С одной стороны – да. Но с другой, это не спасает от модификации, скажем, зависимых пакетов, как это случилось с event-stream. Кроме того, в данном случае бэкдор существовал всего три дня, после чего его автор выпустил новую версию, уже не содержащую вредоносный код, однако, за это время модифицированный компонент попал на десятки тысяч компьютеров.
И это лишь вершина айсберга. В условиях, когда приложения состоят из множества компонентов, поддерживаемых разными разработчиками, имеют десятки, а то и сотни зависимостей и автоматически обновляются из удаленных репозиториев, контролировать их целостность становится всё сложнее, и вероятность компрометации многократно увеличивается на каждом этапе.
И атака на event-stream является этому отличным примером. Что такое event-stream? Это всего лишь модуль, используемый для обработки потоков в Node.JS, то есть вспомогательный инструмент для реализации более крупных проектов. Любопытно отметить, что вредоносный код был внедрен даже не в саму библиотеку event-stream: в нее была добавлена зависимость на сторонний пакет, содержащий бэкдор.
Всё это означает, что конечной целью атаки была не библиотека, а какое-то стороннее приложение, использующее ее функционал. И это приложение быстро нашлось. Им оказался криптовалютный кошелек с открытым исходным кодом Copay. Внедренный бэкдор способствует утечке приватных ключей, а значит, ставит под угрозу безопасность хранимой криптовалюты.
Но даже на этом история не заканчивается. Исходный код кошелька Copay используется многими криптовалютными приложениями, а это значит, что и они оказались скомпрометированы в результате атаки. Вот такая вот глобализация процесса разработки приложений.
Антивирусная правДА! рекомендует
Пользователи нередко говорят о том, что им не нужен антивирус, потому что они не скачивают никакие подозрительные файлы, не посещают сомнительные сайты, а программы устанавливают исключительно из доверенных источников. В данном случае заражение осуществлялось как раз через доверенный источник (вернее, через цепочку доверенных источников).
Несмотря на то, что вредоносный компонент просуществовал всего три дня, он успел распространиться на множество компьютеров и был замечен лишь по случайности.
Используемые в Dr.Web Security Space 12.0 несигнатурные методики детектирования позволяют в режиме реального времени анализировать потенциально опасную активность приложений и своевременно принимать меры, направленные на недопущение негативных последствий.
Нам важно ваше мнение
Чтобы оставить комментарий, нужно зайти через свой аккаунт на сайте «Доктор Веб». Если аккаунта еще нет, его можно создать.
Комментарии пользователей
Ruslan
18:45:52 2018-12-11
Любитель пляжного футбола
16:16:55 2018-12-09
ex-Дизель
09:58:16 2018-12-07
Отдельные извинения перед пользователями @razgen, @Шалтай_Александр_Болтай, @dyadya_Sasha, @ex-Дизель, @Любитель_пляжного_футбола, @Sasha50, @Денисенко_Павел_Андреевич, @GREEN, @Пaвeл, @Неуёмный_Обыватель, @achemolganskiy, @tigra, которым я тут как бы отвечаю - хочу, что бы хоть какие-то следы моих обращений сохранились, а то уже alex-wankel не может войти, а его комменты удаляются((
аккаунт alex-diesel, по видимому забанен. Второй день "неверные учетные записи" или "пользователя с такой почтой нет", удалены несколько комментов (вполне корректных ), ну и самое подозрительное - в Рейтинге ВебIQ нет больше alex-diesel (был больше 9000).
Моральную оценку давать пока не собираюсь, меня интересуют несколько сугубо прагматических моментов.
@admin, @Вячeслaв,
1.Доступ к "моим артефактам", где хранятся номера честно выигранных годовых лицензий. Один там точно еще не активирован.
2.Доступ в учебный кабинет, где хранятся сертификаты за честно сданные экзамены. Там штук 35 еще действующих сертификатов.
3.История обращений в техподдержку, которую помню обещались бережно хранить. Там много инфы, может пригодится, особенно без действующей техподдержки.
Спасибо и еще раз пардон за офтоп и за "ответы" конкретным участникам.
Korney
02:06:43 2018-12-07
razgen
01:07:08 2018-12-07
Да не может такого быть. Никаких видимых причин. По всей вероятности проблемы технического характера.
razgen
01:03:46 2018-12-07
А вы ещё не перешли?
В таком случае однозначно надо переходить.
Lia00
00:34:55 2018-12-07
robot
00:28:48 2018-12-07
stavkafon
23:10:09 2018-12-06
Dvakota
22:43:50 2018-12-06
Геральт
22:07:05 2018-12-06
Александр
22:05:05 2018-12-06
orw_mikle
21:57:41 2018-12-06
Дмитрий
20:33:38 2018-12-06
Пaвeл
20:16:24 2018-12-06
Работа трудна, работа томит. За нее никаких копеек. Но мы работаем, будто мы делаем величайшую эпопею.
Но без стихов Biggurza наша работа вдвойне трудна. У этой работы невидна дна.
Ждем Biggurza - ударной строкой всколыхни устоявшийся здесь покой!
anatol
19:57:03 2018-12-06
Шалтай Александр Болтай
19:23:27 2018-12-06
Biggurza
19:21:43 2018-12-06
Влад
17:36:20 2018-12-06
Татьяна
17:27:02 2018-12-06
anavdoni
16:21:31 2018-12-06
B0RIS
16:08:59 2018-12-06
Damir
15:55:53 2018-12-06
DrKV
14:54:22 2018-12-06
Toma
14:19:05 2018-12-06
Любитель пляжного футбола
14:03:28 2018-12-06
Короче, не парься, установи антивирус, ты же не будешь исследовать код каждой устанавливаемой тобой программы, даже имея все необходимые знания для этого! :)
Sasha50
13:43:53 2018-12-06
Sasha50
13:41:27 2018-12-06
vinnetou
12:40:47 2018-12-06
Masha
12:32:46 2018-12-06
Anton_S
11:53:12 2018-12-06
Dmur
11:42:19 2018-12-06
I23
11:36:35 2018-12-06
Zserg
11:34:40 2018-12-06
Денисенко Павел Андреевич
11:29:20 2018-12-06
Alexey
11:28:19 2018-12-06
с другой стороны, а судьи кто?
Никто не может помешать доверенным экспертам творчески применить коммерческий закрытый код.
Не контролируемое гражданами государство делает то, что лучше для его неразумных подданных.
Всё решают его сиюминутные интересы.
Не пущать, у нас. Слямзить и выпороть у китайцев. А пригодиться (? например) у потенциального противника.
«Открытый код – это способ самоорганизации гражданского общества.» ©
SGES
11:19:13 2018-12-06
Rider
11:16:18 2018-12-06
alex-diesel
11:11:29 2018-12-06
вот вредный характер у меня! а не стремно делиться кодом с неизвестными сотрудниками сертифицирующего органа? Хотя выбора нет... И про "автоматом гарантию(!!) отсутствия..." - имхо громко, это не гарантия, конечно, это скорее штамп очень серьезного ОТК ))
Еще раз благодарю за ответ. Моя точка зрения на эту тему расширилась, а мнение немного изменилось, спасибо.
Vlad
11:04:42 2018-12-06
Скайнет грядет! Кайтесь грешники!
Alexander
10:52:38 2018-12-06
Ну а рост количества составляющих компонентов чего-то цельного и сложного, например, программы, и усложнение связей-зависимостей таких частичек, - гарантированно ведёт к усложнению контроля целостности и надёжности единого продукта.
Отсюда и два вывода. Первый (грустный), простое - проще, сложное - сложнее и менее доступно к пониманию и контролю. Второй (приятный), - из первого правила имеется исключение, - Dr.Web Security Space - это именно тот компонент, который даже без полного понимания его работы обеспечит должный и надёжный контроль всей системы в целом. Но всё же, будет лучше, используя Его, продолжать Его постоянное изучение, в том числе читая Антивирусную правду...
Вячeслaв
10:45:59 2018-12-06
С одной стороны закрытый код вроде никто не может изучить, с другой никто не мешает открыть компании свой код доверенным экспертам, давшим подписку о неразглашении. Чем это хуже было бы в идеале открытого кода? Хочешь изучить код, пишешь на сайте заявку, подписываешь соответствующую бумагу и вперед. Все решает политика компании
Наш код может изучаться в ходе сертификации - получая сертификат, мы автоматом получаем гарантию отсутствия недекларированных возможностей.
sanek-xf
10:41:36 2018-12-06
edgik
10:26:50 2018-12-06
Alexey
10:17:08 2018-12-06
"Вклад в open source движение улучшает карму."
Vlad X
10:11:28 2018-12-06
Так что антивирус необходим.
Natalya_2017
10:10:43 2018-12-06
Andromeda
10:08:33 2018-12-06
Lenba
09:56:52 2018-12-06
I46
09:54:04 2018-12-06