Des clés secrètes pour Uber, AWS et d'autres entreprises exposées dans de nombreuses applications Android
Après la réalisation d'ingénierie inverse

Le , par Olivier Famien, Chroniqueur Actualités
Pour analyser le code source des applications compilées, les développeurs ont généralement recours à l’ingénierie inverse si le code n’est pas directement disponible. Cette méthode, bien que décriée par certains, permet de reconstituer le code source d’un programme compilé afin de l’analyser plus en profondeur. Spécialisée dans la sécurité des API et des technologies cloud, l’entreprise Fallible examine couramment pour le compte de ses clients le code source des applications Android en appliquant cette méthode.

Depuis novembre dernier, l’entreprise Fallible a décidé d’automatiser cette tâche eu égard aux sollicitations qui se sont faites croissantes. Pour cela, elle a conçu et mis en ligne un outil permettant de faire de l’ingénierie inverse sur n’importe quelle application Android. Quelques mois après la publication de cet outil sur la toile, les utilisateurs s’en sont servis pour réaliser de l’ingénierie inverse sur environ 16 ;000 applications.

En examinant le code de ces applications, plusieurs découvertes ont été effectuées. Sur les 16 ;000 applications examinées, environ 2 ;500 ont soit une clé soit une clé secrète de service tiers codée en dur dans l’application. Par ailleurs, même s’il est normal pour les applications d’intégrer des clés comme par exemple la clé de l’API Google pour utiliser les services de l’entreprise, les développeurs de l’entreprise ont découvert la présence de nombreuses clés secrètes d’API qui n’avaient finalement pas leur place dans ces applications.

Selon Fallible, ces clés secrètes appartiennent à divers services tiers comme celui d’Uber qui peut être utilisé pour envoyer une notification à partir de l’application Uber. À côté d’Uber, les ingénieurs ont également découvert des clés secrètes d’Amazon Web Service (AWS) également codées en dur dans les applications. Et le plus intrigant, selon Fallible, est que certaines de ces clés secrètes avaient des privilèges complets pour créer ou supprimer des instances.

Pour donner une idée des clés secrètes trouvées dans ces applications, Fallible a publié la liste ci-dessous.

Généralement, les propriétaires des applications ne souhaitent pas que l’on réalise de l’ingénierie inverse sur leurs applications au risque de trouver des choses que l’on ne souhaite pas faire connaître au public. Et c’est ce qui a certainement poussé Mary Ann Davidson, la directrice de la sécurité d’Oracle, à affirmer il y a quelques années qu'un client n’a pas le droit d’appliquer l’ingénierie inverse sur ses produits. Et même s’il trouvait des failles dans le code source d’un produit Oracle en appliquant cette méthode, il lui sera simplement rappelé en guise de remerciement que « ;le client ne saurait faire du reverse engineering, désassembler, décompiler ou alors tenter de dériver le code source des programmes... ;», tout en insistant sur le fait qu’il devra détruire les résultats de cette ingénierie inversée et confirmer qu’il l’a fait.

Bien entendu, si Fallible a pu découvrir de nombreuses clés ou jetons d’API et clés secrètes dans ces applications il est clair qu’elles peuvent se retrouver dans n’importe quel produit. Pour inciter à de bonnes pratiques, Fallible recommande aux développeurs de bien réfléchir avant de coder en dur les jetons et clés d’API dans les applications.

Aux services tiers, l’entreprise leur recommande de préconiser aux développeurs de ne pas mettre de clés secrètes directement dans les applications, mais plutôt de créer plusieurs clés secrètes d’API avec différentes portées.

Source : Hackernoon

Et vous ?

Qu’en pensez-vous ;?

Voir aussi

« Vous n'avez pas le droit d'appliquer le reverse engineering sur notre code », le coup de gueule de la directrice de la sécurité d'Oracle

La Rubrique Sécurité, Forum Sécurité, Cours et tutoriels Sécurité, FAQ Sécurité


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de Thorna Thorna - Membre éprouvé https://www.developpez.com
le 18/01/2017 à 8:45
Hum, voyons... La clef secrète, ce n'est pas celle qui doit rester... secrète ? Soigneusement planquée sur le serveur, disponible pour personne ? Alors que celle qu'on donne à tout le monde, c'est la clef publique ?
J'aimerais biren qu'on m'explique pourquoi une appli, qui cause à un serveur, a besoin d'une clef secrète ! Elle utilise la clef publique du serveur pour lui envoyer en toute sécurité ce qu'elle veut, non ? Et si le serveur veut renvoyer en échange des trucs sans qu'on le sache, l'appli lui file discrètement une clef symétrique et le tour est joué.
Je vois que les spécialistes en sécurité sont toujours aussi présents dans les applis du monde internet et mobile, ça fait plaisir de savoir que nos données personnelles, nos messages et nos petits secrets sont toujours et de mieux en mieux protégés.
Avatar de youtpout978 youtpout978 - Membre expert https://www.developpez.com
le 18/01/2017 à 8:58
J'accède à une api externe et pour cela j'ai besoin d'une clé unique qui m'est attribué et qui ne change pas, malheureusement le seul moyen de cacher cette clé est de créer ma propre api qui elle encapsule cette clé, dont ça engage des coûts si je ne veux pas stocker directement la clé dans l'application ...
Avatar de Tagashy Tagashy - Membre actif https://www.developpez.com
le 18/01/2017 à 8:59
en gros si j'ai bien compris, Faillible a juste mis en ligne un decompilateur java (enfin avec une ou deux étapes supplémentaire mais en 5 minute n'importe quel novice peut récupérer le code source d'une appli android (a l’exception du native code)) comme il en existe depuis des années YOUPI ...
@Thorna je pense qu'il s'agit de clé juste pour accéder a L’API comme c'est le cas pour les API payante (je pense au lecteur vidéo de wakanim par exemple ou la clé est coder en dur mais sur le serveur) par contre des clé AWS WTF
Avatar de Squisqui Squisqui - En attente de confirmation mail https://www.developpez.com
le 18/01/2017 à 10:09
Citation Envoyé par youtpout978 Voir le message
J'accède à une api externe et pour cela j'ai besoin d'une clé unique qui m'est attribué et qui ne change pas, malheureusement le seul moyen de cacher cette clé est de créer ma propre api qui elle encapsule cette clé, dont ça engage des coûts si je ne veux pas stocker directement la clé dans l'application ...
C'est ce qu'on appelle "prioriser". Si la sécurité n'est pas une priorité pour toi, alors ne protège pas ta clé, c'est aussi simple que ça.
Avatar de youtpout978 youtpout978 - Membre expert https://www.developpez.com
le 18/01/2017 à 10:19
Citation Envoyé par Squisqui Voir le message
C'est ce qu'on appelle "prioriser". Si la sécurité n'est pas une priorité pour toi, alors ne protège pas ta clé, c'est aussi simple que ça.
Disons que tant que mon application n'est que sur Windows Phone ça va, mais dès que je vais la sortir sur Android, là je serais obligé de mettre la clé ailleurs vu comme il est facile d'accéder au code d'une application Android, la meilleure solution reste de créer mon propre service mais suivant le taux d'adoption il me faudra une infra qui tiennent le choc.
Avatar de yapiti yapiti - Membre du Club https://www.developpez.com
le 18/01/2017 à 11:00
Sinon on peut aussi offusquer ses clés privé pour décourager les hackers.
Pour moi le plus efficace serait de stocker en dur sa clé, chiffrée, dans une lib native => https://www.androidsecurity.info/201...on-in-the-ndk/ (et de la déchiffrer dans la lib native)
Avatar de hotcryx hotcryx - Membre extrêmement actif https://www.developpez.com
le 18/01/2017 à 11:16
Citation Envoyé par Squisqui Voir le message
C'est ce qu'on appelle "prioriser". Si la sécurité n'est pas une priorité pour toi, alors ne protège pas ta clé, c'est aussi simple que ça.
Prioritiser, tu veux dire?
Avatar de marsupial marsupial - Membre émérite https://www.developpez.com
le 18/01/2017 à 12:40
Par les temps qui courent, la sécurité devraient être loin du cadet des soucis de quiconque. Moi pas (vouloir) comprendre.
Avatar de Aiekick Aiekick - Membre chevronné https://www.developpez.com
le 18/01/2017 à 12:47
Quand ils nous parles de clef secrete c'est quoi par exemple ? parce que pour les application android, des qu'on veut un service comme une regie pub, un service d'analyse de bug, de reporting etc, on a des clef d'acces aux api qui sont codés en dur dans le soft..si c'est de ca qu'on parle je vois pas bien ce qu'on peut y faire.

Citation Envoyé par Thorna Voir le message

J'aimerais bien qu'on m'explique pourquoi une appli, qui cause à un serveur, a besoin d'une clef secrète ! Elle utilise la clef publique du serveur pour lui envoyer en toute sécurité ce qu'elle veut, non ? Et si le serveur veut renvoyer en échange des trucs sans qu'on le sache, l'appli lui file discrètement une clef symétrique et le tour est joué.
Je ne comprends pas, ta clef symmetrique serait codé en dur dans l'app, c'est pas le meme probleme ?
Avatar de marsupial marsupial - Membre émérite https://www.developpez.com
le 18/01/2017 à 12:57
Citation Envoyé par yapiti Voir le message
Sinon on peut aussi obfusquer ses clés privé pour décourager les hackers.
Pour moi le plus efficace serait de stocker en dur sa clé, chiffrée, dans une lib native => https://www.androidsecurity.info/201...on-in-the-ndk/ (et de la déchiffrer dans la lib native)
MIAMM
Contacter le responsable de la rubrique Accueil