ugrás a tartalomhoz

XSS támadás PDF fájlok segítségével

Hojtsy Gábor · 2007. Jan. 5. (P), 19.25
Anonim beküldőnk hívta fel a figyelmünket Jeremiah Grossman blog bejegyzésére, ami az Adobe Acrobat Reader 7-es és korábbi verzióinak sérülékenységét írja le. Bárki adhat egy http://example.com/path/to/file.pdf#s=javascript:alert(”xss”); típusú linket, mely úgy tűnik, mintha a webhelyünk (most example.com) oldalára mutatna, de helyette a böngésző segítségével a JavaScript kódot futtatja le. Sajnos több probléma is van ezzel az XSS támadással.

Egyrészt mivel a kérés nem megy át a szerveren (a kettőskereszt utáni részt a böngészők nem küldik el a szervernek), elvileg nem lehet szerver oldalon védekezni ellene. Másrészt lehetőség van alapértelmezett helyeken lévő PDF fájlokra hivatkozni, és így a JavaScript kódot a helyi fájlok környzetében futtatni, azaz a legalacsonyabb biztonsági szinten, ahol a legtöbb kellemetlen dolog megtehető.
file:///C:/Program%20Files/Adobe/Acrobat%207.0/Resource/ENUtxt.pdf#blah=javascript:alert("XSS");
Az Adobe tegnap ezügyben kiadott dokumentuma szerint a 8-as verzióra történő frissítést javasolja, illetve dolgoznak a 7.0.9-es kiadás elkészítésén, ami javítani fogja a hibát. Jeremiah pedig szerver oldali védelmi próbálkozásokra ad linkeket, amiket azonban még nem tart kielégítőnek.
 
1

Foxit Reader

Jano · 2007. Jan. 6. (Szo), 01.14
Ismerősömnek mutatva a hírt javasolta a Foxit Reader nevű PDF olvasót. Nem tudom érinti-e a hiba vagy más hiba, de pokolian gyorsan töltődik be a böszme Adobe Readerhez képest.
2

Valóban gyors!

presidento · 2007. Jan. 6. (Szo), 12.41
Egyetértek a fenti megállapítással. Rendkívül gyorsan működik, és a legtöbb pdf-re elég ez. Amióta rátaláltam, ezt használom.
3

Foxit Reader

sly · 2007. Jan. 7. (V), 02.33
Window$ alatt én is ezt használom. Ügyes progi.
4

kérdés

lacy · 2007. Jan. 8. (H), 19.02
Lenne két kérdésem:

1. miért baj az, hogy így is lefut egy javascript? mi kárt tehet vagy mi rosszat? Értem, hogy nem oda való, csak nem értem mit kezd ezzel egy "csúnya bácsi".

2. Ez a foxit tényleg jó gyors, de sajna a keresője lassú és adobe readerhez hasonlóan az ékezetekkel nem bírkózik meg, pedig az 5 megás pdfjeimben lenne mit keresgélni:)

Előre is köszönöm a választ az első kérdésemre.
5

szerintem nem a JS futás a baj

virág · 2007. Jan. 9. (K), 07.48
Szerintem nem az a baj, hogy lefuthat egy JS kód, hanem az, hogy nem az történik, aminek kellene történnie :) Így muszáj nekik kijavítani, mert presztizskérdés és egy nagy cég nem engedheti meg, hogy ilyet higgyenek a termékéről, mert jelenleg ilyeneket gondolnak: adobe + biztonsági rés + fúha!

A legtöbb biztonsági rést nem használják ki azonnal, de soha nem tudhatod, hogy kinek jut eszébe kombinálni egy másik ismert hibával és a kettő már együtt okozhat galibát stb., végtelenek a lehetőségek a rosszalkodásra.

Az más kérdés, hogy a JS kód valójában mennyire lehet ártalmas, meg hogy a helyi fájlokat nem valószínű, hogy elérheti vele bárki stb. Ennyire mélyre már úgyis csak azok ásnak, akik spekulálnak valamiben. :)

Szóval, csak szépen javítsák ki!
7

megnyugodtam

lacy · 2007. Jan. 9. (K), 13.09
jól van megnyugodtam, én is így gondoltam, csak azthittem valaki többet tud 8)
8

Példa

janoszen · 2007. Jan. 9. (K), 14.03
Na, példaként egy picit fantáziálva. Tfh. kiolvas egy helyi fájlt. És tfh. utána AJAX-szal elküldi a mesterének. De már maga az, hogy minden titkodat ki tudja olvasni, amit böngészőből elvileg nem tud. VALAMIÉRT vannak a böngészőre vonatkozó korlátozások...
9

helyi fájlt?

lacy · 2007. Jan. 9. (K), 17.22
hogy tud kiolvasni helyi fájlt? nem értem...arról tudok, hogy volt ez a history lopós script, nem tudom erre gondolsz-e.
10

Localhost

janoszen · 2007. Jan. 10. (Sze), 00.54
Valamelyik böngészőben helyi jogosultságokkal el lehet érni a fájlrendszert, plusz ha be vagy jelentkezve, el tudja lopni a sessionödet, ha ügyes és még sorolhatnám.
17

windows kockázatok

tenzin · 2007. Jan. 25. (Cs), 16.45
Sokan használják úgy a w-ukat, hogy superuserként vannak bejelntkezve.
Ha jávascriptből meg tud hívni egy weboldalt, ami pl. nem is html, hanem egy spion vagy féreg, máris formázhatja a diszket, de akár meg is személyesíthet, és a nevedben megrendelhet akár 3 konténer piros nylon esőkabátot is. :))
11

előre is bocs

Hodicska Gergely · 2007. Jan. 11. (Cs), 18.41
Amint fentebb írtál az igencsak korlátolt volt, ne haragudj a fogalmazásért, de egyszerűen bosszant, hogy egy webes környezetben amúgy tapasztalt ember ennyire ne legyen képben biztonság szempontjából, ráadásul még ha elé is teszik a dologt, akkor se értse meg.

ABSZOLUT az a gond, hogy lefut a JavaScript. Ezáltal az oldalad XSS támadható válik minden igyekezeted ellenére mindenféle szerver oldali programozásbeli hiba nélkül mindössze az által, hogy kitettél egy PDF-et az oldaladra. Ez meg pl. azt is jelenti, hogy jóformán gyerekjátékká válik az oldaladon pl. a session lopás, de a "csúnya bácsik" egyéb tetszőleg komiszságokat követhetnek el.

Amúgy meg érdemes lenne előbb elolvasnod a hivatkozott linket, és láthatod, hogy pl. a lokális fájlokra történő linkelés is mennyire komoly biztonsági fenyegetettséget jelent akár számodra is, amennyiben 7-es Acrobat Readered van, és az installerrel tetted fel (a Program Files mappába, de ez is ugye rengeteg embernél az alapértelmezett). Ilynekor a JS hozzáfér lokális fájlokhoz is pl..

Abban viszont egyet értünk, hogy javítsák csak meg, viszont itt ugye megint előjön, hogy mennyi idő lesz, amíg a javított verzió/update elterjed az átlag userek körében.


Üdv,
Felhő
6

Acrobat Reader gyorsítás

presidento · 2007. Jan. 9. (K), 11.00
Helló talán az AR SpeedUp (freeware) segíthet, hogy valóban gyorsabban induljon a Reader is.
12

a gyengébbek kedvéért?

balazsgabi · 2007. Jan. 15. (H), 22.05
Üdv Mindenkinek!

Megtenné valaki, hogy egy kicsit részletesebben leírja, vagy belinkel egy-két okosítást magyar nyelven?
Az angol nem megy, a témában talált (adódhat a keresés indításából) oldalak pedig előbb, vagy utóbb angol nyelvű oldalon kötnek ki.

Ami nekem lejött, hogy valahogy rá kell vegye az "áldozatot" arra, hogy egy adott linkre kattintson. Ha ez így van, akkor létre kell hogy hozzon egy ugyanolyan oldalt mint az enyém?
Ezáltal az oldalad XSS támadható válik...
az által, hogy kitettél egy PDF-et az oldaladra.

különben a linkem végére, hogy lehet odabiggyeszteni a scriptet?

Egyébként ebből nekem az jött le, ogy ez a XSS sokkal nagyobb probléma mintsem hogy amúgy egy igen elterjedt progi hibás!

Ha nem muszály nem telepítenék AdobeReadert, hogy megtapasztaljam, vagy csak lássam mire képes. Amiért viszont szeretnék tisztán látni, annak az az oka, hogy a céges honlapunkon (amit jómagam heggesztgetek) rendszeresen sok a PDF és hiába minden igyekezetem, a tapasztalatom az, hogy a népek nem tepelítgetnek progikat. Ha van AdobeReaderjük akkor lesz@...ják, hogy van-e alternatíva vagy sincs. Volt már olyan is, hogy egy kollégám panaszolta, hogy otthon nem tudta megnyitni a fájlt, mert, hogy nem történt semmi. Miután megmutattam, hogy előtte katt ide meg oda (amit ki is helyeztem az oldal tetejére A Foxit eredeti logojával annak ellenére, hogy a színvilága merőben más mint a miénk), aztán fog az menni. Másnap visszajött, hogy jéé, tényleg...
szal ahogy Felhő is írta:
mennyi idő lesz, amíg a javított verzió/update elterjed az átlag userek körében

Ezt nem biztos, hogy ezen a munkahelyen szeretném megvárni, de azt se szeretném, hogy e miatt potenciális "áldozatok" megszerzéséhez aszisztáljak.
gábor
13

kis példa

Hodicska Gergely · 2007. Jan. 16. (K), 02.52
Szia!


Igen, rá kell venned, hogy kattintson. Ennek lehet módja az is, ha emialben terjeszted a linket, vagy van egy másik kapcsolódó oldal, ahová be tudod jutatni, mondjuk egy ottani sebezhetőség kapcsán stb..

Itt ez a link:

http://example.com/foo.pdf#blah=javascript:var%20xhr%20=%20new%20XMLHttpRequest();xhr.open(%22GET%22,%20%22uxss.js%22,%20false);xhr.send(null);eval(xhr.responseText);,
ha ráveszel valakit, hogy rákattintson, akkor letölt egy madott JS-t, amiben azt csinálsz, amit csak szeretnél.

Ezt nem biztos, hogy ezen a munkahelyen szeretném megvárni, de azt se szeretném, hogy e miatt potenciális "áldozatok" megszerzéséhez aszisztáljak.

Amennyiben valamilyen extra teljesítmény szempontok nem játszanak be, akkor számotokra jó lehet egy a mod_rewrite-os megoldás.


Üdv,
Felhő
14

hogy jön a képbe a PDF?

balazsgabi · 2007. Jan. 17. (Sze), 22.21
Üdv!

Gondoltam a melóhelyemen az egyik gépre teszek Adobe-ot mielőtt tovább értetlenkedek, mert nekem így tényleg nem világos. Sajna nem volt erre időm, így hát ismét itt vagyok.
Azt értem, hogy a # után a böngésző értelmezi (lefuttatja) a szkriptet, de a"ráveszem a kattintásnál" elvesztettem a fonalat.
első elképzelésem a dologról:
http://mypage.com/foo.pdf#blah=javascript:var%20xhr%20=%20new%20XMLHttpRequest();xhr.open(%22GET%22,%20%22uxss.js%22,%20false);xhr.send(null);eval(xhr.responseText);,
és ...
http://example.com/foo.pdf#blah=javascript:var%20xhr%20=%20new%20XMLHttpRequest();xhr.open(%22GET%22,%20%22uxss.js%22,%20false);xhr.send(null);eval(xhr.responseText);,
között azért szvsz van különbség.

második:
a
http://mypage.com/foo.pdf#blah=javascript:var%20xhr%20=%20new%20XMLHttpRequest();xhr.open(%22GET%22,%20%22uxss.js%22,%20false);xhr.send(null);eval(xhr.responseText);,
linkben az XMLHttpRequest() függvénnyel megadható a uxss.js fájl elérési útja? (egy valamire való szkript ugye nem 8-10 sor, tehát kell egy külső fájl)
... ha igen, akkor a # előtt bármi állhat
... ha nem, akkor mégsem úgy kezdődik, hogy http://mypage...

szal szerinted (szerintetek) mit nem értek?
gábor

ui:
közben olvasgatom (nem röhög) ezt és érzem, hogy itt lesz válasz a kérdéseimre, csak hát angol
15

a PDF plugin bugos

Hodicska Gergely · 2007. Jan. 18. (Cs), 14.17
Szia!


Hmm, nem tiszta abból amit írtál, hogy mit nem értesz.

Van a szervereden egy PDF: http://mypage.com/foo.pdf. Ezek után valaki elhelyezi egy internetes oldalra a következő linket:

http://mypage.com/foo.pdf#blah=javascript:var%20xhr%20=%20new%20XMLHttpRequest();xhr.open(%22GET%22,%20%22uxss.js%22,%20false);xhr.send(null);eval(xhr.responseText);, 
és ha erre valaki rákattint, akkor már kész is a baj. Ha ez a valaki a kattintás előtt be volt jelentkezve az oldalra, akkor a script mondjuk kiszedi az document.cookie-ből az illető session azonosítóját, és elküldi egy loggoló scriptnek, ami meg mondjuk küld a támadónak egy emailt, meg egy linket, amire ha rákattint, akkor benne is van a linkre kattintó ember sessionjében.


Üdv,
Felhő
16

egy másik lehetséges megoldás

Hodicska Gergely · 2007. Jan. 18. (Cs), 15.53
Sziasztok!


Ez az apache konfig részlet is lehet megoldás:
LoadModule headers_module /usr/lib/apache/1.3/mod_headers.so
<FilesMatch "\.pdf$">
        Header append Content-Disposition "attachment;"
</FilesMatch>
Üdv,
Felhő