- PVSM.RU - https://www.pvsm.ru -

ITSoft: Тысячи сайтов Рунета выложили свои исходники в публичный доступ

TL;DR

16 сайтов из топ-1000 самых посещаемых сайтов Рунета согласно статистике LiveInternet с совокупной посещаемостью в 34 231 732 пользователей в месяц подвержены простой уязвимости, позволяющей получить доступ к исходникам проекта. Более 2 922 сайтов содержат ошибку конфигурации десятилетней давности. В рамках исследования компания ITSOFT [1] проанализировала более полумиллиона сайтов русскоязычного интернета.

ITSoft: Тысячи сайтов Рунета выложили свои исходники в публичный доступ - 1

Проблематика

«Всё новое — это хорошо забытое старое». Уязвимость, речь о которой пойдёт ниже, появилась не сегодня и известна давно, как минимум с начала двухтысячных. Но результаты исследования показывают, что актуальная она и сейчас, равно, как и поднимаемые ею проблемы: качества и безопасности разработки интернет-проектов, уровня специалистов на рынке и халатности.

Раньше системы контроля версий использовались лишь на крупных проектах для решения проблем совместной разработки. Время шло, предпочтения менялись, все большее количество разработчиков начало использовать VCS [2] и далеко не всегда по назначению. В 2008 году появился GitHub [3] и к началу 2010-х годов большинство разработчиков перешло [4] на Git [5].

За это время сменились поколения разработчиков, но отношение к вопросам безопасности системно не сильно изменилось. Информационная безопасность, в контексте её базовых аспектов для широкой аудитории, всё так же находится в зачаточной стадии, хотя после утечек данных о покупках в интернет-магазинах [6] иHeartBleed [7] всё большее количество людей начинают о ней задумываться.

Тем не менее, простая ошибка конфигурации и человеческий фактор, который приводил к масштабным последствиям десять лет назад, всё так же актуален.

Уязвимость

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

По умолчанию Git использует каталог «.git» в папке проекта, в котором хранится информация о всех изменениях файлов проекта. SVN, в свою очередь, содержит подобную информацию в папке «.svn».

Веб-серверы Nginx и Apache по умолчанию не ограничивают доступ к этим папкам, несмотря на то, что файлы и папки, начинающиеся с точки, в UNIX-like системах являются скрытыми, а Apache и сам использует служебные файлы «.htaccess».

Поскольку проблема очень распространенная — разработчики CMS и фреймворков рано или поздно вносят запрет на отображение подобных файлов в свои сборки, например как со временем сделал 1С-Битрикс в своем Веб-окружении. Но разработчики веб-серверов подразумевают, что предоставляют базовый инструмент, гибкость которого должна быть использована системными администраторами взависимости от их задач, перекладывая ответственность.

В результате — огромное количество сайтов, предоставляющих свободный доступ к своим исходным кодам, а как следствие — базам данных, серверам, логам, бэкапам и чувствительной информации (в зависимости от каждого конкретного случая).

Статистика и анализ

Спустя семь лет после того, как подобная уязвимость была обнаружена [8] у таких крупных IT-компаний, как Яндекс, Mail.ru, Rambler, Opera (правда тогда речь шла только про SVN), — рассчитывать на повторение истории с теми же участниками не приходилось. Однако, за это время новые ресурсы завоевали свою популярность, количество сайтов в Рунете увеличилось, равно как и пользователей, на смену SVN во многом пришёл Git и уже новое поколение разработчиков создавало эти проекты и переделывало старые. Поэтому количество уязвимых сайтов известных брендов довольно велико: от крупных телекоммуникационных компаний и производителей техники до медицинских клиник и федеральных порталов.

Для иллюстрации мы взяли данные статистики LiveInternet [9] для сайтов Рунета и проверили, какое количество среди содержат данную уязвимость.

Результатом анализа топ-1000 самых посещаемых стали 16 проектов с совокупной аудиторией в 34 231 732 пользователей в месяц.

Решив не останавливаться на достигнутом, мы собрали информацию по 559 411 сайтам рейтинга LiveInternet, получив в результате 2 922 уязвимых.

ITSoft: Тысячи сайтов Рунета выложили свои исходники в публичный доступ - 2

За прошедшие годы распространенность систем контроля версий увеличилась, и теперь их можно встретить не только на крупных проектах, а повсеместно, что можно увидеть на графике. Из смещения распределения для SVN вправо можно сделать вывод о том, что разработчики крупных сайтов в своё время выучили урок или просто перешли на Git. Огорчает тот факт, что системно опыт не был накоплен и передан новому поколению разработчиков, которое, уже используя другие инструменты, совершает те же ошибки на крупных проектах. Результат: количество уязвимых сайтов в разы выше при приближении к первому месту в рейтинге посещаемости.

Соотношение количества уязвимых проектов, использующих Git и SVN, повторяет результаты рейтинга систем контроля версий [10]. Это может говорить о том, что вероятность ошибок безопасности не зависит от инструмента и условно-постоянна.Примечательно, что есть проекты, у которых доступны обе скрытые папки.

ITSoft: Тысячи сайтов Рунета выложили свои исходники в публичный доступ - 3

Само по себе раскрытие информации, хранящейся в скрытых папках, может не привести к серьёзным последствиям, если в репозитории находятся только файлы, относящиеся к фронтенд-части проекта. Однако, на практике мы имеем: пароли в открытом виде от удаленных хостингов репозиториев проектов, пароли от баз данных, бэкапы, пароли от других серверов, чувствительную информацию пользователей, ключи доступа к сторонним сервисам; не говоря о том, что доступ к исходникам серверной части проекта позволяет обнаружить уязвимости в коде.

Как проверить и исправить

Для того, чтобы узнать, уязвим ли ваш проект, достаточно лишь ввести в адресной строке браузера http://domain.ru/.git/HEAD [11] или http://domain.ru/.svn/entries [12] для Git и SVN соответственно. Если вы увидели что-то отличное от сообщения о ненайденной странице — стоит задать вопрос разработчикам.

Закрыть брешь можно настроив веб-сервер на запрет доступа к скрытым файлам и папкам. Но, по моему мнению, лучше всего не использовать Git/SVN на production-сервере, осуществляя deploy корректными методами.

Источник [13]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/sovety/201453

Ссылки в тексте:

[1] ITSOFT: http://itsoft.ru

[2] VCS: https://www.google.com/url?q=https://ru.wikipedia.org/wiki/%25D0%25A1%25D0%25B8%25D1%2581%25D1%2582%25D0%25B5%25D0%25BC%25D0%25B0_%25D1%2583%25D0%25BF%25D1%2580%25D0%25B0%25D0%25B2%25D0%25BB%25D0%25B5%25D0%25BD%25D0%25B8%25D1%258F_%25D0%25B2%25D0%25B5%25D1%2580%25D1%2581%25D0%25B8%25D1%258F%25D0%25BC%25D0%25B8&sa=D&ust=1477062295018000&usg=AFQjCNFBTUbrwrNDpqboEHVIesjRr80sTQ

[3] GitHub: https://www.google.com/url?q=https://ru.wikipedia.org/wiki/GitHub&sa=D&ust=1477062295019000&usg=AFQjCNEV_IJkoZFFXyW_s_wMahPicMllOw

[4] большинство разработчиков перешло: https://www.google.com/url?q=http://tagline.ru/version-control-systems-rating/&sa=D&ust=1477062295019000&usg=AFQjCNFF8ipAn6Zxzb2rIUoTqKDtF7t1sA

[5] Git: https://www.google.com/url?q=https://ru.wikipedia.org/wiki/Git&sa=D&ust=1477062295020000&usg=AFQjCNF3fd6psBfxSt4NdpuEgyhMq-KbwA

[6] утечек данных о покупках в интернет-магазинах: https://www.google.com/url?q=https://rg.ru/2011/07/26/yandex-site.html&sa=D&ust=1477062295021000&usg=AFQjCNFo5W0EOwBzNSzgeJLak-c61NCVlw

[7] HeartBleed: https://www.google.com/url?q=https://habrahabr.ru/post/218661/&sa=D&ust=1477062295021000&usg=AFQjCNEKJhxIwefUxLptpgdkIdiOLS93FA

[8] была обнаружена: https://www.google.com/url?q=https://habrahabr.ru/post/70330/&sa=D&ust=1477062295026000&usg=AFQjCNHuI-VRdj7eWiA5H7KXctyiKr50Eg

[9] статистики LiveInternet: https://www.google.com/url?q=http://www.liveinternet.ru/rating/ru/%23period%3Dmonth;geo%3Dru;&sa=D&ust=1477062295028000&usg=AFQjCNFyPX3X2mfQx8BSk6xRjdvZkgFdGA

[10] рейтинга систем контроля версий: https://www.google.com/url?q=http://tagline.ru/version-control-systems-rating/&sa=D&ust=1477062295032000&usg=AFQjCNG-nve4JWsAq4Qak7skbNplnmhcGg

[11] http://domain.ru/.git/HEAD: https://www.google.com/url?q=http://domain.ru/.git/HEAD&sa=D&ust=1477062295034000&usg=AFQjCNG85iyW6goRe_jkEUF_6dAaoTpz8w

[12] http://domain.ru/.svn/entries: https://www.google.com/url?q=http://domain.ru/.svn/entries&sa=D&ust=1477062295035000&usg=AFQjCNHx-1arpHhDnlqeERi5vTY8GNIhNw

[13] Источник: https://roem.ru/21-10-2016/235217/source-itsoft/