ערכת פיתוח של Android Security Test Suite (STS SDK)

Security Test Suite Trade Federation (sts-tradefed) בנויה על גבי רתמת הבדיקות של Android Trade Federation כדי לבדוק את כל מכשירי האנדרואיד עבור בדיקות תיקון אבטחה שלא נכנסות לחבילת בדיקת התאימות. בדיקות אלו מיועדות אך ורק לתיקונים המשויכים (או ישויכו) לפגיעות וחשיפה נפוצות (CVE).

ה-SDK מאפשר פיתוח מבחני STS מחוץ לעץ המקור של אנדרואיד באמצעות Android Studio או SDK הסטנדרטי של Android. הוא כולל את כל כלי העזר הדרושים לבניית מבחן STS ולהפעיל אותו.

קבל STS SDK העדכני ביותר

דרישות מוקדמות

  • מחשב לינוקס 64 סיביות.
  • Android Studio (ניתן להתקין גם ממנהל החבילות של ההפצה שלך.
  • יש להתקין כלי פלטפורמת אנדרואיד ( adb , fastboot ) ולהיות ב- $PATH שלך (כלומר, אתה אמור להיות מסוגל להפעיל adb משורת הפקודה). הדרך הקלה ביותר להתקין את כלי הפלטפורמה היא דרך מנהל החבילות של ההפצה שלך.
    • אם אתה משתמש במנהל SDK של Android Studio במקום בכלי פלטפורמה עצמאיים, זכור להוסיף את ספריית platform-tools של ה-SDK ל-$PATH שלך.
  • aapt , שניתן להתקין גם דרך מנהל החבילות של ההפצה שלך.

התחל להשתמש ב-Android Studio

לאחר חילוץ הארכיון, פתח את הספרייה ב-Android Studio כפרויקט קיים. הפעל את יעד הבנייה assembleSTSARM או assembleSTSx86 כדי לבנות את מבחן השלד, בהתאם לארכיטקטורת מכשיר האנדרואיד היעד. הפעל את יעד הבנייה runSTS כדי להפעיל את בדיקת השלד במכשיר המחובר (יש להרשות ל-ADB).

התחל להשתמש ב- Gradle

לאחר חילוץ הארכיון, הגדר את המאפיין sdk.dir בקובץ local.properties בשורש פרויקט Gradle, ולאחר מכן הפעל את המשימה assembleSTSARM Gradle כדי לבנות את מבחן השלד. לאחר סיום הבנייה, ניתן להפעיל את הבדיקה על ידי ניווט ( cd ) לתוך build/android-sts/tools והפעלת ה- sts-tradefed wrapper.

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

כתוב מבחן STS

ישנם שלושה חלקים למבחן STS:

  1. מבחן Tradefed בצד המארח שמקיים אינטראקציה עם המכשיר דרך adb, בספריית המשנה sts-test .
  2. התקפת הוכחה מקורית אופציונלית שנדחפת אל המכשיר באמצעות adb push ומבוצעת על ידי מבחן צד המארח בספריית המשנה native-poc .
  3. אפליקציה או שירות APK אופציונלית המותקנת על המכשיר באמצעות adb install ומופעלת גם על ידי הבדיקה בצד המארח. האפליקציה או השירות יכולים להכיל גם סט משלו של הצהרות JUnit המדווחות לרץ בצד המארח. זה נמצא בספריית המשנה test-app .

זרימת בדיקה טיפוסית של STS עוקבת בדרך כלל אחר אחת משתי דפוסים:

  • הוכחה מקורית:

    1. הבדיקה בצד המארח דוחפת ומשגרת קובץ הפעלה מקורי במכשיר.
    2. התוכנית המקורית קורסת או מחזירה קוד יציאה ספציפי.
    3. הבדיקה בצד המארח בודקת קריסות, מסתכלת על ה-logcat backtrace, או מחפשת את קוד היציאה הספציפי כדי לקבוע אם ההתקפה הצליחה.
  • אפליקציית בדיקה מכשירנית:

    1. הבדיקה בצד המארח דוחפת APK המורכב מאפליקציה או שירות למכשיר.
    2. הבדיקה בצד המארח מתחילה את בדיקות JUnit בצד המכשיר המצורפות ל-APK דרך runDeviceTest()
    3. ה-JUnit בצד המכשיר בודק כפתורי הקשה וצופה באפליקציה באמצעות UIAutomator, או ניגש בדרך אחרת למערכת אנדרואיד בדרכים החושפות פרצות אבטחה.
    4. ההצלחה או הכישלון של מבחני JUnit בצד המכשיר מוחזרים למבחן בצד המארח, שבו ניתן להשתמש כדי לקבוע אם המבחן עבר או לא.

שילוב של שני הדפוסים (לדוגמה, הפעלת תוכנית מקורית בשילוב עם בדיקות בצד המכשיר) אפשרי גם כן. כמה מסגרות מכשור אחרות, כגון frida-inject , זמינות גם כן. לפרטים, עיין במסמכי העזר של Security Test Suite ובמסמכי העזר של Tradefed .

התקפת ההוכחה שלי לא צריכה אפליקציית בדיקה ו/או קובץ הפעלה מקורי

רוב הבדיקות לא יצטרכו גם אפליקציה בצד המכשיר וגם קובץ הפעלה מקורי.

אם הבדיקה שלך אינה כרוכה בשימוש באפליקציה/שירות במכשיר, פשוט מחק את ספריית המשנה test-app . באופן דומה, אם הבדיקה שלך אינה משתמשת בקובץ הפעלה מקורי, מחק את ספריית המשנה native-poc ואז סנכרן את הפרויקט Gradle. הפרויקט מוגדר לדלג אוטומטית על בניית המודולים האלה כאשר הם לא קיימים.

התקפת ההוכחה שלי כוללת אפליקציה/שירות שני

ראשית, הוסף מודול חדש לפרויקט שלך עבור האפליקציה/שירות השני שלך וכתוב את זה כמו כל APK אחר.

לאחר מכן, ערוך את build.gradle בשורש ספרייה זו והוסף את המודול שלך לפי ההוראות ב- copyArtifacts , assembleStsARM ו- assembleStsx86 . זה יבטיח שה-APK המהידור יועתק לספריית הפלט של STS ויאפשר התקנה/קריאה של האפליקציה החדשה מהבדיקה.

לבסוף, סנכרן Gradle את הפרויקט.

הגשת מבחן STS

הפעל את משימת zipForSubmission (או עם Android Studio או עם Gradle בשורת הפקודה). יש ליצור קובץ חדש, codesubmission.zip , בספריית build בשורש הפרויקט. העלה את הקובץ הזה יחד עם ההגשה שלך לתוכנית התגמול לפגיעות של אנדרואיד.