La Federación de Comercio de paquetes de pruebas de seguridad (sts-tradefed) se basa en Federación de Comercio de Android agente de prueba para probar la seguridad de todos los dispositivos Android pruebas de parches que no están incluidas en el Conjunto de pruebas de compatibilidad. Estas pruebas son exclusivamente para correcciones que están asociadas (o se asociarán) con un Vulnerabilidades y exposiciones comunes (CVE).
El SDK permite desarrollar pruebas de STS fuera del árbol de fuentes de Android con Android Studio o el SDK estándar de Android. Incluye todas las utilidades necesarios para compilar y ejecutar una prueba de STS.
Obtén el SDK de STS más reciente
Requisitos previos
- PC con Linux de 64 bits.
- Android Studio (también se puede instalar) del administrador de paquetes de tu distribución.
- Herramientas de la plataforma de Android
(
adb
,fastboot
) deben estar instalados en tu$PATH
(es decir, debería poder ejecutaradb
desde la línea de comandos). La forma más fácil de instales las herramientas de la plataforma es mediante el administrador de paquetes de tu distribución.- Si se usa SDK Manager de Android Studio en lugar de la plataforma independiente
recuerda agregar el directorio
platform-tools
del SDK a tu $PATH.
- Si se usa SDK Manager de Android Studio en lugar de la plataforma independiente
recuerda agregar el directorio
- aapt. que también se puede instalar a través del administrador de paquetes de tu distribución.
Comienza a usar Android Studio
Después de extraer el archivo, abre el directorio en Android Studio como
proyecto existente. Ejecuta el destino de compilación assembleSTSARM
o assembleSTSx86
para
compilar la prueba de estructura, según la arquitectura del dispositivo Android de destino
dispositivo. Ejecuta el destino de compilación runSTS
para ejecutar la prueba de esqueleto en el servidor
(ADB debe estar autorizado).
Cómo comenzar a usar Gradle
Después de extraer el archivo, configura la propiedad sdk.dir
en
local.properties
en la raíz del proyecto de Gradle y, luego, ejecuta el
assembleSTSARM
Tarea de Gradle para compilar la prueba de estructura. Una vez que la compilación
finalizado, la prueba se puede ejecutar navegando (cd
) hacia
build/android-sts/tools
y ejecución del wrapper sts-tradefed
$ echo 'sdk.dir=/home/<myusername>/Android/Sdk' > local.properties
$ ./gradlew assembleSTSARM
$ cd build/android-sts/tools
$ ./sts-tradefed run sts-dynamic-develop -m hostsidetest
Escribe una prueba de STS
Una prueba de STS consta de las siguientes tres partes:
- Una prueba Tradefed del lado del host que interactúa con el dispositivo a través de adb, en el
Subdirectorio
sts-test
. - Un ataque de prueba de concepto nativo opcional que se envía al
mediante
adb push
, y lo ejecuta la prueba del host en la Subdirectorionative-poc
. - Una app o un APK de servicio opcional que se instala en el dispositivo mediante
adb install
y que también se inicia mediante la prueba del host. La app o servicio también puede contener su propio conjunto de aserciones JUnit que se informa al ejecutador del lado del host. Se encuentra en el subdirectoriotest-app
.
Un flujo de prueba de STS típico suele seguir uno de estos dos patrones:
Prueba de concepto nativa:
- La prueba del lado del host envía e inicia un ejecutable nativo en el dispositivo.
- El programa nativo falla o devuelve un código de salida específico.
- La prueba del host comprueba si hay fallas, observa el backtrace de logcat o busca el código de salida específico para determinar si el ataque sin errores.
App de prueba de instrumentación:
- La prueba del lado del host envía un APK compuesto por una app o un servicio al el dispositivo.
- La prueba del host inicia las pruebas JUnit del dispositivo que se incluyen
con el APK hasta el
runDeviceTest()
- Las pruebas JUnit del dispositivo presionan los botones y observan la app con UIAutomator o acceder de otra manera al sistema Android de formas que revelar las vulnerabilidades de seguridad.
- El éxito o fracaso de las pruebas JUnit del dispositivo se devuelve a la prueba del lado del host, que puede usarse para determinar si la prueba fue exitosa o no.
Una combinación de los dos patrones (por ejemplo, ejecución de un programa nativo en
en conjunto con pruebas del lado del dispositivo). Otra instrumentación
de seguridad, como frida-inject
, también están disponibles.
Para obtener más información, consulta la
Documentos de referencia del paquete de pruebas de seguridad y la
Documentos de referencia de Tradefed.
Mi ataque de prueba de concepto no necesita una app de prueba ni un ejecutable nativo
La mayoría de las pruebas no necesitarán una app del dispositivo y un ejecutable nativo.
Si tu prueba no implica el uso de una app o servicio en el dispositivo, simplemente borra
el subdirectorio test-app
. Del mismo modo, si tu prueba no usa
ejecutable, borra el subdirectorio native-poc
y, luego, sincroniza Gradle el proyecto.
El proyecto está configurado para omitir automáticamente la compilación de esos módulos cuando
existen.
Mi ataque de prueba de concepto involucra una segunda aplicación o servicio
Primero, agrega un módulo nuevo a tu proyecto para tu segunda app o servicio y escribe del mismo modo que lo harías con cualquier otro APK.
A continuación, edita build.gradle
en la raíz de este directorio y agrega tu módulo
siguiendo las instrucciones de copyArtifacts
, assembleStsARM
y
assembleStsx86
Esto garantizará que el APK compilado se copie en el resultado.
de STS y habilita la instalación o la llamada de la app nueva desde la prueba.
Por último, sincroniza el proyecto con Gradle.
Envía la prueba de STS
Ejecuta la tarea zipForSubmission
(ya sea con Android Studio o con Gradle en la
línea de comandos). Se debe crear un archivo nuevo, codesubmission.zip
, en build
en la raíz del proyecto. Sube ese archivo junto con tu
al Programa de recompensas por detección de vulnerabilidades de Android.