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$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.
- 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 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:
-
sts-test
alt dizininde adb aracılığıyla cihazla etkileşime giren ana bilgisayar tarafında bir Tradefed testi. -
adb push
yoluyla cihaza aktarılan venative-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ı. - 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ı:
- 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, 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.