
प्रमाण की अवधारणा (बिल्डर) CVE-2026-39973 (apktool) के लिए
यह CVE-2026-39973 के लिए एक छोटा C# apk फ़ाइल बिल्डर है।
CVE-2026-39973 github रेपो iBotPeaches/Apktool के भीतर एक पाथ ट्रैवर्सल भेद्यता है जो संस्करण 3.0.1 को प्रभावित करती है।
यह हमलावरों को अपने स्वयं के संसाधन बनाने और एक एंट्री के प्रकार के भीतर ..\ अनुक्रम इंजेक्ट करने की अनुमति देता है, जिससे एक खतरा अभिनेता ~/.bashrc या Windows स्टार्टअप पथ पर कोई भी फ़ाइल लिख सकता है।
यह भेद्यता कमिट e10a045 (PR #4041) में एक सुरक्षा प्रतिगमन से आती है जो ResFileDecoder.java से BrutIO.detectPossibleDirectoryTraversal() को हटा देती है।
ResFileDecoder.java#L103-L109 पहले:
String outResPath = entry.getTypeName() + entry.getConfig().getQualifiers() + "/" + entry.getName();
if (BrutIO.detectPossibleDirectoryTraversal(outResPath)) {
LOGGER.warning("Potentially malicious file path: " + outResPath + ", using instead: " + inResPath);
outResPath = inResPath;
} else if (!ext.isEmpty()) {
outResPath += "." + ext;
}
ResFileDecoder.java#L103-L104 बाद में:
String outResPath = entry.getTypeName() + entry.getConfig().getQualifiers() + "/" + entry.getName()
+ (ext.isEmpty() ? "" : "." + ext);
इस कमिट ने पूरे आउटपुट पथ पर एक "बेकार" समझे गए जाँच को हटा दिया क्योंकि entry.name पहले से ही पहले जाँचा गया था (ResEntrySpec कंस्ट्रक्टर)।
लेखक भूल गए कि एंट्री का प्रकार नाम हमारे स्वयं के दुर्भावनापूर्ण resources.arsc को तैयार करके पाथ ट्रैवर्सल के अधीन हो सकता है।
resources.arsc एक फ़ाइल है जिसमें संसाधन डेटा, पथ, प्रकार नाम और बहुत कुछ होता है।
यह वह सब कुछ संग्रहीत करता है जो हमें प्रकार का नाम संशोधित करने या Apktool का शोषण करने के लिए एक resource.arsc फ़ाइल तैयार करने के लिए चाहिए।
इसकी पुनरावृत्ति के बावजूद, मुझे सीरियलाइज़ेशन पर खराब लेकिन संतोषजनक दस्तावेज़ीकरण ही मिला है।
इस बिंदु पर, apktool के दस्तावेज़ीकरण को पढ़ने की दृढ़ता से अनुशंसा की जाती है।
मैंने सीधे Apktool पर आधारित होना शुरू किया क्योंकि मुझे इस एप्लिकेशन के लिए विशेष रूप से एक resources.arsc फ़ाइल बनाने की आवश्यकता होगी।
मैंने इंटरनेट से एक यादृच्छिक APK फ़ाइल डाउनलोड की और इसे 7zip के साथ खोला। फिर मैंने resources.arsc फ़ाइल निकाली और Apktool के पार्सर कोड के साथ डेटा संरचनाओं का अध्ययन करना शुरू किया।
फिर मैंने resources.arsc फ़ाइल के लिए एक छोटा C# बिल्डर बनाया, एक ResTable और एक ResPackage लिखा जिसमें एक ResType है जिसमें ..\ अनुक्रम और Windows स्टार्टअप फ़ोल्डर का पथ है, इसमें एक एंट्री भी है जो पेलोड फ़ाइल है।