В GitHub устранена уязвимость, допускающая внедрение кода в любой репозиторий

6/03/2012 10:21

Проект GitHub уведомил пользователей об инциденте, в результате которого произошло неавторизированное внедрение кода в репозиторий проекта Ruby On Rails, сообщает opennet.ru. Уязвимость, из-за которой стал возможен взлом, уже устранена и начато расследование возможных последствий атаки. В настоящее время все факты свидетельствуют о том, что атака была лишь демонстрацией новой уязвимости, проведённой в открытую одним из исследователей, после того как 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. По сообщению GitHub, заблокированный после инцидента аккаунт Хомякова теперь восстановлен. Проблема, известная как уязвимость массового присвоения появилась в Rails с тех пор, как была добавлена возможность устанавливать сразу несколько атрибутов в рамках одного вызова. Эта проблема детально описана в официальном руководстве Rails Security Guide, в том числе, там описано и как с ней бороться, но, к сожалению, функциональность необходимая для этого по-умолчанию отключена в стандартной инсталляции Ruby on Rails. И хотя в данном конкретном случае эта проблема в GitHub уже устранена, множество Rails-приложений по всему миру по-прежнему подвержены этой уязвимости. Коварность ситуации в том, что эта уязвимость не только хорошо известна, но и в том, что бороться с ней часто нет никакой технической возможности при неправильно выполненной установке. Хорошая новость заключается в том, что после столь демонстративного взлома, разработчики Rails внесли изменения в ветку, на базе которой будет сформирован релиз Ruby on Rails 3.2, активировав белый список атрибутов по-умолчанию в стандартной установке, что даёт возможность бороться с этой уязвимостью. Всем текущим пользователям Ruby on Rails разработчики рекомендуют незамедлительно провести аудит кода, чтобы убедиться в том, что их система не была скомпрометирована сторонними лицами.
Подробности