Saltar a contenido

Debug Symbols Present in the Android Application

Símbolos de depuración presentes en la aplicación de Android

Descripción

La aplicación se distribuye con símbolos de depuración e información de depuración, como información de depuración, números de línea y nombres descriptivos de funciones o métodos, lo que facilita la ingeniería inversa.

Cabe destacar que la mayoría de las herramientas de reporte de fallos (crash reporting) admiten la carga de símbolos para realizar la simbolización del seguimiento de pila (stack trace) y no requieren que los símbolos estén presentes en la aplicación.

Para verificar que las bibliotecas nativas no se distribuyan con símbolos de depuración, use el siguiente comando:

readelf --debug-dump=info <library>

Recomendación

Elimine todos los símbolos y datos de depuración de la aplicación.

Para hacerlo, aquí hay algunas recomendaciones:

  • Configure el tipo de compilación (build type) para excluir la información de depuración compilando en modo de lanzamiento (release mode).
  android {
      ...
      buildTypes {
          release {
              debuggable false
              ...
          }
      }
  }
  • Use ProGuard para eliminar los símbolos de depuración nativos.
buildTypes {
        ...
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            ...
        }
    }
  • Use el comando strip para eliminar los símbolos de las bibliotecas nativas:
strip -s <library>

Enlaces

Estándares

  • OWASP_MASVS_L1:
    • MSTG_CODE_3
  • OWASP_MASVS_L2:
    • MSTG_CODE_3
  • PCI_STANDARDS:
    • REQ_2_2
    • REQ_6_2
  • OWASP_MASVS_v2_1:
    • MASVS_RESILIENCE_3
  • HIPAA_CONTROLS:
    • SECURITY212
    • SECURITY213