Можно ли подцепить вредоносное ПО, скачивая файлы из репозиториев Microsoft на GitHub? Оказывается, можно. Удваиваем осторожность!
Один из самых старых советов по безопасности звучит так: «скачивайте программы только из официальных источников». Часто официальные источники — это основные магазины приложений на каждой платформе, но для миллионов полезных и бесплатных приложений с открытым исходным кодом самым что ни на есть официальным источником являются репозитории разработчиков на профильных сайтах, GitHub и GitLab.
Прямо на них выкладываются исходники проектов, предлагаются исправления и дополнения в код, а зачастую есть возможность скачать и готовую сборку приложения. Эти сайты знакомы любому, кто хотя бы немного интересуется компьютерами, программами и программированием.
Именно поэтому для многих (включая самих разработчиков и специалистов по ИБ) стало неприятным открытием то, что файл, доступный по ссылке вида github.com/ИмяРазработчика/НазваниеПроекта/files/номер/имя_файла, может быть опубликован совсем даже не разработчиком и содержать… что угодно.
Конечно, этим немедленно воспользовались киберпреступники.
Другие пользователи способны подтвердить проблему в комментариях. Комментировать можно и выпуск новых версий приложения. По необходимости к комментариям добавляют файлы, например скриншоты с ошибкой или документы, на которых сбоит приложение. Эти файлы хранятся на серверах GitHub как раз по ссылкам вышеописанного вида.
Но у GitHub есть одна особенность: если пользователь подготовил комментарий, загрузил сопроводительные файлы, но не нажал кнопку «опубликовать», информация как бы «зависает» в черновике — она не видна ни владельцу приложения, ни другим пользователям GitHub. Но прямая ссылка на загруженный в комментарий файл при этом уже создана и вполне работоспособна — файл исправно выдается из CDN GitHub любому желающему, перешедшему по этой ссылке.
Ссылка для скачивания вредоносного файла сгенерирована после добавления файла в неопубликованный комментарий на GitHub
При этом владельцы репозитория, в комментариях в котором размещен этот файл, не могут его ни удалить, ни заблокировать. Более того — они о нем даже не знают! Да и настроек, позволяющих ограничить загрузку подобных файлов для репозитория в целом, также нет. Единственное решение — полностью отключить комментарии (на GitHub это можно сделать на срок до шести месяцев), но это лишит разработчиков обратной связи.
В GitLab механика работы с комментариями аналогична, и там тоже можно публиковать файлы с помощью так и не отправленных комментариев. Здесь файлы оказываются доступны по ссылке gitlab.com/ИмяРазработчика/НазваниеПроекта/uploads/номер/имя_файла.
Правда, тут проблему немного смягчает то, что выгрузка файлов доступна только зарегистрированным и вошедшим в систему пользователям GitLab.
Внимательный пользователь, возможно, задумается, почему какой-то игровой чит хранится в репозитории Microsoft:
Один из самых старых советов по безопасности звучит так: «скачивайте программы только из официальных источников». Часто официальные источники — это основные магазины приложений на каждой платформе, но для миллионов полезных и бесплатных приложений с открытым исходным кодом самым что ни на есть официальным источником являются репозитории разработчиков на профильных сайтах, GitHub и GitLab.
Прямо на них выкладываются исходники проектов, предлагаются исправления и дополнения в код, а зачастую есть возможность скачать и готовую сборку приложения. Эти сайты знакомы любому, кто хотя бы немного интересуется компьютерами, программами и программированием.
Именно поэтому для многих (включая самих разработчиков и специалистов по ИБ) стало неприятным открытием то, что файл, доступный по ссылке вида github.com/ИмяРазработчика/НазваниеПроекта/files/номер/имя_файла, может быть опубликован совсем даже не разработчиком и содержать… что угодно.
Конечно, этим немедленно воспользовались киберпреступники.
Анатомия проблемы
GitHub и его близкий родственник GitLab построены вокруг совместной работы над проектами по разработке ПО. Одни разработчики могут выкладывать свой код, а другие — предлагать к нему дополнения, исправления или даже делать форки — свою альтернативную версию приложения или библиотеки. Когда в приложении обнаруживается ошибка, любой пользователь может сообщить об этом разработчику, заведя отчет о проблеме, issue.Другие пользователи способны подтвердить проблему в комментариях. Комментировать можно и выпуск новых версий приложения. По необходимости к комментариям добавляют файлы, например скриншоты с ошибкой или документы, на которых сбоит приложение. Эти файлы хранятся на серверах GitHub как раз по ссылкам вышеописанного вида.
Но у GitHub есть одна особенность: если пользователь подготовил комментарий, загрузил сопроводительные файлы, но не нажал кнопку «опубликовать», информация как бы «зависает» в черновике — она не видна ни владельцу приложения, ни другим пользователям GitHub. Но прямая ссылка на загруженный в комментарий файл при этом уже создана и вполне работоспособна — файл исправно выдается из CDN GitHub любому желающему, перешедшему по этой ссылке.
Для просмотра ссылки необходимо нажать
Вход или Регистрация
Ссылка для скачивания вредоносного файла сгенерирована после добавления файла в неопубликованный комментарий на GitHub
При этом владельцы репозитория, в комментариях в котором размещен этот файл, не могут его ни удалить, ни заблокировать. Более того — они о нем даже не знают! Да и настроек, позволяющих ограничить загрузку подобных файлов для репозитория в целом, также нет. Единственное решение — полностью отключить комментарии (на GitHub это можно сделать на срок до шести месяцев), но это лишит разработчиков обратной связи.
В GitLab механика работы с комментариями аналогична, и там тоже можно публиковать файлы с помощью так и не отправленных комментариев. Здесь файлы оказываются доступны по ссылке gitlab.com/ИмяРазработчика/НазваниеПроекта/uploads/номер/имя_файла.
Правда, тут проблему немного смягчает то, что выгрузка файлов доступна только зарегистрированным и вошедшим в систему пользователям GitLab.
Подарок для фишинговых кампаний
Благодаря возможности публикации произвольных файлов по ссылкам, начинающимся с GitHub/GitLab и содержащим имена уважаемых разработчиков и популярных проектов (ведь неопубликованный комментарий с файлом можно оставить практически в любом репозитории), злоумышленники получают возможность для очень убедительного тематического фишинга. Уже обнаружены
Для просмотра ссылки необходимо нажать
Вход или Регистрация
, в которых в репозиториях Microsoft оставляют «комментарии» с файлами, содержащими якобы приложение для жульничества в играх.Внимательный пользователь, возможно, задумается, почему какой-то игровой чит хранится в репозитории Microsoft:
Для просмотра ссылки необходимо нажать
Вход или Регистрация
{.}com/microsoft/vcpkg/files/…../Cheat.Lab.zip. Но c гораздо большей вероятностью ключевые слова «гитхаб» и «майкрософт» успокоят жертву, и дальше она вглядываться в адрес не будет. Злоумышленники поумней могут маскироваться еще тщательнее, например, выдавая своих зловредов за новую версию приложения, которое распространяется через GitHub или GitLab, и публикуя ссылки через «комментарии» именно к этому приложению.Как защититься от вредоносного контента на GitHub и GitLab
Пока эту особенность дизайна, позволяющую кому угодно неконтролируемо загружать произвольные файлы в CDN GitHub и GitLab, не изменят, пользователям этих ресурсов надо быть предельно внимательными.- Не скачивайте файлы по прямым ссылкам на GitHub/GitLab, опубликованным в посторонних источниках — на других сайтах, в почтовых рассылках или чатах. Вместо этого откройте страничку нужного проекта (github{.}com/ИмяРазработчика/НазваниеПроекта или gitlab.com/ИмяРазработчика/НазваниеПроекта) и убедитесь, что там действительно предлагается для скачивания этот файл. Официальные файлы от разработчиков должны быть опубликованы и видны в репозитории.
- Проверяйте, что вы попали на страницу нужного разработчика, — в GitHub, GitLab и других open-source-репозиториях популярен
Для просмотра ссылки необходимо нажать Вход или Регистрация: создание проектов-фальшивок, отличающихся от оригинала одной-двумя буквами (например, Chaddev вместо Chatdev).
- Избегайте загрузок приложений, имеющих малое количество звезд (лайков) и созданных в недалеком прошлом.
- Используйте защиту от вредоносного ПО и фишинга на всех своих компьютерах и смартфонах.
Для просмотра ссылки необходимо нажать
Вход или Регистрация