23 points par xguru 2024-11-06 | 1 commentaires | Partager sur WhatsApp
  • Il y a quelque temps, une vulnérabilité d’injection JSON sur des appareils Samsung permettait de déclencher une chaîne d’attaque allant jusqu’à l’exécution de code sur l’appareil
  • Cela peut servir de leçon sur la manière dont des API qui font aveuglément confiance au JSON d’un payload peuvent être exploitées

Injecter « intelligemment » dans tout

  • Dans le cas du Samsung Smart Hub, l’application mobile pouvait communiquer à distance avec le hub pour contrôler tout ce qui y était connecté
  • En envoyant une requête POST malveillante vers l’endpoint /credentials, il était possible de modifier les identifiants utilisés par le hub pour se connecter à un serveur distant et d’altérer les données, ce qui pouvait mener à une injection SQL
  • La bibliothèque json-c utilisée par Samsung était compilée avec JSON_TOKENER_STRICT=0, ce qui permettait de définir les chaînes avec des guillemets simples comme doubles
  • Cela permettait à un attaquant de créer des colonnes personnalisées dans la base de données sqlite interne du hub
  • En insérant ensuite une chaîne ROP excessivement longue dans la table camera, puis en envoyant un DELETE vers l’endpoint /cameras, on pouvait faire planter le processus video-core lorsqu’il tentait de lire les données, provoquant un buffer overflow classique basé sur la pile
  • La leçon à retenir ici était : injection JSON → injection SQL → buffer overflow → ROP = compromission

Qu’est-ce que l’injection JSON ?

  • L’injection JSON est une vulnérabilité qui consiste à insérer des données malveillantes dans un flux JSON afin de modifier le comportement d’une application ou de déclencher des actions non prévues
  • L’injection JSON côté serveur se produit lorsque des données provenant de sources non fiables ne sont pas correctement assainies côté serveur avant d’être utilisées directement ou indirectement dans du code

Le problème vient des parseurs

  • Dans les applications web modernes et les API, plusieurs parseurs peuvent être utilisés dans le pipeline de requête, chacun avec ses caractéristiques et ses vulnérabilités propres
  • La combinaison des divergences entre parseurs et du traitement des requêtes en plusieurs étapes peut entraîner des vulnérabilités graves
  • Les parseurs JSON font face à des difficultés parce que la RFC JSON officielle laisse ouverts certains sujets, comme les clés dupliquées ou la représentation des nombres
  • La RFC officielle n’est pas la seule spécification : il existe aussi ECMAScript, JSON5, HJSON et Binary JSON(BSON)
  • L’interopérabilité entre parseurs expose des risques de sécurité dont beaucoup ignorent même l’existence

Problèmes de sécurité liés à l’interopérabilité des parseurs JSON

  • Divergences dans la manière de traiter les clés dupliquées
  • Divergences dans la manière de traiter les caractères spéciaux ou les commentaires
  • Divergences dans la (dé)sérialisation JSON

Comment exploiter le JSON ?

  • En manipulant le JSON, on peut injecter des données afin que l’application se comporte d’une manière que les développeurs n’avaient pas anticipée
  • Lorsqu’il est possible de manipuler la façon dont les données traversent les composants au sein de l’infrastructure d’API, des opportunités apparaissent pour contrôler la logique métier
  • En comprenant comment les parseurs traitent les entrées, il devient possible de contourner la validation des entrées en exploitant leur comportement pour leur faire interpréter les données d’une manière qui permet leur manipulation

Conclusion

  • L’attaque contre Samsung Smart Hub n’est qu’un exemple montrant comment une injection JSON peut déboucher sur une chaîne de vulnérabilités complexe, allant de l’injection SQL jusqu’à l’exécution de code à distance
  • La cause profonde réside souvent dans les divergences de traitement des données par les parseurs JSON, en particulier lorsque plusieurs parseurs atypiques sont impliqués
  • En inspectant en profondeur la manière dont les objets JSON sont sérialisés, désérialisés et traités, on peut découvrir comment construire des payloads capables de contourner les filtres d’assainissement et d’influencer la logique métier
  • Puisque les API continuent de constituer la pierre angulaire des applications modernes, il est plus important que jamais de garantir la sécurité de leur manière de traiter les données

1 commentaires

 
yangeok 2024-11-08

Il va falloir être très strict sur la validation des données reçues dans le body JSON.