एंड्रॉइड सुरक्षा परीक्षण सूट विकास किट (एसटीएस एसडीके)

सिक्योरिटी टेस्ट सूट ट्रेड फेडरेशन (एसटीएस-ट्रेडफेड) एंड्रॉइड ट्रेड फेडरेशन टेस्ट हार्नेस के शीर्ष पर बनाया गया है ताकि सुरक्षा पैच परीक्षणों के लिए सभी एंड्रॉइड डिवाइसों का परीक्षण किया जा सके जो संगतता टेस्ट सूट में नहीं आते हैं। ये परीक्षण विशेष रूप से उन सुधारों के लिए हैं जो सामान्य कमजोरियाँ और एक्सपोज़र (सीवीई) से जुड़े हैं (या जुड़े रहेंगे)।

एसडीके एंड्रॉइड स्टूडियो या मानक एंड्रॉइड एसडीके का उपयोग करके एंड्रॉइड स्रोत ट्री के बाहर एसटीएस परीक्षणों के विकास की अनुमति देता है। इसमें एसटीएस परीक्षण बनाने और चलाने के लिए आवश्यक सभी उपयोगिताएँ शामिल हैं।

नवीनतम एसटीएस एसडीके प्राप्त करें

आवश्यक शर्तें

  • 64-बिट लिनक्स पीसी।
  • एंड्रॉइड स्टूडियो (आपके डिस्ट्रो के पैकेज मैनेजर से भी इंस्टॉल किया जा सकता है।
  • एंड्रॉइड प्लेटफ़ॉर्म टूल ( adb , fastboot ) को इंस्टॉल करने और आपके $PATH में होने की आवश्यकता है (यानी आपको कमांड लाइन से adb चलाने में सक्षम होना चाहिए)। प्लेटफ़ॉर्म टूल इंस्टॉल करने का सबसे आसान तरीका आपके डिस्ट्रो के पैकेज मैनेजर के माध्यम से है।
    • यदि स्टैंडअलोन प्लेटफ़ॉर्म टूल के बजाय एंड्रॉइड स्टूडियो के एसडीके प्रबंधक का उपयोग कर रहे हैं, तो एसडीके के platform-tools निर्देशिका को अपने $PATH में जोड़ना याद रखें।
  • aapt , जिसे आपके डिस्ट्रो के पैकेज मैनेजर के माध्यम से भी इंस्टॉल किया जा सकता है।

एंड्रॉइड स्टूडियो का उपयोग शुरू करें

संग्रह को निकालने के बाद, मौजूदा प्रोजेक्ट के रूप में एंड्रॉइड स्टूडियो में निर्देशिका खोलें। लक्ष्य एंड्रॉइड डिवाइस के आर्किटेक्चर के आधार पर, स्केलेटन टेस्ट बनाने के लिए assembleSTSARM या assembleSTSx86 बिल्ड लक्ष्य चलाएं। कनेक्टेड डिवाइस पर स्केलेटन टेस्ट चलाने के लिए runSTS बिल्ड टारगेट चलाएँ (एडीबी अधिकृत होना चाहिए)।

ग्रैडल का उपयोग आरंभ करें

संग्रह को निकालने के बाद, ग्रैडल प्रोजेक्ट के रूट पर local.properties फ़ाइल में sdk.dir प्रॉपर्टी सेट करें, फिर स्केलेटन टेस्ट बनाने के लिए assembleSTSARM ग्रैडल कार्य चलाएँ। निर्माण समाप्त होने के बाद, परीक्षण को build/android-sts/tools में नेविगेट करके ( cd ) और sts-tradefed रैपर निष्पादित करके चलाया जा सकता है।

$ echo 'sdk.dir=/home/<myusername>/Android/Sdk' > local.properties
$ ./gradlew assembleSTSARM
$ cd build/android-sts/tools
$ ./sts-tradefed run sts-dynamic-develop -m hostsidetest

एक एसटीएस परीक्षण लिखें

एसटीएस परीक्षण के तीन भाग हैं:

  1. एक होस्ट-साइड ट्रेडफेड परीक्षण जो sts-test उपनिर्देशिका में एडीबी के माध्यम से डिवाइस के साथ इंटरैक्ट करता है।
  2. एक वैकल्पिक देशी प्रूफ-ऑफ-कॉन्सेप्ट हमला जिसे adb push के माध्यम से डिवाइस पर धकेला जाता है और native-poc उपनिर्देशिका में होस्ट-साइड टेस्ट द्वारा निष्पादित किया जाता है।
  3. एक वैकल्पिक ऐप या सेवा एपीके जो adb install के माध्यम से डिवाइस पर इंस्टॉल किया जाता है और होस्ट-साइड टेस्ट द्वारा भी लॉन्च किया जाता है। ऐप या सेवा में JUnit दावे का अपना सेट भी हो सकता है जो होस्ट-साइड रनर को रिपोर्ट किया जाता है। यह test-app उपनिर्देशिका में है।

एक विशिष्ट एसटीएस परीक्षण प्रवाह आमतौर पर दो पैटर्न में से एक का अनुसरण करता है:

  • अवधारणा का मूल प्रमाण:

    1. होस्ट-साइड परीक्षण डिवाइस पर एक मूल निष्पादन योग्य को पुश और लॉन्च करता है।
    2. मूल प्रोग्राम क्रैश हो जाता है या एक विशिष्ट निकास कोड लौटाता है।
    3. होस्ट-साइड परीक्षण क्रैश की जांच करता है, लॉगकैट बैकट्रेस को देखता है, या यह निर्धारित करने के लिए विशिष्ट निकास कोड की तलाश करता है कि हमला सफल हुआ या नहीं।
  • वाद्य यंत्र परीक्षण ऐप:

    1. होस्ट-साइड परीक्षण डिवाइस पर एक ऐप या सेवा से युक्त एपीके को धकेलता है।
    2. होस्ट-साइड परीक्षण डिवाइस-साइड JUnit परीक्षण शुरू करता है जो runDeviceTest() के माध्यम से एपीके के साथ बंडल किया गया है
    3. डिवाइस-साइड JUnit बटन टैप का परीक्षण करता है और UIAutomator का उपयोग करके ऐप को देखता है, या अन्यथा एंड्रॉइड सिस्टम को उन तरीकों से एक्सेस करता है जो सुरक्षा कमजोरियों को प्रकट करते हैं।
    4. डिवाइस-साइड JUnit परीक्षणों की सफलता या विफलता होस्ट-साइड परीक्षण में लौटा दी जाती है, जिसका उपयोग यह निर्धारित करने के लिए किया जा सकता है कि परीक्षण उत्तीर्ण हुआ या नहीं।

दो पैटर्न का संयोजन (उदाहरण के लिए, डिवाइस-साइड परीक्षणों के साथ एक मूल प्रोग्राम चलाना) भी संभव है। कुछ अन्य इंस्ट्रुमेंटेशन फ्रेमवर्क, जैसे कि frida-inject , भी उपलब्ध हैं। विवरण के लिए, सुरक्षा परीक्षण सूट संदर्भ दस्तावेज़ और ट्रेडफेड संदर्भ दस्तावेज़ देखें।

मेरे प्रूफ-ऑफ-कॉन्सेप्ट हमले के लिए परीक्षण ऐप और/या मूल निष्पादन योग्य की आवश्यकता नहीं है

अधिकांश परीक्षणों के लिए डिवाइस-साइड ऐप और मूल निष्पादन योग्य दोनों की आवश्यकता नहीं होगी।

यदि आपके परीक्षण में ऑन-डिवाइस ऐप/सेवा का उपयोग शामिल नहीं है, तो बस test-app उपनिर्देशिका को हटा दें। इसी तरह, यदि आपका परीक्षण मूल निष्पादन योग्य का उपयोग नहीं करता है, तो native-poc उपनिर्देशिका को हटा दें और फिर प्रोजेक्ट को ग्रैडल-सिंक करें। प्रोजेक्ट उन मॉड्यूलों के निर्माण को स्वचालित रूप से छोड़ने के लिए सेट किया गया है जब वे मौजूद नहीं हैं।

मेरे प्रूफ़-ऑफ़-कॉन्सेप्ट हमले में एक दूसरा ऐप/सेवा शामिल है

सबसे पहले, अपने दूसरे ऐप/सेवा के लिए अपने प्रोजेक्ट में एक नया मॉड्यूल जोड़ें और उसे किसी अन्य एपीके की तरह लिखें।

इसके बाद, इस निर्देशिका के मूल में build.gradle संपादित करें और copyArtifacts , assembleStsARM , और assembleStsx86 में दिए गए निर्देशों का पालन करते हुए अपना मॉड्यूल जोड़ें। यह सुनिश्चित करेगा कि संकलित एपीके को एसटीएस की आउटपुट निर्देशिका में कॉपी किया गया है और परीक्षण के लिए नए ऐप को इंस्टॉल/कॉल करने में सक्षम बनाया गया है।

अंत में, प्रोजेक्ट को ग्रैडल-सिंक करें।

एसटीएस परीक्षण जमा करना

zipForSubmission कार्य चलाएँ (या तो एंड्रॉइड स्टूडियो के साथ या कमांड लाइन पर ग्रैडल के साथ)। प्रोजेक्ट के मूल में build निर्देशिका में एक नई फ़ाइल, codesubmission.zip बनाई जानी चाहिए। एंड्रॉइड भेद्यता पुरस्कार कार्यक्रम में अपने सबमिशन के साथ उस फ़ाइल को अपलोड करें।