• О проекте
  • Услуги
  • Заказать услугу
  • Новости
  • Блог
  • Глоссарий
  • Акции
  • Контакты
  • Блог

    GitHub решает проблему SHA-1 коллизий

    С недавних пор на GitHub при вычислении SHA-1 хешей происходит анализ контента с целью выявления признаков SHAttered атаки на коллизию SHA-1. Подозрительный контент будет выявляться и отклоняться. Размещать на ресурсе файлы с разным контентом, но из пары с идентичными хешами станет невозможно. Компания таким способом решила обезопасить своих пользователей и себя, несмотря на то, что подобных атак, кроме торрентов, ранее нигде не зафиксировано.

    Метод создания коллизий для SHA-1 представили месяц назад эксперты амстердамского ЦМИ и специалисты Google. Первый образец применения коллизии был зафиксирован незадолго после публикации научной работы М. Стивенса, работающего криптографом в амстердамском Центре. В ходе атаки BitErrant удалось создать два идентичных торрент-файла, при этом они имели одинаковые хеши, но каждый соответствовал своему файлу. Первый файл был стандартным исполняемым, второй – вредонос для Metasploit фреймворка.

    GitHub решает проблему SHA-1 коллизий

    По мнению Линуса Торвальдса, бояться коллизий в Git репо не стоит. Между применением хеша для генерации id контента в Git и для цифровых подписей в комплексах криптографии есть огромная разница. Хеш в Git не применяется для доверия, ведь это задача цифровых подписей (доверие распространяется в таком случае не на хеши, а на пользователей). Технической целью SHA-1 хешей в для репозиториев является метод выявления ошибок и избегания случайных конфликтов.

    В GitHub все равно уверены, что для Git очень важно, чтобы SHA-1 работала правильно. Рассуждения на эту тему от Торвальдса, несомненно, правильны, но, если чисто теоретически эта уязвимость дает шанс на проведение атаки, от неё следует избавиться.

    Интересно, что на объекты, созданные ранее, невозможно провести подобную атаку. Хакеру необходимо одновременно создавать 2 объекта, у которых должен быть одинаковый хеш. Объекты будут почти одинаковыми, единственное исключение – мизерная часть секции данных.

    Дальнейший сценарий может выглядеть так:

    • разместить вредонос в одном из файлов с идентичным хешем. Лучше пользоваться бинарниками, чтобы на глаз нельзя было определить разницу между объектами;
    • закоммитить «валидный» объект;
    • разослать копию Git-repo, в котором подменить валидный объект на зловред.

    После SHAttered атаки всегда остается идентичная в двух частях пары специфичная последовательность данных. Таким образом, после подобной атаки легко вычислить след и понять, был ли взлом. Этим и решили воспользоваться сотрудники Github: при каждом вычислении хеш-функции теперь проводится проверка на наличие одинаковой последовательности.

    Сотрудники Github сейчас вместе с Git работают над внедрением библиотеки для выявления коллизий SHA-1 в общий проект.