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.
Ö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
$PATHolması gerekir (yani,
adbkomut 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-toolsdizinini $PATH'nize eklemeyi unutmayın.
- Bağımsız platform araçları yerine Android Studio'nun SDK yöneticisini kullanıyorsanız, SDK'nı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 bir araya
assembleSTSARM veya bir
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:
- Sts
sts-testalt dizininde adb aracılığıyla cihazla etkileşime giren ana bilgisayar tarafında bir Tradefed testi.
-
adb pushyoluyla cihaza aktarılan ve
native-pocalt dizinindeki ana bilgisayar tarafı testi tarafından yürütülen isteğe bağlı bir yerel kavram kanıtı saldırısı.
- Cihaza
adb installyoluyla 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-appalt dizinindedir.
Tipik bir STS test akışı genellikle iki modelden birini izler:
Yerel kavram kanıtı:
- Ana bilgisayar tarafı testi, aygıtta yerel bir yürütülebilir dosyayı zorlar ve başlatır.
- Yerel program çöker veya belirli bir çıkış kodu döndürür.
- 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ı:
- Ana bilgisayar tarafı testi, bir uygulama veya hizmetten oluşan bir APK'yı cihaza gönderir.
- Ana bilgisayar tarafı testi,
runDeviceTest()aracılığıyla APK ile birlikte verilen cihaz tarafı JUnit testlerini başlatır.
- 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.
- 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, yerel bir programın cihaz tarafı testleriyle birlikte ç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 adlı yeni bir dosya oluşturulmalıdır. Bu dosyayı, Android Güvenlik Açığı Ödül Programına gönderiminizle birlikte yükleyin.