[Contribution] Synology : injection de code JavaScript – XSS

03
avril
2015
  • Google Plus
  • LinkedIn
  • Viadeo
Posted by: Yann C.  /   Category: Contributions / Vulnérabilités, exploits et PoC / XSS   /   Pas de commentaire

Un sous domaine de synology.com présente une vulnérabilité d’injection de code JavaScript réfléchi (XSS Reflected) lors des échanges des protocoles d’autorisation (OAuth) suite à la mise en place du paquet « CloudSync ».

Synology est un fournisseur d’équipements de stockage accessibles sur le réseau (NAS) d’une grande qualité et avec une multitude de fonctionnalités. J’affectionne tout particulièrement leurs produits et c’est en ce sens qu’à la suite de la découverte d’une vulnérabilité sur leur plateforme, ils ont pu corriger l’injection.

Les NAS Synology sont équipés d’un OS basé sur Linux/Unix et d’une surcouche web pour la gestion et le paramétrage aisé du NAS. Cette interface se nomme le « DSM ».

DSM Synology

DSM Synology

Au travers du DSM (système d’exploitation haut-niveau en mode web), il est possible de configurer l’ensemble du produit, d’y ajouter des paquets, outils et fonctionnalités développés par l’éditeur et la communauté.

Parmis l’ensemble des paquets disponibles et certifiés officiels (phpMyAdmin, VPN Server, Annuaire, SMTP…) l’un d’eux se nomme « CloudSync« .

With Cloud Sync, you can seamlessly sync and share files among your DiskStation and multiple public clouds, such as Dropbox, Baidu Cloud and Google Drive.

Las d’avoir plusieurs agents / démons qui se lançaient au démarrage de mes machines pour mettre à jour les divers clouds que j’utilise (DropBox, GDrive, SkyDrive, CloudStation, …), je me suis intéressé à ce paquet fort utile, qui permet de « remonter » la synchronisation des clouds publics directement dans le Synology. C’est donc le NAS qui s’occupe de synchroniser les divers clouds publics et de mon côté, je n’ai plus qu’un seul agent cloud à déployer sur mes postes : CloudStation (le cloud local/privatif de Synology lui-même).

Paramétrage de CloudSync dans le DSM

Paramétrage de CloudSync dans le DSM

En ajoutant un nouveau cloud public à synchroniser dans CloudSync (en cliquant sur le « + » en bas à gauche de la capture précédente), une fenêtre s’ouvre dans votre navigateur à destination du domaine « update.synology.com » afin de synchroniser votre compte « cloud public » avec votre compte Synology.

Des échanges de protocoles d’autorisations (OAuth) s’exécutent et des va-et-vient entre le domaine « update.synology.com » et les services du cloud public (DropBox, Google Drive, etc.) sont réalisés.

C’est au cours de ces échanges qu’une page du sous domaine « update.synology.com » résume les permissions requises pour autoriser Synology à se connecter au cloud public à synchroniser ; et qu’une injection XSS réfléchie en résulte :

update.synology.com RXSS

update.synology.com RXSS

L’URL d’illustration du PoC :

https://update.synology.com/CloudSync/db.php?state=https%3A%2F%2Fwww.asafety.fr<script>alert('Reflected XSS - Yann CAM @ASafety');</script>&code=pIBf5bHN8zMAAAAAAAABRU0-iCumtCrexU63hCMeguX

Le traitement, l’échappement, l’encodage et/ou le nettoyage de la variable GET « state » n’était pas convenablement réalisé avant de réinjecter la valeur dans le code source de la page :

RXSS update.synology.com source code

RXSS update.synology.com source code

Une telle injection, opérant au sein des pages et échanges de protocoles d’autorisation aurait-pu s’avérer critique pour les crédentiels et données personnelles des utilisateurs.

Après plusieurs échanges avec les équipes en charge de la sécurité des services Synology, la vulnérabilité a finalement été corrigée :

Hi ,

Thank you for the waiting.

We have confirmed this Reflected XSS vulnerability on the update.synology.com sub-domain has been fixed and could you please kindly check if this issue persists?

Thank you again for your cooperation.

La variable « state » est à présent protégée d’injection arbitraire :

RXSS update.synology.com patched

RXSS update.synology.com patched

L’application de « htmlentities » ou « htmlspecialchars » assure la protection dans le code source :

RXSS update.synology.com patched source code

RXSS update.synology.com patched source code

Je salue les équipes sécurité de Synology pour leur amabilité, leur intérêt et leur efficacité de correction. J’en profite pour les remercier de la qualité des produits et services qu’ils proposent.

Sources & ressources :

  • Google Plus
  • LinkedIn
  • Viadeo
Yann C.

About the Author : Yann C.

Consultant en sécurité informatique et s’exerçant dans ce domaine depuis le début des années 2000 en autodidacte par passion, plaisir et perspectives, il maintient le portail ASafety pour présenter des articles, des projets personnels, des recherches et développements, ainsi que des « advisory » de vulnérabilités décelées notamment au cours de pentest.