Au mois d'août dernier fut publié l'outil « Revolutionary » [1], permettant à tout un chacun d'installer une ROM alternative sur les téléphones HTC. Celui-ci exploite entre autres une vulnérabilité dans la bibliothèque « libsysutils.so » afin d'obtenir les droits « root » sur le smartphone. Nous verrons en quoi consiste cette vulnérabilité, et comment l'exploiter malgré les protections mises en œuvre sur Android.
1. La vulnérabilité
1.1 Détails
La fonction FrameworkListener::dispatchCommand du fichier FrameworkListener.cpp contient une vulnérabilité de type débordement de tampon dans la pile. Une version toujours vulnérable de ce fichier est disponible sur Internet [2].
Cette fonction est chargée de traiter une commande passée en paramètre sous la forme d'une chaîne de 255 caractères maximum afin de la transformer en tableau d'arguments. Chaque argument est séparé par un espace et ce tableau d'arguments est défini dans la pile comme suit :
void FrameworkListener::dispatchCommand(SocketClient *cli, char *data) {
int argc = 0;
char *argv[FrameworkListener::CMD_ARGS_MAX];
char tmp[255];
char *p = data;
char *q = tmp;
while(*p) {
...
*q = *p++;
if (!quote && *q == ' ') {
*q = '\0';
argv[argc++] = strdup(tmp);
memset(tmp, 0, sizeof(tmp));
q = tmp;
- Accédez à tous les contenus de Connect en illimité
- Découvrez des listes de lecture et des contenus Premium
- Consultez les nouveaux articles en avant-première