Subscribe feed

Атрыманыя зыходнікі 3300 глабальных інтэрнэт-праектаў

23 верасня 2009

Пару месяцаў назад была выяўленая ўразлівасць, уласцівая ў асноўным вялікім інтэрнэт-праектам (накшталт Рамблера, Мейла, Яндэкса, Оперы і інш.). Даследнікі (2Товарища і Антон Исайкин) змаглі атрымаць доступ да файлавых структур найвядомых сайтаў (у агульнай складанасці 3320 сайтаў) і ў шэрагу выпадкаў іх поўныя зыходныя коды.

Праблема звязаная з сістэмай кантролю версій SVN. SVN з'яўляецца прасунутым сродкам для арганізацыі сумеснай распрацоўкі дзясяткаў, а то і сотняў распрацоўнікаў. У сілу асаблівасцяў архітэктуры, SVN захоўвае ў кожнай дырэкторыі праекту свае метафайлы, складзеныя ва ўтоеную дырэкторыю .svn. У адным з файлаў пад назовам entries знаходзіцца спіс усіх файлаў і дырэкторый, размешчаных у той жа тэчцы, што і .svn. Гэтак жа тамака знаходзіцца інфармацыя аб размяшчэнні рэпазітара, памеры файлаў, даты іх змены і лагіны карыстачоў, якія працуюць над праектам. Такім чынам, калі праект распрацоўваецца з дапамогай SVN, то зазірнуўшы па адрасе draftcopy.ru/.svn/entries можна ўбачыць файлавую структуру кораня праекту з аўтарамі, апошнімі зменамі, спасылкай на асноўную галінку рэпазітара і т.п.

Але можна пайсці і далей. У той жа тэчцы .svn знаходзіцца дырэкторыя text-base, у якой ляжаць апошнія версіі ўсіх файлаў, змешчаных у рэпазітары. Карціну дапаўняе гэтак жа і тое, што файлы маюць не стандартнае пашырэнне (напрыклад .php), якое дазваляе іх адразу адправіць на інтэрпрэтатар, а дадатковае пашырэнне .svn-base, дзякуючы якому файл аддаецца які запытаў яго чалавеку ў выглядзе зыходнага кода.

draftcopy.ru/.svn/text-base/index.php.svn-base

Даследнікі адзначаюць, што апісаная карціна з'яўляецца ідэальнай і хоць яна і была такі ў большасці выпадкаў, усё жа вялікі адсотак зыходных кодаў не атрымалася атрымаць па тых або іншых чынніках.

Усвядоміўшы, што выяўленая ўразлівасць уласцівая большасці праектаў за апошнія дзевяць гадоў, даследнікі вырашылі цалкам прасканаваць рунэт і атрымалі цікавую статыстыку.

У выніку было прасканавана 2253388 даменаў, з іх уразлівымі апынуліся 3320. Перш чым публікаваць адчынена інфармацыю аб уразлівасці, адмыслоўцы папярэдзілі ўсіх пацярпелых. У першую чаргу ліста былі разасланыя гігантам (yandex.ru, rambler.ru, mail.ru, opera.com, rbk.ru, 003.ru, bolero.ru, habrahabr.ru, разам 19 адрасоў), а затым,лісты атрымалі астатнія 3000+ сайтаў.

Абарона ад уразлівасці

Уразлівасць можна абыйсці некалькімі шляхамі. Шлях у ілоб — забараніць звяртацца да метадиректориям SVN па 80-ому порту, т.е. сродкамі вэбсервера.

Рашэнне для nginx

location ~ /.svn/ {
deny all;
}

Глабальных локейшенов у nginx`е няма, таму прийдется падпісваць для кожнай server вобласці. Каб правіла мела сілу, неабходна загружаць яго да іншых локейшенов з рэгулярным выразам. Універсальны спосаб — першым локейшеном.

Рашэнне для Apache

Order allow,deny Deny from all Satisfy All

Тут трохі прасцей, трэба дапісаць гэта ў httpd.conf і на ўсіх праектах пад кіраваннем apache чытанне з дырэкторыі .svn будзе недаступна.

Рашэнне сродкамі SVN

Абарона ад уразлівасці сродкамі вэбсервера — лячэнне хваробы. Любай доктар скажа, што прафілактыка прасцей, лягчэй і меней марней, чым лячэнне. Таму лепшым рашэнне будзе адсутнасць гэтых самых метадиректорий у корані праекту. Дамагчыся гэтага можна сродкамі svn export з асноўнай галінкі.


рэкамендуем прачытаць таксама

Каментаванне не дазволенае.

Rambler's Top100