GitHub добавил защиту от атак, использующих коллизии SHA-1
21 марта 2017 года
GitHub сообщил о внедрении системы определения и блокирования атак, связанных с использования коллизий SHA-1 в Git-репозиториях. Несмотря на то, что пока не зафиксировано реальных атак по подмене объектов в Git через манипуляцию коллизиями SHA-1, GitHub решил перестраховаться и предоставил превентивную защиту.
Напомним, что существующая атака на PDF, позволяющая создать два документа с одним хэшем и разным содержанием, основана на задействовании уже рассчитанной коллизии SHA-1. Атака строится на использовании шаблона, состоящего из вызывающей коллизию известной последовательности и дополняющего эту последовательность набора данных, который подобран таким образом, чтобы не влиять на итоговый хэш SHA-1. Так как во всех атаках используется один и тот же шаблон известной коллизии, а вычисление новой коллизии требует гигантских вычислительных мощностей, то для блокирования атаки достаточно блокировать известный шаблон, по крайней мере до нахождения новой коллизии.
В Git применение данного метода атаки затруднено, так как для подмены объекта, необходимо, чтобы подменяемый объект уже содержал шаблон коллизии, т.е. произвольный блок подменить не получится. Теоретически возможна лишь замена уже ранее добавленного атакующим блока, но она затруднена тем, что в изначально принятом в репозиторий блоке должен присутствовать достаточно большой кусок вызывающих коллизию бинарных данных, что при работе с кодом не останется незамеченным.
Кроме того, проведение атаки усложняет то, что каждый объект в Git дополнительно содержит служебный заголовок, содержимое которого не может контролироваться атакующим, но который участвует при вычислении проверочного хэша. Иными словами имеется лишь возможность создать два набора данных, содержащих большую порцию идентичных бинарных данных и небольшой блок специально подобранных различающихся данных, но после помещения их в Git из-за добавления заголовка с параметрами коммита, условия возникновения коллизии нарушатся.
Как вариант обхода данной проблемы упоминается атака по замене репозитория. Например, атакующий может добиться принятия своего кода (с бинарным блоком, вызывающим коллизию) в репозиторий и создания SHA-1 подписи для тега или коммита. Затем он может подготовить вариант этого репозитория, в котором содержимое его коммита будет подменено без изменения проверочного хэша SHA-1. Остаётся подменить настоящий репозиторий на подготовленный атакующим изменённый вариант, что может быть совершено, например, через взлом сервера, на котором размещён репозиторий.
Тем временем разработчики Git начали работу по реализации возможности использования альтернативных хэшей, отличных от SHA-1. Уже представлен набор изменений, избавляющий код Git от жёсткой привязки к SHA-1. План ухода от SHA-1 подразумевает добавление опциональной поддержки SHA3-256, которая сможет применяться параллельно с SHA-1. Таким образом, переведённый на SHA3-256 локальный репозиторий сможет взаимодействовать с Git-серверами (как минимум на уровне push/fetch), поддерживающими только SHA-1, а пользователи смогут одновременно использовать идентификаторы объектов SHA-1 и SHA3-256.
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.