Güvenlik Testi Paketi Ticaret Federasyonu (sts-tradefed), Uyumluluk Testi Paketi'ne girmeyen güvenlik düzeltme eki testleri için tüm Android cihazlarını test etmek amacıyla Android Ticaret Federasyonu test donanımının üzerine kurulmuştur. Bu testler yalnızca Ortak Güvenlik Açıkları ve Etkilenmeler (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 olanak tanır. Bir STS testi oluşturmak ve çalıştırmak için gereken tüm yardımcı programları içerir.
Önkoşullar
- 64 bit Linux'lu bilgisayar.
- Android Studio (dağıtımınızın paket yöneticisinden de yüklenebilir.
- Android platform araçlarının (
adb
,fastboot
) yüklü olması ve$PATH
dosyanızda olması gerekir (yaniadb
komut satırından çalıştırabilmeniz gerekir). 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'inize 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. Hedef Android cihazının mimarisine bağlı olarak iskelet testini oluşturmak için assembleSTSARM
veya assembleSTSx86
derleme hedefini çalıştırın. Bağlı cihazda iskelet testini çalıştırmak için runSTS
derleme hedefini çalıştırın (ADB'nin yetkilendirilmesi gerekir).
Gradle'ı kullanmaya başlayın
Arşivi çıkardıktan sonra, Gradle projesinin kökündeki local.properties
dosyasında sdk.dir
özelliğini ayarlayın, ardından iskelet testini oluşturmak için assembleSTSARM
Gradle görevini çalıştırın. Derleme tamamlandıktan sonra test, ( cd
) build/android-sts/tools
dosyasına giderek ve sts-tradefed
sarmalayıcıyı çalıştırarak ç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
Bir STS testi yazın
Bir STS testinin üç bölümü vardır:
-
sts-test
alt dizinindeki adb aracılığıyla cihazla etkileşime giren ana bilgisayar tarafı Tradefed testi. - Cihaza
adb push
aracılığıyla gönderilen venative-poc
alt dizinindeki ana bilgisayar tarafı testi tarafından yürütülen, isteğe bağlı bir yerel kavram kanıtlama saldırısı. -
adb install
aracılığıyla cihaza 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 aynı zamanda ana bilgisayar tarafındaki çalıştırıcıya bildirilen kendi JUnit iddiaları kümesini de içerebilir. Bu,test-app
alt dizinindedir.
Tipik bir STS test akışı genellikle iki modelden birini takip eder:
Yerel kavram kanıtı:
- Ana bilgisayar tarafı testi, cihazda yerel bir yürütülebilir dosyayı iter ve başlatır.
- Yerel program çöküyor veya belirli bir çıkış kodu döndürüyor.
- Ana bilgisayar tarafı testi çökmeleri kontrol eder, logcat geri izlemesine bakar veya saldırının başarılı olup olmadığını belirlemek için belirli çıkış kodunu arar.
Enstrümantal test uygulaması:
- Ana bilgisayar tarafı testi, bir uygulama veya hizmetten oluşan bir APK'yı cihaza aktarır.
- Ana bilgisayar tarafı testi,
runDeviceTest()
aracılığıyla APK ile birlikte verilen cihaz tarafı JUnit testlerini başlatır. - Cihaz tarafındaki JUnit testleri, düğmelere dokunmayı ve UIAutomator kullanarak uygulamayı izlemeyi veya Android sistemine güvenlik açıklarını ortaya çıkaracak şekilde erişmeyi test ediyor.
- Cihaz tarafı JUnit testlerinin başarısı veya başarısızlığı, testin başarılı olup olmadığını belirlemek için kullanılabilen ana bilgisayar tarafı testine döndürülür.
İki modelin bir kombinasyonu (örneğin, yerel bir programın cihaz tarafı testleriyle birlikte çalıştırılması) da 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.
Konsept kanıtı saldırımın bir test uygulamasına ve/veya yerel yürütülebilir dosyaya ihtiyacı yok
Çoğu testin hem cihaz tarafında bir uygulamaya hem de yerel bir yürütülebilir dosyaya ihtiyacı olmayacaktır.
Testiniz cihazdaki bir uygulamanın/hizmetin kullanımını içermiyorsa test-app
alt dizinini silmeniz yeterlidir. Benzer şekilde, testiniz yerel bir yürütülebilir dosya kullanmıyorsa, native-poc
alt dizinini silin ve ardından projeyi Gradle ile senkronize edin. Proje, mevcut olmadığında bu modüllerin oluşturulmasını otomatik olarak atlayacak şekilde ayarlanmıştır.
Kavram kanıtı saldırım ikinci bir uygulamayı/hizmeti içeriyor
Öncelikle ikinci uygulamanız/hizmetiniz için projenize yeni bir Modül ekleyin ve bunu diğer APK'larda yaptığınız gibi yazın.
Daha sonra bu dizinin kökündeki build.gradle
düzenleyin ve copyArtifacts
, assembleStsARM
ve assembleStsx86
içindeki talimatları izleyerek modülünüzü ekleyin. Bu, derlenen APK'nın STS'nin çıkış dizinine kopyalanmasını sağlayacak ve testten yeni uygulamanın yüklenmesini/çağrılmasını mümkün kılacaktır.
Son olarak projeyi Gradle ile senkronize edin.
STS testinin gönderilmesi
zipForSubmission
görevini çalıştırın (Android Studio ile veya komut satırındaki Gradle ile). Projenin kökündeki build
dizininde codesubmission.zip
yeni bir dosya oluşturulmalıdır. Bu dosyayı Android Güvenlik Açığı Ödül Programına gönderdiğiniz dosyayla birlikte yükleyin.