Uchinchi tomon so'rovlariga kirishga imkon beruvchi old-end-back-end tizimlariga hujum

Ochilgan kontentni yetkazib berish tarmoqlari, yuk balanslagichlari yoki proksi-serverlar orqali ishlaydiganlar kabi front-end-back-end modelidan foydalanadigan saytlarga yangi hujum tafsilotlari. Hujum ma'lum so'rovlarni yuborish orqali frontend va backend o'rtasida bir xil oqimda qayta ishlangan boshqa so'rovlar tarkibiga kirishga imkon beradi. Taklif etilayotgan usul PayPal xizmati foydalanuvchilarining autentifikatsiya parametrlarini ushlab qolish imkonini yaratgan hujumni tashkil qilishda muvaffaqiyatli qo‘llanildi, bu esa tadqiqotchilarga tuzatilmagan zaifliklar mavjudligi haqida xabar berish dasturi doirasida taxminan 40 ming dollar to‘lagan. Hujum Akamai kontentni yetkazib berish tarmog'idan foydalanadigan saytlarga ham tegishli.

Muammoning mohiyati shundaki, frontend va backendlar ko'pincha HTTP protokoli uchun turli darajadagi yordamni ta'minlaydi, lekin ayni paytda turli foydalanuvchilarning so'rovlarini umumiy kanalga qamrab oladi. Frontend so'rovlarini qabul qilish va qayta ishlash so'rovlarini ulash uchun uzoq muddatli TCP ulanishi o'rnatiladi, bu orqali foydalanuvchi so'rovlari uzatiladi, zanjir bo'ylab ketma-ket uzatiladi, HTTP protokoli yordamida ajratiladi. So'rovlarni ajratish uchun "Content-Length" (so'rovdagi ma'lumotlarning umumiy hajmini belgilaydi) sarlavhalari va "Transfer-kodlash: bo'laklarga bo'lingan"("{size}\r\n{block}\r\n{size}\r\n{block}\r\n0" formatida turli o'lchamdagi bloklarni belgilab, ma'lumotlarni qismlarga bo'lib uzatish imkonini beradi).

Agar frontend faqat "Content-Length" ni qo'llab-quvvatlasa, lekin "Transfer-kodlash: bo'laklangan" ni e'tiborsiz qoldirsa (masalan, Akamai CDN buni qildi) yoki aksincha, muammo yuzaga keladi. Agar Transfer-Encoding: chunked har ikki tomonda ham qo‘llab-quvvatlansa, HTTP sarlavhasini tahlil qilish vositalarining amalga oshirish xususiyatlari hujum uchun ishlatilishi mumkin (masalan, front end “Transfer-Encoding: xchunked”, “Transfer-Encoding: chunked” kabi qatorlarni e’tiborsiz qoldirganda ”, “Transfer-kodlash” :[tab]parchalangan”, “X: X[\n]Transfer-kodlash: bo‘laklangan”, “Transfer-kodlash[\n]: bo‘laklangan” yoki “Transfer-kodlash: bo‘laklangan” va backend ularni muvaffaqiyatli qayta ishlaydi).

Bunday holda, tajovuzkor "Tarkib uzunligi" va "Transfer-kodlash: bo'laklangan" sarlavhalarini o'z ichiga olgan so'rov yuborishi mumkin, ammo "Content-Length" dagi o'lcham parchalangan zanjirning o'lchamiga mos kelmaydi. haqiqiy qiymatdan kichikroq. Agar frontend so'rovni "Content-Length" bo'yicha qayta ishlasa va yo'naltirsa va backend "Transfer-Encoding: chunked" asosida blok tugashini kutsa, u holda "Transfer-kodlash: bo'laklangan" ga asoslangan ma'lumotlarning oxiri bo'ladi. avvalroq aniqlanadi va so'rovning qolgan dumi tajovuzkor keyingi so'rovning boshida bo'ladi, ya'ni. tajovuzkor keyingi uzatiladigan boshqa birovning so'rovining boshiga o'zboshimchalik bilan ma'lumotlarni qo'shishi mumkin bo'ladi.

Uchinchi tomon so'rovlariga kirishga imkon beruvchi old-end-back-end tizimlariga hujum

Amaldagi frontend-backend kombinatsiyasidagi muammoni aniqlash uchun siz frontend orqali shunday so'rov yuborishingiz mumkin:

POST /HTTP haqida/1.1
Xost: example.com
Transfer-kodlash: bo'laklarga bo'lingan
Kontent-uzunligi: 4

1
Z
Q

Agar backend so'rovni darhol qayta ishlamasa va bo'laklangan ma'lumotlarning yakuniy nol chegaralovchi bloki kelishini kutsa, muammo mavjud. To'liqroq tekshirish uchun tayyorlangan "Transfer-kodlash: bo'laklangan" sarlavhasini old qismdan yashirishning mumkin bo'lgan usullarini sinab ko'radigan maxsus yordamchi dastur.

Haqiqiy hujumni amalga oshirish hujum qilingan saytning imkoniyatlariga bog'liq, masalan, Trello veb-ilovasiga hujum qilganda, siz so'rovning boshini almashtirishingiz mumkin ("PUT /1/members/1234... x=x&csrf" kabi ma'lumotlarni almashtiring. =1234&username=testzzz&bio=cake”) va uchinchi tomon foydalanuvchisining asl soʻrovi va unda koʻrsatilgan autentifikatsiya cookie-faylini oʻz ichiga olgan xabar yuboring. Saas-app.com saytiga hujum qilish uchun javobda JavaScript kodini so'rov parametrlaridan biriga almashtirish orqali almashtirish mumkin bo'ldi. Redhat.com saytiga hujum qilish uchun tajovuzkorning veb-saytiga yo'naltirish uchun ichki ishlov beruvchi ishlatilgan ("POST /search?dest=../assets/idx?redir=//" shaklidagi so'rov.[elektron pochta bilan himoyalangan]/ HTTP/1.1").

Kontentni etkazib berish tarmoqlari uchun usuldan foydalanish "Xost:" sarlavhasini almashtirish orqali so'ralgan saytni oddiygina almashtirish imkonini berdi. Hujum, shuningdek, kontentni keshlash tizimlarining tarkibini zaharlash va keshlangan maxfiy ma'lumotlarni olish uchun ham ishlatilishi mumkin. Usulning cho'qqisi PayPal-ga hujumni tashkil qilish edi, bu autentifikatsiya paytida foydalanuvchilar tomonidan yuborilgan parollarni ushlab turish imkonini berdi (iframe so'rovi paypal.com/us/gifts sahifasi kontekstida JavaScript-ni bajarish uchun o'zgartirildi, qaysi CSP (Content Security Policy) qo'llanilmagan).

Qizig'i shundaki, 2005 yilda bor edi taklif qilingan proksi-serverlarni (Tomcat, squid, mod_proxy) keshlashda ma'lumotlarni soxtalashtirishga yoki bitta HTTP seansi ichida bir nechta "GET" yoki "POST" so'rovlarini belgilash orqali xavfsizlik devori blokirovkasini chetlab o'tishga imkon beruvchi so'rovlarni buzishning mohiyatan o'xshash texnikasi.

Manba: opennet.ru

a Izoh qo'shish