Adobe Flash Media Server

box_flashstreamingserv3_5_112x112.jpg

Adobe Flash Media Server je podatkovni in medijski Flash strežnik katerega začetek razvoja sega v leto 2002, ko je Macromedia naznanila Flash Communication Server MX, ki ugledal luč sveta 9 julija istega leta. Ko je leta 2005 je Adobe prevzel Macromedio, so produkt preimenovali v Flash Media Server (v nadaljevanju FMS) in danes je na voljo zadnja različica 3.5 (v različnih licenčnih oblikah). Kmalu po izzidu FMS-ja so se začeli pojavljati tudi odprtokodni kloni med katerimi je takrat izstopal Red5. Primarni protokol, ki ga uporabljajo Flash strežniki za komuniciranje z odjemalci je RTMP (Real Time Messaging Protocol), privzeto vrata 1935, na voljo pa je tudi nekaj variacij, kot je RTMPT, ki uporablja vrata 80 (enkapsulacija RTMP protokola v HTTP) in ostali. Specifikacija protokola RTMP je bila zunanjim razvijalcem prikrita vse do 15. julija 2009, ko se je Adobe po večmesečni predhodni najavi odločil, da jo ponudi prostodostopno na svoji spletni strani. Adobe se je najverjetneje leta 2009 odločil za objavo specifikacije zaradi prodora konkurenčnega produkta Microsoft Silverlight, saj je želel pospešiti razvoj aplikacij, ki temeljijo na Flash tehnologiji.

Razvijalci odprotkodnih Flash strežnikov so se morali pred uradno objavo specifikacije za razumevanje delovanja RTMP protokola poslužiti vzvratnega inženirstva. Pri tem so jim bila v veliko pomoč orodja kot so Wireshark in tcpdump. Še nedolgo nazaj je bila na voljo spletna stran, namenjena analizi RTMP protokola, ki pa je sedaj iz očitnega razloga izgubila svoj pomen. Čeprav Red5 še vedno ostaja najbolj priljubljen odprtokodni Flash strežnik, jih je na voljo kar nekaj, ki so se pojavili še pred uradno objavo RTMP specifikacije. Takšen najbolj priljubljen in po mojem mnenju tudi najboljši komercialni Flash strežnik je Wowza Media Server (zadnja različica 2.0.0, v nadaljevanju WMS), ki poleg Flash-a podpira še vrsto drugih protokolov.

Flash strežniki niso pogosto tarča napadov saj navadno ti strežniki gostijo izključno medijske datoteke in zato za napadalce s tega vidika niso tako zanimivi. Med vsemi javno objavljenimi ranljivostmi izstopajo ranljivosti na Adobe FMS: CVE-2007-6148, CVE-2009-3791, CVE-2009-3792, SA34878. Čeprav, kot povedano, Flash strežniki sami po sebi zaradi vsebine za napadalce niso toliko zanimivi, pa bi jim, sodeč po objavljenih ranljivostih, lahko uspelo preko RTMP protokola vplivati na delovanje Flash odjemalcev in s tem odjemalčevih sistemov (uporabnost se kaže v bot omrežjih). Vse zgoraj omenjene ranljivosti so posledica napak v kodi in ne v konfiguraciji strežnika. V nadaljevanju se bom tokrat podrobno posvetil zgolj eni zelo pogosto spregledani varnostni luknji, ki je posledica napačne kofiguracije praktično kateregakoli Flash strežnika.

V podrobnost delovanja RTMP protokola se ne bomo spuščali, pogledali si bomo le potrebno konfiguracijo za Flash predvajalnik na odjemalčevi strani in iz nje izluščili URL, ki je uporabljen za klic vira. Kot pa bomo spoznali v nadaljevanju, se lahko ta isti URL uporabi tudi za objavo vira (smer odjemalec -> strežnik). Za primer vzemimo spletno mesto Vlade Republike Slovenije in se napotimo do “Audiovizualne vsebine | Neposredni prenos“. Pričaka nas prijeten Flash predvajalnik. Oglejmo si izvorno kodo spletne strani (ang. View source) in se premaknimo do vrstice 137. Razčljenjena vrstica bi morala izgledati nekaj podobnega kot:

<div id="normal">
<a name="c2393" id="c2393"></a>
<embed height="380" width="628"
src="http://arhiv.mm.gov.si/predvajalnik/player.swf"
type="application/x-shockwave-flash"
allowscriptaccess="always"
allowfullscreen="true"
flashvars="file=vladaG.flv&streamer=rtmp://savica-c.mm.gov.si/live/&controlbar=bottom&image=http://arhiv.mm.gov.si/vlada/pijamaSLO.jpg&skin=http://arhiv.mm.gov.si/predvajalnik/vzivo.swf&playlistsize=200&volume=80&bufferlength=1&caption=true&displayclick=play&icons=true&usefullscreen=true&autostart=true&mute=false&quality=truet&stretching=uniform"/>

kjer pri flashvars pomeni file datoteko (ali tok, ang. stream), ki ga kličemo, streamer strežnik vključno z aplikacijo, ki je v našem primeru “/live“, ostali parametri pa nas ne zanimajo več. adobe_fms_35.jpgTe podatke lahko uporabimo sedaj v poljubni aplikaciji za klic vira, mi pa se bomo namesto na klic, osredotočili na objavo (ang. publish), ki se v RTMP terminologiji imenuje preprosto Publish. Skok na spletno mesto http://savica-c.mm.gov.si nam bo razkril privzeto spletno stran Flash strežnika Adobe Flash Media Server 3.5, kar nam da misliti, da se upravitelji niso pretirano ukvarjali z njegovo konfiguracijo.

Konkretni primeri zlorab neustrezno konfiguriranega Flash strežnika

Flash strežnik WMS, ki je po mnenju bralcev revije Streaming Media Magazine #1 med strežniki, je omogočal npr. v preteklih različicah “prepis” prenosa videa v živo s poljubnim virom, ki ga je napadalec izbral v svoji aplikaciji za objavo. Po privzetih nastavitvah prijava na Flash media strežnik (tako Adobe FMS kot tudi WMS) ne zahteva avtentikacije, kar pomeni, da je mogoča uporaba strežnika vsakomur, ki lahko prosto dostopa do vrat 1935. V grobem se tu ponuja zloraba strežnika za prenos neavtoriziranih vsebin, napadalec mora poznati le IP naslov strežnika in ime aplikacije na njemu. “Prepis” videa v živo na WMS je napadalec storil tako, da je uporabil svojo aplikacijo za objavo, ki podpira RTMP protokol in izbran vir prijavil na strežnik pod istim imenom (ime kanala če želite). S tem je “prepisal” video v živo, ki so ga odjemalci gledali z uporabo spletnih Flash predvajalnikov. Dogodek je podoben piratsku oddajanju, ki včasih zmotijo delovanje TV postaj. Pri Adobe FMS “prepis” ni mogoč, je pa zato možna druga oblika zlorabe (ta je mogoča tudi pri WMS), ki napadalcem omogoča krajo širokopasovne povezave v svoje namene. Napadalec lahko uporabi strežnik za objavo svojega vira, naslov strežnika vključno z aplikacijo in izbranim (svojim) imenom vira pa uporabi v nastavitvah Flash predvajalnika za svoje odjemalce. Za prenos videa v živo je v Flash media strežnikih na voljo posebna aplikacija, ki se razlikuje od aplikacij za prenos videa na zahtevo (ang. video-on-demand) ali medsebojno komunikacijo med klienti (ang. shared object). Tako pri Adobe FMS kot tudi WMS, se aplikacija za prenos videa v živo privzeto imenuje kar “live”, za video na zahtevo pa “vod” za Adobe FMS in “simplevideostreaming” ali “file” za WMS. Nekateri razvijalci bodo nastavitve vkodirali v Flash SWF datoteko pri čemer si moramo za dekodiranje podatkov pomagati z razstavitvijo SWF datoteke ali skozi analizo prekota podatkov (tcpdump, WireShark). Kraja širokopasovne povezave na strežniku ne bo ostala neopažena saj bodo vse povezave vidne v dnevniškem zapisu. Prepričan sem, da je v našem primeru izbran strežnik Adobe FMS 3.5, ki je uporabljen za tako video na zahtevo kot video v živo za potrebe spletnega mesta Vlade Republike Slovenije, neustrezno skonfiguriran in omogoča objavo neavtoriziranih vsebin. Flash strežnike je enostavno locirati z uporabo orodij za izčrpno pregledovanje omrežja tako, da iščemo odprta vrata 1935 (TCP). Zagotovo velika večina strežnikov, ki niso del nekega večjega omrežja za serviranje vsebin (ang. content delivery network, CDN), ostaja nezaščitenih.

Upravitelji Flash media strežnikov se lahko proti tovrstnim zlorabam zavarujejo tako, da namestijo na strežnik avtentikacijski modul, ki onemogoča uporabo strežnika za objavo vira brez ustrezne avtentikacije. Samo preimenovanje aplikacije iz “live” v nekaj drugega ni dovolj, saj je ime vedno razkrito ob prenosu vsebine do odjemalca, četudi se uporablja protokol RTMPE, saj ta varuje samo vsebno prenosa.

Comments 1

  1. denis wrote:

    ja prej so uporabljali wowzamedia server a se potem prekinili sodelovanje in se odločili za FMS.
    Zakaj dražja rešitev in to brez razpisa nikoli ni bilo jasno!

    Objavljeno 18 Mar 2010 at 1:31 pm

Objavi komentar

Your email is never published nor shared.