OWASP বিভাগ: MASVS-CODE: কোড গুণমান
ওভারভিউ
একটি এক্সএমএল এক্সটার্নাল এন্টিটি ইনজেকশন (এক্সএক্সই) হল অ্যাপ্লিকেশানগুলির বিরুদ্ধে একটি আক্রমণ যা এক্সএমএল ইনপুট পার্স করে৷ একটি XXE আক্রমণ ঘটে যখন একটি বাহ্যিক সত্তার রেফারেন্স সহ অবিশ্বস্ত XML ইনপুট একটি দুর্বলভাবে কনফিগার করা XML পার্সার দ্বারা প্রক্রিয়া করা হয়। এই আক্রমণটি পরিষেবা অস্বীকার, ফাইল সিস্টেম অ্যাক্সেস, বা ডেটা অপসারণ সহ একাধিক ঘটনা ঘটাতে ব্যবহার করা যেতে পারে।
প্রভাব
যখন একটি অ্যাপ্লিকেশন একটি XML নথি পার্স করে, তখন এটি নথির মধ্যে থাকা যেকোনো DTDs (ডকুমেন্ট টাইপ ডেফিনিশন, বহিরাগত সত্তা হিসাবেও পরিচিত) প্রক্রিয়া করতে পারে। একজন আক্রমণকারী দূষিত কোডটি ডিটিডি হিসাবে ইনজেক্ট করে এই আচরণকে কাজে লাগাতে পারে। এই কোডটি তখন ডিভাইসের ফাইল সিস্টেমের অংশগুলি অ্যাক্সেস করতে পারে, শুধুমাত্র অ্যাপ্লিকেশনটিতে অ্যাক্সেসযোগ্য এবং সম্ভাব্য সংবেদনশীল ডেটা রয়েছে৷ উপরন্তু, এই দূষিত কোড ডিভাইস থেকে অনুরোধ করতে পারে, সম্ভাব্যভাবে ঘের নিরাপত্তা ব্যবস্থা বাইপাস করে।
শেষ অবধি, যদি অ্যাপ্লিকেশনটি DTDs প্রসারিত করে, এটি রেফারেন্সকৃত সত্তার একাধিক পুনরাবৃত্তি সহ একটি পরিস্থিতি তৈরি করতে পারে, যা ডিভাইসের সংস্থানগুলিকে নিঃশেষ করে দেয় এবং পরিষেবা অস্বীকার করতে পারে।
প্রশমন
DTDs নিষ্ক্রিয় করুন
XXE প্রতিরোধ করার সবচেয়ে নিরাপদ উপায় হল সবসময় DTDs (বাহ্যিক সত্তা) সম্পূর্ণরূপে নিষ্ক্রিয় করা। ব্যবহার করা পার্সারের উপর নির্ভর করে, পদ্ধতিটি XML পুল পার্সার লাইব্রেরির জন্য নিম্নলিখিত উদাহরণের অনুরূপ হতে পারে:
জাভা
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
কোটলিন
val factory = XmlPullParserFactory.newInstance()
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)
DTDs নিষ্ক্রিয় করা পরিষেবা আক্রমণ অস্বীকারের বিরুদ্ধেও পার্সারকে সুরক্ষিত করে তোলে। যদি ডিটিডি সম্পূর্ণরূপে নিষ্ক্রিয় করা সম্ভব না হয়, তাহলে বাহ্যিক সত্তা এবং বাহ্যিক নথির প্রকারের ঘোষণাগুলিকে এমনভাবে নিষ্ক্রিয় করতে হবে যা প্রতিটি পার্সারের জন্য নির্দিষ্ট।
বাজারে বিপুল সংখ্যক XML পার্সিং ইঞ্জিনের কারণে, XXE আক্রমণ প্রতিরোধ করার উপায় ইঞ্জিন থেকে ইঞ্জিনে আলাদা। আরও তথ্যের জন্য আপনাকে আপনার ইঞ্জিন ডকুমেন্টেশন উল্লেখ করতে হতে পারে।
ইনপুট স্যানিটাইজেশন সঞ্চালন
অ্যাপ্লিকেশনটিকে পুনরায় কনফিগার করা উচিত যাতে এটি ব্যবহারকারীদের XML নথির প্রস্তাবনায় নির্বিচারে কোড ইনজেক্ট করার অনুমতি না দেয়। এটি সার্ভার-সাইড যাচাই করতে হবে, কারণ ক্লায়েন্ট-সাইড নিয়ন্ত্রণগুলি বাইপাস করা যেতে পারে।
একটি ভিন্ন লাইব্রেরি ব্যবহার করুন
যদি লাইব্রেরি বা পদ্ধতি ব্যবহার করা নিরাপদ পদ্ধতিতে কনফিগার করা না যায়, তাহলে একটি ভিন্ন বিবেচনা করা উচিত। XML পুল পার্সার এবং SAX পার্সার উভয়ই একটি সুরক্ষিত পদ্ধতিতে কনফিগার করা যেতে পারে, DTDs এবং সত্তাগুলিকে অনুমতি না দিয়ে৷
সম্পদ
- OWASP XXE
- OWASP XXE প্রতিরোধ প্রতারণা শীট
- XML ধ্রুবক: FEATURE_SECURE_PROCESSING
- এক্সএমএল পুল পার্সার
- SAX পার্সার