Проект GitHub уведомил пользователей инциденте, в результате которого произошло неавторизированное внедрение кода в репозитории нескольких проектов, в том числе Ruby On Rails. В настоящее время приведшая к возможности взлома уязвимость уже устранена и начато расследование возможных последствий атаки. В настоящее время все факты свидетельствуют о том, что атака была лишь демонстрацией новой уязвимости, проведённой в открытую одним из исследователей безопасности.
Проблема была выявлена и продемонстрирована Егором Хомаковым из Санкт-Петербурга. Уязвимость вызвана особенностью обработки массового присваивания данных форм в популярном web-фреймворке Ruby on Rails и может наблюдаться в различных приложениях, не ограничиваясь GitHub. Использовав брешь в Rails стало возможным внесение изменений и отправка данных в репозиторий любого проекта GitHub, без наличия явных полномочий на выполнение данных операций. За два дня до инцидента Егор оставил уведомление о найденной им уязвимости для разработчиков проекта Ruby on Rails, но это уведомление было закрыто с комментарием, что ошибка находится в зоне ответственности конечных разработчиков приложений на Ruby on Rails. Тогда Егор решил продемонстрировать эту уязвимость в действии и внёс изменения в первичный репозиторий проекта Ruby on Rails, размещённый на GitHub.
Для привлечения внимания разработчиков Егор сначала создал уведомление о проблеме, установив дату создания, смещенную на 1001 лет в будущее. После чего он добавил свой публичный ключ в список коммитеров проекта Ruby on Rails и выполнил коммит в мастер-репозиторий этого проекта. После того как GitHub устранил уязвимость Егор Хомаков опубликовал в своём блоге подробный рассказ с описанием метода атаки.
Представители GitHub сообщили, что проект инициировал проведение полного аудита используемого кода. В своем сообщении они признали, что Хомаков сообщил им об этой уязвимости двумя днями ранее, но потом без предупреждения осуществил внедрение своего публичного ключа и демонстрационную атаку. "После проведенного анализа действий Хомакова, никакой зловредной активности с его стороны не обнаружено" – сообщил GitHub. По сообщению GitHub, заблокированный после инцидента аккаунт Хомакова теперь восстановлен (Хомаков уже подтвердил это).
Проблема, известная как уязвимость массового присвоения появилась в Rails с тех пор, как была добавлена возможность устанавливать сразу несколько атрибутов в рамках одного вызова. Эта проблема детально описана в официальном руководстве Rails Security Guide, в том числе, там описано и как с ней бороться, но, к сожалению, функциональность необходимая для этого, по-умолчанию отключена в стандартной инсталляции Ruby on Rails. И хотя в данном конкретном случае эта проблема в GitHub уже устранена, множество Rails-приложений по всему миру по-прежнему подвержены этой уязвимости.
Коварность ситуации в том, что эта уязвимость не только хорошо известна, но и в том, что бороться с ней часто нет никакой технической возможности при неправильной выполненной установке. Хорошая новость заключается в том, что после столь демонстративного взлома, разработчики Rails внесли коммит, активирующий белый список атрибутов в стандартной установке Ruby on Rails по-умолчанию, что даёт возможность бороться с этой уязвимостью. Всем текущим пользователем Ruby on Rails разработчики рекомендуют незамедлительно провести аудит их кода, чтобы убедиться в том, что их система не была скомпрометирована сторонними лицами.