Bosh sahifa Wiki XXE

XXE

XXEXML parser tashqi entity’larni xavfsiz cheklamasdan qayta ishlashi natijasida yuzaga keladigan zaiflik. To‘liq nomi XML External Entity. Hujumchi XML document ichida tashqi resource’ga reference berib, serverga local file yoki network resource’ni o‘qitishga urinishi mumkin.

XXE file disclosure, SSRF, resource exhaustion va ayrim parserlarda boshqa zararli oqibatlarga olib kelishi ehtimoli bor.

XML entity

XML entity document ichida boshqa qiymatga almashtiriladigan nomlangan qism.

Internal entity documentning o‘zida beriladi.

External entity esa file yoki URL orqali tashqi resource’ga murojaat qilishi mumkin.

Zamonaviy applicationlarning ko‘pi external entity’ga muhtoj emas.

DTD

Document Type Definition XML structure va entitylarni belgilashi mumkin.

XXE payload ko‘pincha DTD ichida external entity ta’rifidan foydalanadi.

Agar parser DTD va external entity resolutionni yoqsa server tashqi resource’ni olishga urinadi.

Local file disclosure

Parser server filesystemidagi file’ni entity sifatida o‘qishi mumkin.

Riskli ma’lumotlar:

  • configuration;
  • credential;
  • source;
  • environment;
  • system file;
  • application secret.

Process permissioni qaysi fayllarni o‘qish mumkinligini belgilaydi.

SSRF bilan aloqa

External entity HTTP yoki boshqa network manziliga murojaat qilishi mumkin.

Server ichki service va metadata endpointiga accessga ega bo‘lsa XXE SSRFga aylanadi.

Egress filtering ta’sirni kamaytiradi.

Blind XXE

Parser natijani response’da ko‘rsatmasligi mumkin.

Hujumchi external serverga DNS yoki HTTP request kelganini kuzatib zaiflik mavjudligini bilishi mumkin.

Error va timing farqi ham signal bo‘lishi ehtimoli bor.

Parameter entity

DTD ichidagi parameter entitylar murakkab entity chaining va out-of-band behavior uchun ishlatilishi mumkin.

Shu sababli faqat oddiy entity substitutionni o‘chirish yetarli bo‘lmasligi mumkin.

Parser configuration barcha external DTD va entity resolutionni cheklaydi.

Entity expansion

Ko‘p ichki entity bir-birini takroran kengaytirsa juda katta text hosil bo‘lishi mumkin.

Bu CPU va memory exhaustionga olib keladi.

Bu holat external file o‘qimasdan ham XML bomb sifatida DoS yaratishi mumkin.

Parser sozlamasi

Xavfsiz defaultlar library va versiyaga bog‘liq.

Tekshiriladi:

Faqat bitta flagga tayanmaslik kerak.

XInclude

External entity o‘chiq bo‘lsa ham XML inclusion mexanizmi tashqi resource’ni olib kelishi mumkin.

Application XInclude ishlatmasa uni o‘chiradi.

XML transform va schema validator ham alohida network accessga ega bo‘lishi mumkin.

SOAP va XML API

SOAP service, SAML parser, document converter, office file va legacy integration XML qayta ishlashi mumkin.

API JSON qabul qilsa ham upload qilingan file ichida XML bo‘lishi ehtimoli bor.

Barcha parser entry pointlar inventory qilinadi.

Office va archive formatlari

Ayrim document formatlari ZIP ichida XML fayllardan tashkil topadi.

Upload scanner yoki converter shu XMLni parse qiladi.

File extensionga qarab xavfsiz deb taxmin qilish noto‘g‘ri.

Nested archive va decompression limitlari ham kerak.

Himoya

Asosiy choralar:

  • DTDni o‘chirish;
  • external entity resolutionni o‘chirish;
  • network accessni bloklash;
  • xavfsiz parser API;
  • input size limit;
  • process permissionini kamaytirish;
  • XML kerak bo‘lmasa boshqa format ishlatish.

Validation

Schema validationning o‘zi XXEni to‘xtatmaydi.

Validator tashqi schema yoki DTDni yuklashga urinishi mumkin.

Schema source lokal va trusted bo‘ladi.

Dynamic external schema location rad etiladi.

Least privilege

Parser ishlaydigan process filesystem va network bo‘yicha minimal huquqqa ega.

Secret file boshqa account permissionida saqlanadi.

Container ichki metadata va management networkga chiqmasligi mumkin.

Test

Security test:

  • external file reference;
  • HTTP callback;
  • nested entity;
  • XInclude;
  • external schema;
  • katta expansion;
  • turli content type

holatlarini izolyatsiyalangan muhitda tekshiradi.

Library inventarizatsiyasi

Application bevosita XML ishlatmasligi mumkin, ammo dependency ichida XML parser mavjud bo‘lishi ehtimoli bor. SAML, SVG, office document, SOAP va feed parserlar alohida tekshiriladi. Har parser instance xavfsiz konfiguratsiya bilan yaratilishi kerak.

SVG

SVG XML formatiga asoslanadi. Upload qilingan rasmni metadata olish yoki resize qilish uchun parser ochsa XXE yoki boshqa XML xavfi yuzaga kelishi mumkin. Rasm pipeline’i tashqi entity va network accessni o‘chiradi, outputni xavfsiz formatga qayta yaratadi.

Error-based disclosure

Parser xatosi local file mazmunining bir qismini error message ichida ko‘rsatishi mumkin. Production response’da parser detali va system path berilmaydi. Log access ham cheklangan bo‘ladi.

Streaming parser

Katta XML documentni to‘liq DOMga yuklash memory exhaustion xavfini oshiradi. Streaming parser memoryni kamaytirishi mumkin, ammo external entity va DTD sozlamalari unda ham xavfsiz bo‘lishi kerak. Maksimal element soni, chuqurlik va text hajmi cheklanadi.

Content-Type

Server faqat kutilgan Content-Typeni qabul qiladi, lekin headerga ko‘r-ko‘rona ishonmaydi. JSON endpoint XML body’ni parserga fallback sifatida bermasligi kerak. Format negotiation aniq va minimal bo‘ladi.

Parser isolation

XML qayta ishlash alohida cheklangan processda bajarilishi mumkin. U local secretlarga, metadata service’ga va ichki management networkiga kira olmaydi. Parser xato yoki exploitga uchrasa asosiy application va boshqa tenantlarga ta’sir doirasi kamayadi.

Bog‘liq tushunchalar

XML External Entity, XML, DTD, Entity, SSRF, XInclude, XML bomb, Parser security, File disclosure, Input validation