Android Güvenlik Test Paketi Geliştirme Kiti (STS SDK)

Güvenlik Test Paketi Ticaret Federasyonu (sts-tradefed), Uyumluluk Test Paketi kapsamına girmeyen güvenlik yama testleri için tüm Android cihazları test etmek üzere Android Ticaret Federasyonu test donanımının üzerine inşa edilmiştir. Bu testler, yalnızca Ortak Güvenlik Açıkları ve Riskler (CVE) ile ilişkili (veya ilişkilendirilecek) düzeltmeler içindir.

SDK, Android Studio veya standart Android SDK kullanılarak Android kaynak ağacının dışında STS testlerinin geliştirilmesine izin verir. Bir STS testi oluşturmak ve çalıştırmak için gereken tüm yardımcı programları içerir.

En Son STS SDK'sını Alın

Önkoşullar

  • 64-bit Linux bilgisayar.
  • Android Studio (dağıtımınızın paket yöneticisinden de kurulabilir.
  • Android platform araçlarının ( adb , fastboot ) kurulu olması ve $PATH olması gerekir (yani, adb komut satırından çalıştırabilmelisiniz). Platform araçlarını kurmanın en kolay yolu dağıtımınızın paket yöneticisidir.
    • Bağımsız platform araçları yerine Android Studio'nun SDK yöneticisini kullanıyorsanız, SDK'nın platform-tools dizinini $PATH'nize eklemeyi unutmayın.
  • aapt , dağıtımınızın paket yöneticisi aracılığıyla da kurulabilir.

Android Studio'yu kullanmaya başlayın

Arşivi çıkardıktan sonra, dizini Android Studio'da mevcut bir proje olarak açın. İskelet testini oluşturmak için, hedef Android cihazının mimarisine bağlı olarak assembleSTSARM veya assembleSTSx86 oluşturma hedefini çalıştırın. Bağlı cihazda iskelet testini çalıştırmak için runSTS yapı hedefini çalıştırın (ADB yetkilendirilmelidir).

Gradle'ı kullanmaya başlayın

Arşivi çıkardıktan sonra, Gradle projesinin kök dizinindeki local.properties dosyasında sdk.dir özelliğini ayarlayın, ardından iskelet testini oluşturmak assembleSTSARM Gradle görevini çalıştırın. Derleme tamamlandıktan sonra test, ( cd ) build/android-sts/tools içine gidilerek ve sts-tradefed sarmalayıcı çalıştırılarak çalıştırılabilir.

$ 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 testi yaz

Bir STS testinin üç bölümü vardır:

  1. sts-test alt dizininde adb aracılığıyla cihazla etkileşime giren ana bilgisayar tarafında bir Tradefed testi.
  2. adb push yoluyla cihaza aktarılan ve native-poc alt dizinindeki ana bilgisayar tarafı testi tarafından yürütülen isteğe bağlı bir yerel kavram kanıtı saldırısı.
  3. Cihaza adb install yoluyla yüklenen ve ayrıca ana bilgisayar tarafı testi tarafından başlatılan isteğe bağlı bir uygulama veya hizmet APK'sı. Uygulama veya hizmet, ana bilgisayar tarafı çalıştırıcısına bildirilen kendi JUnit iddiaları kümesini de içerebilir. Bu, test-app alt dizinindedir.

Tipik bir STS test akışı genellikle iki modelden birini izler:

  • Yerel kavram kanıtı:

    1. Ana bilgisayar tarafı testi, aygıtta yerel bir yürütülebilir dosyayı zorlar ve başlatır.
    2. Yerel program çöker veya belirli bir çıkış kodu döndürür.
    3. Ana bilgisayar tarafı testi, saldırının başarılı olup olmadığını belirlemek için çökmeleri kontrol eder, logcat geri izlemesine bakar veya belirli çıkış kodunu arar.
  • Enstrümanlı test uygulaması:

    1. Ana bilgisayar tarafı testi, bir uygulama veya hizmetten oluşan bir APK'yı cihaza gönderir.
    2. Ana bilgisayar tarafı testi, runDeviceTest() aracılığıyla APK ile birlikte verilen cihaz tarafı JUnit testlerini başlatır.
    3. Cihaz tarafındaki JUnit, dokunma düğmelerini test eder ve UIAutomator kullanarak uygulamayı izler veya güvenlik açıklarını ortaya çıkaracak şekilde Android sistemine başka bir şekilde erişir.
    4. Cihaz tarafı JUnit testlerinin başarılı veya başarısız olması, testin geçip geçmediğini belirlemek için kullanılabilen ana bilgisayar tarafı testine döndürülür.

İki modelin bir kombinasyonu da (örneğin, cihaz tarafı testleriyle birlikte yerel bir programın çalıştırılması) mümkündür. frida-inject gibi diğer bazı enstrümantasyon çerçeveleri de mevcuttur. Ayrıntılar için Security Test Suite referans belgelerine ve Tradefed referans belgelerine bakın.

Kavram kanıtı saldırımın bir test uygulamasına ve/veya yerel yürütülebilir dosyaya ihtiyacı yok

Çoğu test, hem cihaz tarafı bir uygulamaya hem de yerel bir yürütülebilir dosyaya ihtiyaç duymaz.

Testiniz cihazdaki bir uygulamanın/hizmetin kullanımını içermiyorsa test-app alt dizinini silin. Benzer şekilde, testiniz yerel bir yürütülebilir dosya kullanmıyorsa, native-poc alt dizinini silin ve ardından projeyi Gradle-sync yapın. Proje, mevcut olmadıklarında bu modülleri oluşturmayı otomatik olarak atlayacak şekilde ayarlanmıştır.

Kavram kanıtı saldırım ikinci bir uygulama/hizmet içeriyor

İlk olarak, ikinci uygulamanız/hizmetiniz için projenize yeni bir Modül ekleyin ve bunu diğer APK'larda yaptığınız gibi yazın.

Ardından, bu dizinin kök dizinindeki build.gradle düzenleyin ve copyArtifacts , assembleStsARM assembleStsx86 yönergeleri izleyerek modülünüzü ekleyin. Bu, derlenen APK'nin STS'nin çıktı dizinine kopyalanmasını sağlar ve testten yeni uygulamanın yüklenmesini/çağrılmasını sağlar.

Son olarak, projeyi Gradle ile senkronize edin.

STS testini gönderme

zipForSubmission görevini çalıştırın (komut satırında Android Studio veya Gradle ile). Projenin kök dizinindeki build dizininde codesubmission.zip yeni bir dosya oluşturulmalıdır. Bu dosyayı, Android Güvenlik Açığı Ödül Programına gönderiminizle birlikte yükleyin.