Google Project Zero के टूल्स का उपयोग करके Ladybird fuzzing
- Domato Google Project Zero द्वारा विकसित एक DOM fuzzer है, जो बड़ी मात्रा में ऐसे web pages बनाता है जिनमें मुख्य रूप से valid लेकिन अजीब HTML, CSS और JavaScript शामिल होते हैं.
- बनाए गए web pages लगभग 500 KiB आकार के होते हैं और ऐसे "दिलचस्प" JS, CSS और HTML से भरे होते हैं जो browser engine को चौंका सकते हैं.
- कहा जाता है कि Domato ने प्रमुख browsers में कई bugs खोजे हैं, और इसे Ladybird पर लागू करके समस्याएँ ढूँढ़ी और ठीक की गईं.
Issue #1: जब <th> टैग <mfrac> के अंदर हो
- Domato द्वारा जनरेट किए गए output में
<mfrac> के अंदर <th> रखने वाली समस्या मिली.
- UBSAN (Undefined Behavior SANitizer) के साथ compile किए गए Ladybird में null pointer dereference error हुआ.
<th> और <td> elements को इस मानकर implement किया गया था कि DOM tree में उनके ऊपर हमेशा <table> होगा, लेकिन JavaScript API का उपयोग करके DOM nodes को manually बनाते समय इस नियम को तोड़ा जा सकता है.
- समस्या को ठीक करने के लिए यह मानना बंद किया गया कि
<th> और <td> elements में हमेशा <table> शामिल होगा, और first_ancestor_of_type<HTMLTableElement>() का उपयोग करके इसे सुधारा गया.
Issue #2: अलग किए गए DOM में window event handler असाइन करना
- fuzzer चलाते समय जल्दी ही एक और समस्या सामने आई.
DOMParser के जरिए बनाए गए documents में window object नहीं होता, और इसी से समस्या हुई.
Document::window() को nullable value लौटाने के लिए बदला गया, और कई जगह null handling जोड़ी गई.
- बिना window वाले document में
document.body.onblur असाइन करने पर कुछ भी न करने के लिए बदलाव किया गया.
Issue #3: SVG <linearGradient> में infinite recursion
- SVG ऐसे gradients घोषित कर सकता है जो दूसरे gradients को refer करके रंग inherit करते हैं.
- gradient के खुद को refer करने की स्थिति पर विचार नहीं किया गया था, जिससे infinite loop हुआ.
- कई चरणों में फैले reference cycles को handle करने के लिए सभी visited gradients को track किया गया, और पहले से visit किए गए gradient मिलने पर chain को follow करना रोक दिया गया.
Issue #4: हटाए गए iframe की window properties तक पहुँच
- जब iframe को DOM से हटा दिया जाता है, तो उसका content document browsing context से अलग हो जाता है.
- window object की properties तक पहुँचते समय browsing context के मौजूद होने का अनुमान लगाने वाली HTML spec में bug मिला.
- HTML spec पर issue उठाया गया, और Ladybird में null check जोड़कर समस्या हल की गई.
Issue #5: Element.before() में infinite loop
- page load नहीं हो रहा था और CPU usage 100% पर बना हुआ था.
before() implementation में गलती के कारण infinite loop हुआ.
- sibling chain को
node->previous_sibling की जगह previous_sibling->previous_sibling के जरिए follow करने के लिए इसे ठीक किया गया.
निष्कर्ष
- एक दिन में 5 वास्तविक bugs खोजे गए और सभी को ठीक कर दिया गया.
- fuzzer जैसे tools उन लोगों के लिए अद्भुत संसाधन हैं जो software को और मजबूत बनाना चाहते हैं.
- जब Ladybird इतना स्थिर हो जाएगा कि लगातार fuzzing inputs संभाल सके, तब इसे cloud में अपने-आप चलाकर और समस्याएँ खोजी जा सकेंगी.
GN⁺ की राय
- यह लेख बताता है कि Ladybird browser engine ने Google Project Zero के Domato fuzzer का उपयोग करके मिले bugs को कैसे ठीक किया.
- fuzzing software की security vulnerabilities खोजने की बहुत प्रभावी तकनीक है, जिसका उपयोग developers अपने code को अधिक मजबूत बनाने के लिए कर सकते हैं.
- यह लेख developers को fuzzing के महत्व की याद दिलाता है और यह समझ देता है कि इसे व्यवहार में कैसे लागू किया जाता है.
- आलोचनात्मक रूप से देखें तो fuzzing unexpected inputs पर software की प्रतिक्रिया का परीक्षण करती है, इसलिए यह वास्तविक users के usage patterns को पूरी तरह प्रतिबिंबित नहीं कर सकती.
- समान क्षमताओं वाले अन्य fuzzing tools में AFL (American Fuzzy Lop) और LibFuzzer शामिल हैं, और developers इन tools का उपयोग अपने projects की testing के लिए कर सकते हैं.
- इस तकनीक को अपनाकर Ladybird developers खोजे गए bugs को ठीक कर browser की stability बेहतर कर सकते हैं, जो user experience सुधारने और security मजबूत करने में मदद करेगा.
1 टिप्पणियां
Hacker News प्रतिक्रिया
स्पेक की अहमियत अलग-अलग implementations के ज़रिए साबित होती है
छोटे समूह भी कमाल की चीज़ें बना सकते हैं
SVG implementation के साथ प्रोजेक्ट की तेज़ प्रगति पर हैरानी
software development में समस्या-समाधान के लिए गहराई से जाने की ज़रूरत
Ladybird के web engine Hackfest में भाग लेने को लेकर जिज्ञासा
hacking से जुड़े YouTube videos की कमी पर सवाल
"fuzzing ladybird" शब्द-समूह पर मज़ेदार प्रतिक्रिया
चुपचाप उम्मीद कि Ladybird दुनिया पर राज कर सके
[हटाई गई टिप्पणी]