Cambios en el sistema de archivos de Android Nougat

Desde el primer lanzamiento de la vista previa de desarrolladores de Android N, obtengo errores de "permiso denegado" al intentar enumerar el directorio raíz u otros directorios del sistema. Los permisos en estos directorios no parecían cambiar (por lo que puedo decir).

Pregunta:

¿Qué cambios en Android N causaron estos errores de permiso denegado?


Cómo replicar:

En el shell ADB, ejecute los siguientes comandos:

run-as com.debuggable.packagename ls / 

Esto da permiso para denegar errores en Android N.


Por qué listar los directorios del sistema:

Me di cuenta de este comportamiento en Android N con varios administradores de archivos. Ya no podrían enumerar el directorio raíz u otros archivos del sistema. Esto también está limitando la salida de ejecutar ps en un shell. Los cambios también causaron que esta biblioteca dejara de funcionar en Android N.

    2 Solutions collect form web for “Cambios en el sistema de archivos de Android Nougat”

    Hubo dos grupos de cambios que reducen el acceso a / proc.

    El sistema de archivos procfs ahora está montado con hidepid = 2, eliminando el acceso a los directorios / proc / PID de otros usuarios. Este cambio se implementó en CopperheadOS y luego se adoptó en sentido ascendente basado en él. Hay un grupo para hacer excepciones pero no está expuesto como un permiso. Sólo se utiliza para hacer excepciones para algunos procesos en el sistema base. Se podría exponer como un permiso "peligroso" y es lo que esperaba que Google acabaría haciendo, pero decidieron que los usuarios no entenderían las implicaciones de la misma.

    https://android-review.googlesource.com/#/c/181345/

    Las políticas de SELinux también se hicieron mucho más estrictas. En el caso de las aplicaciones, ya no hay acceso básico a / proc, aunque sólo se aplica a los archivos que no sean los directorios / proc / PID. Todavía hay acceso a algunos archivos con etiquetas que no están incluidas en la política general de proc, pero en su mayoría se ha ido. Esto ha sido gradual y hay muchos commits relevantes. Uno de los grandes:

    https://android-review.googlesource.com/#/c/105337/

    Esto no sólo elimina una gran cantidad de información obvia, sino que también cierra algunos agujeros de seguridad más flagrantes que implican canales laterales que permiten cosas como registrar la entrada de teclado:

    Las políticas de SELinux también se han vuelto mucho más estrictas en general con el tiempo. Puedes ver el resto de eso en el repositorio plataforma / sistema / sepolicy . Tenga en cuenta que fue en la plataforma / external / sepolicy por un largo tiempo, pero se ha movido recientemente.

    Esto se hizo por razones de seguridad y privacidad . Desde el informe de errores:

    En el caso de los sistemas de archivos raíz (/) y / sys, no es posible una lista de directorios.

    La respuesta oficial de Google:

    El comportamiento que está describiendo funciona correctamente. Android proporciona cajas de seguridad estrictas en las que deben ejecutarse las aplicaciones. Estas cajas de seguridad protegen los datos de aplicaciones de otras aplicaciones, incluidos los metadatos de las aplicaciones, como el estado del proceso.

    / Sys y / proc son bien conocidos por la filtración de la información del canal lateral sobre los procesos, información que se puede utilizar para inferir el estado sobre los procesos. Por ejemplo, se ha documentado durante años que el acceso a / proc se puede utilizar para supervisar el lanzamiento de aplicaciones, lo que permite ataques de phishing.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.