बाहरी संस्थाओं को अक्षम करना अपने आप में प्रत्येक संसाधन-खत्म इनपुट से रिपोर्ट प्रोसेसर की सुरक्षा नहीं करता है। XML पार्सर शुरू होने से पहले एक संपीड़ित अनुलग्नक का विस्तार हो सकता है, और गहराई से नेस्टेड या बड़े आकार का XML किसी बाहरी इकाई तक पहुंच के बिना संसाधनों का उपभोग कर सकता है। डीकंप्रेसन, एक्सएमएल व्याख्या और कार्यभार प्रवेश को अलग-अलग रक्षात्मक सीमाओं के रूप में मानें।
RFC 9990 स्पष्ट रूप से संग्रह और XML संसाधन-थकावट जोखिमों की पहचान करता है। OWASP का XML मार्गदर्शन बताता है कि पार्सर-विशिष्ट बाह्य-संसाधन नियंत्रण क्यों मायने रखता है। यहां परीक्षण डिज़ाइन एक पृथक स्टेजिंग वातावरण में उन सीमाओं को सत्यापित करने के लिए एक परिचालन अनुशंसा है।
परिभाषित करें कि क्या कभी नहीं होना चाहिए
सन्दर्भ: RFC 9990 §8.1.
कार्यकर्ता को अनुलग्नक-चयनित नेटवर्क संसाधन नहीं लाने चाहिए, XML रिज़ॉल्यूशन के माध्यम से एप्लिकेशन रहस्य नहीं पढ़ना चाहिए, संग्रह-आपूर्ति किए गए पथ लिखना चाहिए या असीमित सीपीयू, मेमोरी या डिस्क का उपभोग नहीं करना चाहिए। इसे न्यूनतम फ़ाइल सिस्टम एक्सेस दें और कोई अनावश्यक नेटवर्क एक्सेस न दें। उत्पादन रहस्यों के बजाय सिंथेटिक कैनरी के साथ डिस्पोजेबल परीक्षण वातावरण का उपयोग करें।
संपीड़ित इनपुट, विस्तारित आउटपुट, पार्सिंग समय, नेस्टिंग, पाठ की लंबाई और एक साथ नौकरियों के लिए अवलोकन योग्य सीमाएँ निर्धारित करें। रिकॉर्ड करें कि प्रत्येक सीमा कहाँ लागू की गई है। अंतिम आयात के आसपास का टाइमआउट पहले के अनबाउंड डीकंप्रेसन चरण की सुरक्षा नहीं कर सकता है।
सीधे XML क्षमताओं की जाँच करें
संदर्भ: OWASP XML बाह्य-इकाई रोकथाम, सामान्य मार्गदर्शन.
वास्तविक पार्सर और किसी स्कीमा-सत्यापन या परिवर्तन परत को कॉन्फ़िगर करें। अनावश्यक DTD प्रसंस्करण, बाहरी इकाइयाँ, XIinclude और बाहरी संसाधन लोडिंग अक्षम करें। असमर्थित सुरक्षा सेटिंग्स को कॉन्फ़िगरेशन विफलताओं के रूप में मानें। यदि बाद के सत्यापन चरण में इनपुट द्वारा चुनी गई स्कीमा आती है तो एक सुरक्षित पार्सर सेटिंग को कमजोर किया जा सकता है। संपूर्ण प्रसंस्करण श्रृंखला की समीक्षा करें, न कि केवल इसकी पहली लाइब्रेरी कॉल की।
नियंत्रित परीक्षण प्रहरी के बाहरी संदर्भ वाले एक छोटे उपकरण का उपयोग करें। प्रलेखित नीति के तहत अपेक्षित व्यवहार अस्वीकृति या सुरक्षित गैर-समाधान है, जिसमें कोई प्रहरी पहुंच नहीं है। रिकॉर्ड नेटवर्क और फ़ाइल-एक्सेस टेलीमेट्री। संवेदनशील स्थानीय फ़ाइलों या बाहरी सेवाओं पर परीक्षण संदर्भ न इंगित करें जिन्हें आप नियंत्रित नहीं करते हैं।
बाध्य हानिरहित विस्तार परीक्षण
सन्दर्भ: RFC 9990 §8.1.
डीकंप्रेसन के लिए, छोटी सिंथेटिक सामग्री और जानबूझकर कम स्टेजिंग थ्रेशोल्ड का उपयोग करें। एक्सएमएल के लिए, समान रूप से कम सीमाओं की यात्रा के लिए डिज़ाइन किए गए बाउंडेड नेस्टिंग या आंतरिक विस्तार फिक्स्चर का उपयोग करें। यह स्थापित करने के लिए कि कोई सीमा लागू की गई है, वास्तव में कोई विशाल बम बनाने की आवश्यकता नहीं है।
उदाहरणात्मक मामला: एक परीक्षण कार्यकर्ता के पास 256 KiB विस्तारित-बाइट कैप और एक सेकंड की प्रसंस्करण समय सीमा होती है। 300 KiB सिंथेटिक विस्तारित स्ट्रीम को बाइट सीमा पर रुकना चाहिए। एक अलग छोटे बाहरी-संदर्भ फिक्स्चर के कारण कोई लुकअप नहीं होना चाहिए। एक मामले को पारित करने से अन्य सीमा कार्य सिद्ध नहीं होते। सीमाएँ उदाहरणात्मक हैं, और वास्तविक स्मृति और बीता हुआ समय अनुमान लगाने के बजाय मापा जाना चाहिए।
विफलता रोकथाम सत्यापित करें
प्रत्येक अस्वीकृत फिक्स्चर के लिए, यह दावा करें कि कोई आंशिक रिपोर्ट रिकॉर्ड नहीं किया गया था, कोई अस्वीकृत आउटपुट फ़ाइल दिखाई नहीं दी और डायग्नोस्टिक में एक सुरक्षित इनपुट संदर्भ और कारण शामिल है। बाध्य डायग्नोस्टिक आकार भी, क्योंकि संपूर्ण अस्वीकृत दस्तावेज़ को लॉग में कॉपी करने से एक और संसाधन और गोपनीयता जोखिम पैदा होता है।
आगे एक वैध छोटी रिपोर्ट सबमिट करें. जांचें कि कतार प्रसंस्करण ठीक हो गया है, अस्थायी फ़ाइलों को अनुमोदित नीति के भीतर साफ कर दिया गया है और दोबारा चलाने से डुप्लिकेट गिनती नहीं बनती है। एक सुरक्षित परीक्षण बजट के भीतर समवर्ती आगमन का प्रयोग करें ताकि कुल कार्यकर्ता सीमाओं के साथ-साथ प्रति-फ़ाइल सीमाओं का भी परीक्षण किया जा सके।
परीक्षण साक्ष्य को दोहराने योग्य बनाएं
सन्दर्भ: RFC 9990 §8.1, RFC 9990 §9.2.
फिक्स्चर हैश, पार्सर और रनटाइम संस्करण, कॉन्फ़िगरेशन, सीमाएं, अपेक्षित परिणाम और मापा परिणाम बनाए रखें। निर्भरता, पार्सर, कंटेनर या सत्यापन परिवर्तन के बाद दोहराएं। यदि कोई परीक्षण बाहरी पहुंच या मेमोरी उपयोग का निरीक्षण नहीं कर पाता है, तो पाइपलाइन को सुरक्षित घोषित करने के बजाय उस हिस्से को असत्यापित के रूप में चिह्नित करें।
अस्वीकृति साबित करती है कि एक विशिष्ट इनपुट को परीक्षण किए गए कॉन्फ़िगरेशन में एक विशिष्ट सीमा का सामना करना पड़ा। यह साबित नहीं करता कि हर संभावित दुर्भावनापूर्ण दस्तावेज़ हानिरहित है। केंद्रित फिक्स्चर, समीक्षा किए गए कॉन्फ़िगरेशन, अलगाव और निगरानी को संयोजित करें, और किसी भी सीमा के विफल होने पर अनुवर्ती कार्रवाई के लिए एक मालिक को बनाए रखें।
समीक्षा पैकेज केवल एक छोटे से सीमित डीकंप्रेसन प्रदर्शन और सिमेंटिक मॉडल को निष्पादित करता है। ऊपर वर्णित बाह्य-संदर्भ, स्मृति-अलगाव, समवर्ती-कार्यकर्ता और वास्तविक डेटाबेस-संमिलन परीक्षण स्वीकृति आवश्यकताएँ बने हुए हैं, पूर्ण परीक्षण नहीं।