Уязвимость SVN всех версий

Нами была найдена уязвимость SVN всех версий, с помощью которой можно получить исходные коды проекта.

Уязвимость имеет силу на проектах, исходные коды которого обновляются через SVN и вебсервер не запрещает читать скрытые директории. По умолчанию ни один вебсервер это не делает.

Степень угрозы: средняя/высокая

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

Исследование было произведено совместно с Антоном Исайкиным.

Способы защиты

Закрыв доступ на чтение из скрытых директорий на сервере, вы обезопасите себя от подобных уявимостей.

Nginx (лучший вебсервер всех времён и народов, кстати)

location ~ /.svn/ {
    deny    all;
}
		    

Apache

<Directory ~ ".*\.svn">
    Order allow,deny
    Deny from all
    Satisfy All
</Directory>
			

SVN

По возможности делать выгрузку исходникиов на продакшен-сервер посредством svn export.