অটোরেপ্রো গ্রেডল প্লাগইনটি Android সিকিউরিটি বুলেটিনে দুর্বলতার বিরুদ্ধে সুরক্ষা প্যাচ পরীক্ষার জন্য সমস্ত অ্যান্ড্রয়েড ডিভাইসের পরীক্ষা করার জন্য Android ট্রেড ফেডারেশনের পরীক্ষার জোড়ের উপরে তৈরি করা হয়েছে৷ এই পরীক্ষাগুলি একচেটিয়াভাবে ঠিক করার জন্য যা একটি সাধারণ দুর্বলতা এবং এক্সপোজার (CVE) এর সাথে যুক্ত বা যুক্ত হবে৷
প্লাগইনটি অ্যান্ড্রয়েড স্টুডিও বা স্ট্যান্ডার্ড অ্যান্ড্রয়েড এসডিকে ব্যবহার করে অ্যান্ড্রয়েড সোর্স ট্রির বাইরে ট্রেডফেড পরীক্ষার বিকাশের অনুমতি দেয়। এটিতে ট্রেডফেড পরীক্ষা তৈরি এবং চালানোর জন্য প্রয়োজনীয় সমস্ত ইউটিলিটি অন্তর্ভুক্ত রয়েছে।
এটি প্রাথমিকভাবে Android ভালনারেবিলিটি রিওয়ার্ডস প্রোগ্রামের জন্য স্বয়ংক্রিয়ভাবে পুনরুত্পাদনযোগ্য প্রমাণ-অব-ধারণা জমা দিতে ব্যবহৃত হয়।
পূর্বশর্ত
একটি 64-বিট লিনাক্স পিসির জন্য নির্দেশাবলী প্রদান করা হয়েছে।
- অ্যান্ড্রয়েড স্টুডিও লেডিবাগ বা নতুন - আপনার ডিস্ট্রোর প্যাকেজ ম্যানেজার থেকেও ইনস্টল করা যেতে পারে।
- অ্যান্ড্রয়েড SDK প্ল্যাটফর্ম টুলস (
adb
,fastboot
) - ইনস্টল করা এবং আপনার$PATH
এ থাকতে হবে (অর্থাৎ, আপনি কমান্ড লাইন থেকেadb
চালাতে সক্ষম হবেন)। প্ল্যাটফর্ম টুল ইনস্টল করার সবচেয়ে সহজ উপায় হল আপনার ডিস্ট্রোর প্যাকেজ ম্যানেজার ব্যবহার করা।- যদি স্বতন্ত্র প্ল্যাটফর্ম টুলের পরিবর্তে অ্যান্ড্রয়েড স্টুডিওর SDK ম্যানেজার ব্যবহার করেন, তাহলে কমান্ড-লাইন ডেভেলপমেন্টের জন্য আপনার
$PATH
এ SDK-এরplatform-tools
ডিরেক্টরি যোগ করতে ভুলবেন না।
- যদি স্বতন্ত্র প্ল্যাটফর্ম টুলের পরিবর্তে অ্যান্ড্রয়েড স্টুডিওর SDK ম্যানেজার ব্যবহার করেন, তাহলে কমান্ড-লাইন ডেভেলপমেন্টের জন্য আপনার
- AAPT2 । - এছাড়াও আপনার ডিস্ট্রোর প্যাকেজ ম্যানেজার ব্যবহার করে ইনস্টল করা যেতে পারে।
- Java JDK 21 বা নতুন - Android SDK এবং Gradle এর সাথে সামঞ্জস্যপূর্ণ।
অ্যান্ড্রয়েড স্টুডিও ব্যবহার শুরু করুন
উদাহরণ বা টেমপ্লেট বের করার পরে, একটি বিদ্যমান প্রকল্প হিসাবে অ্যান্ড্রয়েড স্টুডিওতে ডিরেক্টরি খুলুন এবং গ্র্যাডল সিঙ্ক সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন। বেশ কিছু প্রি-কনফিগার করা Android স্টুডিও রান কনফিগারেশন আছে।
গ্রেডলের কাজ:
-
assembleSubmissionSources
- জমা দেওয়া জিপের জন্য উত্স ফাইলগুলি একত্রিত করুন। -
assembleSubmissionZip
- আপলোডের জন্য জমা জিপ একত্রিত করুন। -
copyInvocationResultsToSubmission
- পর্যালোচনা প্রক্রিয়ায় সহায়তা করার জন্য পূর্ববর্তী Tradefed আমন্ত্রণের ফলাফলগুলি AutoRepro জমা উত্স ডিরেক্টরিতে অনুলিপি করুন। মনে রাখবেন যে এতে হোস্ট এবং ডিভাইস উভয়ের লগ রয়েছে; এটি চালানোর আগে বা পরে বিষয়বস্তু পর্যালোচনা করুন।
AutoRepro আহ্বান অ্যান্ড্রয়েড স্টুডিও রান কনফিগারেশন:
-
autorepro_nonroot_arm64
-
autorepro_nonroot_x86_64
-
autorepro_root_arm64
-
autorepro_root_x86_64
লঞ্চার কনফিগারেশনগুলি autorepro_{device_root}_{device_arch}
আকারে রয়েছে। এটি সাধারণত ননরুট ব্যবহার করা বাঞ্ছনীয় কারণ রুট প্রয়োজনের দুর্বলতাগুলি কম গুরুতর। যাইহোক, সেটআপ বা পরিষ্কার করার জন্য রুট ব্যবহার করা গ্রহণযোগ্য হতে পারে যতক্ষণ না এটি পরিষ্কারভাবে নথিভুক্ত করা হয় এবং সাধারণত একটি বৈধ ননরুট অবস্থা হিসাবে গৃহীত হয়। উদাহরণস্বরূপ, একটি দ্বিতীয় ডিভাইস এবং একাধিক সিম কার্ডের প্রয়োজন এড়াতে ডিভাইসে নকল পাঠ্য বার্তা পাঠাতে রুট ব্যবহার করা গ্রহণযোগ্য।
এগুলি আপনার পরীক্ষার জন্য ট্রেডফেড চালু করবে। ট্রেডফেড একটি বৈধ ডিভাইস সংযুক্ত হওয়ার জন্য অপেক্ষা করে তাই নিশ্চিত করুন যে একটি সংযুক্ত এবং ADB ডিবাগিং অনুমোদিত।
একটি AutoRepro পরীক্ষা লিখুন
একটি AutoRepro পরীক্ষার তিনটি অংশ এবং তিনটি সংশ্লিষ্ট গ্রেডল প্লাগইন রয়েছে:
- Gradle প্লাগইন
id("com.android.security.autorepro.javahosttest")
একক হোস্ট-সাইড ট্রেডফেড পরীক্ষা যা ADB এর মাধ্যমে ডিভাইসের সাথে ইন্টারঅ্যাক্ট করে। উদাহরণটিsubmission/hostTest/
ডিরেক্টরিতে এটি ব্যবহার করে। - Gradle প্লাগইন
id("com.android.security.autorepro.apptest")
একটি অ্যাপ বা পরিষেবা APK যা ডিভাইসেadb install
মাধ্যমে ইনস্টল করা হয় এবং হোস্ট-সাইড টেস্টের মাধ্যমে চালু করা হয়। অ্যাপ বা পরিষেবাতে JUnit দাবির নিজস্ব সেটও থাকতে পারে যা হোস্ট-সাইড রানারকে রিপোর্ট করা হয়। উদাহরণটিsubmission/appTest/
এবং ডিরেক্টরিতে এটি ব্যবহার করে। - গ্রেডল প্লাগইন
id("com.android.security.autorepro.ndktest")
একটি ঐচ্ছিক NDK-ভিত্তিক প্রুফ-অফ-কনসেপ্ট অ্যাটাক যা ডিভাইসেadb push
মাধ্যমে পুশ করা হয় এবং হোস্ট-সাইড টেস্টের মাধ্যমে কার্যকর করা হয়। উদাহরণটিsubmission/ndkTest/
ডিরেক্টরিতে এটি ব্যবহার করে।
একটি সাধারণ AutoRepro পরীক্ষার প্রবাহ সাধারণত দুটি প্যাটার্নের একটি অনুসরণ করে:
ইন্সট্রুমেন্টেড টেস্ট অ্যাপ:
- হোস্ট-সাইড টেস্ট ডিভাইসে একটি যন্ত্রযুক্ত অ্যাপ বা পরিষেবা সমন্বিত একটি APK পুশ করে।
- হোস্ট-সাইড পরীক্ষাটি ডিভাইস-সাইড JUnit পরীক্ষা শুরু করে যা
runDeviceTest()
এর মাধ্যমে APK-এর সাথে বান্ডিল করা হয়। - ডিভাইস-সাইড JUnit ট্যাপ বোতাম পরীক্ষা করে এবং UIAutomator ব্যবহার করে অ্যাপটি দেখে, অথবা অন্যথায় নিরাপত্তা দুর্বলতা প্রকাশ করে এমন উপায়ে Android API অ্যাক্সেস করে।
- ডিভাইস-সাইড JUnit পরীক্ষাগুলির সাফল্য বা ব্যর্থতা হোস্ট-সাইড পরীক্ষায় ফেরত দেওয়া হয়, যা পরীক্ষা পাস হয়েছে কিনা তা নির্ধারণ করতে ব্যবহার করা যেতে পারে। ব্যর্থতার বার্তায় বিশদ তথ্য থাকতে হবে কেন দাবী ব্যর্থ হয়েছে এবং দুর্বলতার প্রমাণ হিসাবে কোনো নির্দিষ্ট বস্তু, মান, ব্যতিক্রম, স্ট্যাকট্রেস বা অন্যান্য শিল্পকর্ম।
এনডিকে প্রুফ-অফ-ধারণা:
- হোস্ট-সাইড পরীক্ষাটি ডিভাইসে একটি লিনাক্স এক্সিকিউটেবল ধাক্কা দেয় এবং চালু করে।
- নেটিভ প্রোগ্রাম ক্র্যাশ করে বা একটি নির্দিষ্ট প্রস্থান কোড ফেরত দেয়।
- হোস্ট-সাইড পরীক্ষা ক্র্যাশের জন্য পরীক্ষা করে, লগক্যাট ব্যাকট্রেস দেখে, বা আক্রমণ সফল হয়েছে কিনা তা নির্ধারণ করতে নির্দিষ্ট প্রস্থান কোড খোঁজে। ব্যর্থতার বার্তায় বিশদ তথ্য থাকতে হবে কেন দাবী ব্যর্থ হয়েছে এবং দুর্বলতার প্রমাণ হিসাবে কোনও নির্দিষ্ট কাঠামো, মান, স্ট্যাকট্রেস বা অন্যান্য শিল্পকর্ম।
দুটি প্যাটার্নের সংমিশ্রণ (উদাহরণস্বরূপ, ডিভাইস-সাইড পরীক্ষার সাথে একটি নেটিভ প্রোগ্রাম চালানো)ও সম্ভব। frida-inject
মতো কিছু অন্যান্য উপকরণ কাঠামোও পাওয়া যায়। বিস্তারিত জানার জন্য, সিকিউরিটি টেস্ট স্যুট রেফারেন্স ডক্স এবং ট্রেডফেড রেফারেন্স ডক্স দেখুন।
আমার প্রুফ-অফ-কনসেপ্ট অ্যাটাকের জন্য কোনো টেস্ট অ্যাপ বা নেটিভ এক্সিকিউটেবলের প্রয়োজন নেই
বেশিরভাগ পরীক্ষার জন্য ডিভাইস-সাইড অ্যাপ এবং নেটিভ এক্সিকিউটেবল উভয়েরই প্রয়োজন হবে না।
যদি আপনার পরীক্ষায় কোনো বৈশিষ্ট্য ব্যবহার না করা হয়, তাহলে অপ্রয়োজনীয় গ্রেডল সাবপ্রজেক্ট ডিরেক্টরি মুছে দিন।
আমার প্রুফ-অফ-ধারণা আক্রমণে একটি দ্বিতীয় অ্যাপ/পরিষেবা জড়িত
অটোরিপ্রো প্লাগইনগুলির সাথে যত খুশি গ্র্যাডল সাবপ্রজেক্ট যোগ করুন।
AutoRepro পরীক্ষা জমা দিন
জমা দেওয়ার অংশ হিসাবে আপনার ডিভাইস থেকে পরীক্ষার ফলাফল অন্তর্ভুক্ত করতে:
- ঐচ্ছিকভাবে যে কোনো পুরানো টেস্ট রান মুছে ফেলার জন্য Gradle
clean
টাস্ক চালান। - আপনার পরীক্ষার জন্য Tradefed আহ্বান করতে এবং লগ এবং ফলাফল সংগ্রহ করতে উপযুক্ত AutoRepro রান কনফিগারেশন চালান।
- জমা উৎস ডিরেক্টরিতে লগ এবং ফলাফল কপি করতে
copyInvocationResultsToSubmission
টাস্কটি চালান।
submission/build/autorepro-submission.zip
ফাইল তৈরি করতে assembleSubmissionZip
চালান। Android ভালনারেবিলিটি রিওয়ার্ড প্রোগ্রামে আপনার জমা দেওয়ার সাথে সেই ফাইলটি আপলোড করুন। নিশ্চিত করুন যে সংযুক্তি প্যাটার্ন *autorepro-submission*.zip
সাথে মেলে এবং এটি প্রাথমিক প্রতিবেদনের সাথে আপলোড করা হয়েছে। দেরীতে জমাগুলি আপলোড করা আপনার প্রতিবেদনকে সঠিকভাবে পর্যালোচনা করার আমাদের ক্ষমতাকে প্রভাবিত করবে৷