Xakep #305. Многошаговые SQL-инъекции
Специалисты из Университета штата Северная Каролина проделали огромную работу и просканировали миллиарды файлов: около полугода (с 31 октября 2017 года по 20 апреля 2018 года) исследователи наблюдали за примерно 13% всех публичных репозиториев на GitHub, изучая каждый коммит. Результаты сканирования свидетельствуют о том, что прядка 100 000 репозиториев содержат случайно забытые в коде криптографические ключи и токены API, и каждый день на GitHub появляется множество новых утечек данных такого рода.
Эксперты полагались не только на GitHub Search API для поиска определенных текстовых паттернов, как делали ранее их коллеги, проводившие похожие изыскания. Вместо этого они также изучали снапшоты репозиториев в БД Google BigQuery. При этом специалисты сравнивали свои результаты с работой других инструментов для аналогичных сканирований. Например, TruffleHog оказался практически неэффективен и сумел обнаружить только 25,236% секретов из датасета GitHub Search и 29,39% из датасета BigQuery.
В репозиториях исследователи искали забытые в коде криптографические ключи и токены API. Так как не все ключи и токены имеют одинаковый формат, эксперты выделили 15 разных форматов для токенов API (15 сервисов 11 популярных компаний, 5 из которых входят в топ Alexa 50), а также 4 формата ключей.
В итоге аналитики искали ключи, связанные с сервисами Google, Amazon, Twitter, Facebook, Mailchimp, MailGun, Stripe, Twilio, Square, Braintree и Picatic. Суммарно за полгода удалось выявить 575 456 токенов и ключей, 201 642 из которых были уникальными и распределялись по 100 000 GitHub-проектов.
Чаще всего, в 93,58% случаев, токены и ключи обнаруживались в проектах с одним владельцем, а не в репозиориях, доступ к которым есть у многих разработчиков. По мнению исследователей, это означает, что большинство найденных ключей и токенов рабочие и настоящие. Дело в том, что, согласно статистике, тестовые ключи и токены чаще используются большими командами с общим тестовым окружением.
Так как специалисты наблюдали за состоянием репозиториев около полугода, они получили возможность изучить, как обстоят дела с удалением подобных утечек из кода. Так, за все время наблюдения лишь 6% владельцев репозиториев почти сразу обратили внимание, что допустили утечку и убрали из открытого доступа свои токены и ключи. Еще 12% разработчиков на это потребовалось более суток, а 19% ликвидировали утечку в течение 16 дней. К сожалению, 81% разработчиков вообще не заметили утечку и, очевидно, даже не догадываются, чем это может грозить.
В своем отчете специалисты рассказывают и о некоторых конкретных находках. К примеру, им удалось обнаружить учетные данные AWS, связанные с огромным сайтом, на который полагаются миллионы абитуриентов в США. Очевидно, учетные данные в коде забыли представители компании-подрядчика. Еще одни учетные данные от AWS оказались связаны с неким правительственным учреждением в Западной Европе. В данном случае исследователи сумели установить, кто именно забыл эту информацию в коде, — это был человек, имеющий за плечами более 10 лет опыта в разработке.
Также в файлах конфигурации OpenVPN были найдены 7280 RSA-ключей. Причем изучив эти файлы подробнее, аналитики заметили, что большинство пользователей отключали аутентификацию посредством паролей, то есть полагались исключительно на сами RSA-ключи. Фактически любой человек, имеющий к этим ключам доступ, мог проникнуть в тысячи приватных сетей.
Разумеется, специалисты уже сообщили о результатах своих изысканий разработчикам GitHub. Те заверили, что тоже следят за подобными утечками данных, и сообщили, что результаты исследователей во многом пересекаются с их собственными наблюдениями. В настоящее время эксперты все еще ведут переговоры с командой GitHub о рассылке уведомлений всем пострадавшим. Дело в том, что из-за масштабов проблемы аналитики не имеют возможности связаться со всеми владельцами проблемных репозиториев (порой сложно даже просто найти контакты). Однако разработчики GitHub работают над собственным инструментом для поиска таких же утечек, Token Scanning, и они полагают, что никаких дополнительных уведомлений рассылать не потребуется.