اگر مهاجمان بتوانند XML بارگذاری کنند یا محتوای آلوده در یک سند XML وارد کنند، از کد ها ، وابستگی ها یا ادغام های آسیب پذیر استفاده کنند، می توانند از پردازنده های XML آسیب پذیر برای مقاصد خود بهره برداری کنند.
به طور پیش فرض، بسیاری از پردازنده های قدیمی تر XML اجازه تعیین یک موجود خارجی را می دهند،(یک URI که در هنگام پردازش XML ارزیابی می شود). ابزارهای SAST می تواند این مسئله را با بررسی وابستگی ها و پیکربندی کشف کند. ابزارهای DAST نیاز به مراحل دستی بیشتر برای شناسایی و بهره برداری از این مسئله دارند. آزمایش کنندگان دستی باید برای چگونگی آزمایش XXE آموزش ببینند، زیرا معموال از سال 2017 آزمایش نشده اند.
این نقص ها می تواند برای استخراج داده ها، اجرای یک درخواست ریموت از سمت سرور، اسکن سیستم های داخلی، انجام حمله اختال در سرویس و همچنین اجرای سایر حمات استفاده شود.تاثیر کسب و کار بستگی به الزامات حفاظتی همه برنامه های کاربردی متاثر و داده ها دارد.
برنامه های کاربردی و به ویژه سرویس های وب مبتنی بر XML یا ادغام های پایین دست (integrations downstream )ممکن است در شرایط زیر برای حمله آسیب پذیر باشند:
* برنامه XML را به طور مستقیم یا آپلودهای XML را قبول می کند، به ویژه از منابع نامشخص، یا داده های غیر قابل اعتماد را به اسناد XML وارد می کند که سپس توسط یک پردازنده XML پردازش می شود.
* هر یک از پردازنده های XML در نرم افزار یا وب سرویس های مبتنی بر docu(ent (SOAP definition type )ها را فعال کرده اند. به عنوان مکانیزم دقیق برای غیرفعال کردن پردازش DTD ، بهترین کار استفاده از مرجعی مانند Prevention XXE 'Sheet Cheat OWASP 'است.
* اگر برنامه شما از SAML برای پردازش هویت در خال امنیت یکپارچه یا اهداف )SSO )استفاده می کند.SAML از XML برای اثبات هویت استفاده می کند و ممکن است آسیب پذیر باشد.
* اگر برنامه از SOAP قبل از نسخه 2.1 استفاده کند، احتماال حساس به حمات XXE است اگر موجودیت های XML به چارچوب SOAP منتقل شوند.
* آسیب پذیر بودن به حمات XXE به این معنی است که برنامه به حمات انکار سرویس، از جمله حمله Laughs Billion ،آسیب پذیر است.
آموزش برنامه نویس برای شناسایی و مقابله با XXE ضروری است. علاوه بر این، جلوگیری از XXE نیاز دارد:
* هر زمان که امکان دارد، از فرمت های داده ای کمتری مانند JSON استفاده شود و از سریال سازی (تسلسل و ترتیب) اطلاعات حساس جلوگیری شود.
* Patch یا ارتقاء تمامی پردازنده های XML و کتابخانه ها که توسط برنامه کاربردی یا در سیستم عامل اصلی استفاده می شود. از بررسی کننده های وابستگی استفاده کنید. SOAP را به SOAP 2.1 یا بالاتر به روز رسانی کنید.
* موجودیت خارجی XML و پردازش DTD در تمام پارسر های XML در برنامه را غیر فعال کنید ، همانطور که در Prevention XXE 'Sheet Cheat OWASP 'غیر فعال است.
* اعتبار سنجی ، فیلتر کردن و sanitization ورودی را در سمت سرور برای جلوگیری از انتقال اطلاعات مخرب در اسناد XML ، هدرها یا گره ها پیاده سازی کنید.
* بررسی کنید که عملکرد آپلود فایل XML یا XSL ،ورودی XML را با استفاده از XSD یا مشابه آن، اعتبار سنجی می کند.
* ابزارهای SAST می تواند به شناسایی XXE در کد برنامه کمک کند، اگر چه بررسی دستی کد بهترین گزینه در برنامه های بزرگ و پیچیده است.
* اگر این کنترل ها امکان پذیر نیست، از وصله های مجازی، دروازه های امنیتی API یا فایروال های وب )WAF )برای شناسایی، نظارت و توقف حمات XXE استفاده کنید .
موارد متعدد XXE به صورت عمومی کشف شده است، از جمله حمله به دستگاه های .Embedded XXE در بسیاری از مکان های غیر منتظره، از جمله وابستگی های )dependencies nested )عمیق رخمی دهد. ساده ترین راه این است که فایل XML مخرب را آپلود کنید، اگر قبول شد:
سناریو شماره 1 :مهاجم تالش می کند تا داده ها را از سرور استخراج کند:
>?"1-8859-encoding="ISO "1.0"=xml version?<
DOCTYPE foo!< ]
> ELEMENT foo ANY!<
>]> "ENTITY xxe SYSTEM "file:///etc/passwd!<
>foo>&xxe;</foo<
سناریو شماره 2 :مهاجم شبکه خصوصی سرور را با تغییر خط ENTITY بالا به خط زیر، کاوش می کند:
>]>"ENTITY xxe SYSTEM "https://192.168.1.1/private !<
سناریو شماره 3 :یک مهاجم با استفاده از یک فایل بی پایان، حمله انکار سرویس را انجام می دهد:
>]>"ENTITY xxe SYSTEM "file: /// dev / random !<
جزییات بازدید : 2155
تاریخ انتشار : 23 / مرداد / 1398
این حمله از طریق تجزیه ورودیXML برنامه های وب ، رخ میدهد.
تجزیه XML میتواند برنامه وب را فریب دهد تا اطلاعات کاربر را برای یک نهاد خارجی مثل یک واحد ذخیره سازی نامعتبر ،
ارسال کند و اطلاعات از طریق این نهاد خارجی نامعتبر به مهاجم ارسال می شود.
یکی از راه های مقابله با این حمله این است که برنامه وب ، اطلاعاتی که پیچیدگی کمتری دارند مانند JSON (Java Script Object Notation) را بپذیرد و یا میتوان از نهاد های خارجی در برنامه های XML استفاده نکرد.