Définition : qu’est-ce qu’une sandbox ?

Dans le monde de la cybersécurité, un environnement "sandbox" est une machine virtuelle isolée dans laquelle un code logiciel potentiellement dangereux peut s'exécuter sans affecter les ressources du réseau ou les applications locales.

Les chercheurs en cybersécurité utilisent les sandboxes pour exécuter du code suspect à partir de pièces jointes et d'URL inconnues et observer son comportement. Les signes révélateurs d’un code malveillant comprennent la réplication du code, les tentatives de contact avec un serveur de commande et de contrôle, le téléchargement de logiciels supplémentaires, les tentatives de chiffrement de données sensibles, etc.

Comme le sandbox est un environnement émulé sans accès au réseau, aux données ou à d'autres applications, les équipes de sécurité peuvent "faire exploser" le code en toute sécurité pour déterminer comment il fonctionne et s'il est malveillant.

En dehors de la cybersécurité, les développeurs utilisent également des environnements de test de sandbox pour exécuter le code et le vérifier avant son déploiement à grande échelle.

À quoi sert une sandbox ?

Dans un environnement de production commerciale standard, une sandbox peut être mal comprise ou considérée comme une dépense inutile.

Mais les sandboxes sont essentielles pour plusieurs scénarios dans les domaines du développement, de la cybersécurité et de la recherche.

Il est plus important de s'assurer que la sandbox est réellement isolée et sécurisée dans la recherche sur la cybersécurité que dans le développement de logiciels, car les logiciels malveillants analysent activement et agressivement le réseau à la recherche de vulnérabilités exploitables.

Dans le développement (logiciels, applications, etc.)

Dans le domaine du développement, une sandbox comprend généralement un serveur de développement et un serveur de staging.

Le serveur de développement est séparé de l'environnement de production, mais peut toujours nécessiter un accès de base au réseau. Les développeurs utilisent ce serveur pour télécharger du code et le tester au fur et à mesure que la base de code change.

Le serveur de staging est conçu pour être une réplique exacte de la production. C'est sur ce serveur que le contrôle qualité (QA pour Quality Assurance) teste le code avant de le déployer en production.

Comme l'environnement de staging est le même que celui de production, le code qui fonctionne sans problème sur le staging devrait fonctionner sans problème en production. Une fois le code testé, il est déployé en production.

Dans la recherche sur la cybersécurité

Les chercheurs et les analystes en cybersécurité utilisent leur environnement de sandbox de la même manière.

Mais dans ce cas, il est beaucoup plus important de s'assurer qu'aucune ressource du réseau n'est accessible aux logiciels malveillants.

L'environnement "sandbox" possède son propre réseau et n’a souvent aucune connexion physique avec les ressources de production. Le but de l'environnement "sandbox" est d'exécuter un code malveillant et de l'analyser.

Parfois, ce code peut être un exploit de type "zero-day" pour lequel on ne connaît ni effet ni la charge utile du malware. Pour cette raison, la sandbox ne doit pas avoir accès aux infrastructures critiques.

Avec une sandbox, les chercheurs et les analystes en cybersécurité peuvent comprendre le fonctionnement des logiciels malveillants et ce qui peut être fait pour les arrêter.

C'est la première étape de la conception d'un logiciel antivirus pour empêcher les logiciels malveillants de se propager à d'autres systèmes et pour les supprimer des systèmes déjà infectés.

Pour les attaques complexes, des environnements de type "sandbox" sont facilement disponibles pour analyser rapidement les logiciels malveillants et les arrêter avant qu'ils ne deviennent un problème mondial. Les ransomwares, par exemple, peuvent se propager dans le monde entier et faire crasher des systèmes gouvernementaux essentiels. Il est donc important que les chercheurs disposent de sandboxes facilement accessibles pour les arrêter.

Comment fonctionne une sandbox ?

Le fonctionnement d'une sandbox dépend de ce qui est testé.

Par exemple, un environnement "sandbox" utilisé pour tester les malwares est configuré et fonctionne différemment d'une "sandbox" destiné à tester le code des mises à jour d'applications. Pour la recherche de logiciels malveillants potentiels et l'exécution de codes malveillants, une sandbox doit être isolée des logiciels de production.

Quelle que soit la façon dont une sandbox est utilisé, chaque environnement possède quelques caractéristiques de base :

  • L'émulation d'un appareil réel. Il peut s'agir de l'émulation d'un ordinateur de bureau ou d'un appareil mobile. Dans les deux cas, l'application testée doit avoir accès aux mêmes ressources que le code analysé, notamment le processeur, la mémoire et le stockage.
  • Émulation du système d'exploitation cible. En utilisant une machine virtuelle, l'application doit avoir accès au système d'exploitation. Avec une machine virtuelle (VM), la sandbox est isolée du matériel physique sous-jacent mais a accès au système d'exploitation installé.
  • Environnement virtualisé. Habituellement, une sandbox se trouve sur une machine virtuelle et n'a pas accès aux ressources physiques, mais peut accéder au matériel virtualisé.

La virtualisation et l'émulation ne sont pas sans failles. Certains auteurs de logiciels malveillants conçoivent un code qui échappe aux chercheurs s'il détecte qu'il s'exécute dans une sandbox.

Les mesures de détection des sandboxes peuvent rechercher des interactions avec l'utilisateur qui ne sont pas conformes à une utilisation réelle, ou lire les paramètres du système pour rechercher les configurations système courantes des machines virtuelles.

Dans ce cas, le logiciel malveillant reste inactif et n’est pas détecté comme malveillant : il n'est activé qu'une fois qu'il a atteint une vraie cible dans le monde réel.

Dans certains cas, l'auteur du malware peut même créer des exploits pour compromettre une sandbox faiblement sécurisée.

Les environnements virtualisés sont également appelés "prisons" (jails) parce que le système d'exploitation et les ressources matérielles émulés ont un accès réseau et des espaces de noms de systèmes de fichiers limités.

Les sandboxes sont également incluses dans certaines applications et hébergement cloud où tout ce qui y tourne est empêché d'accéder à certains aspects de la machine hôte.

Les avantages d'une sandbox

Tout comme un environnement de test de développement, une sandbox peut être utilisée pour exécuter n'importe quelle application sur une ressource sûre avant de la déployer en production ou de lui donner accès aux ressources de production.

Une sandbox permet aux entreprises d'exécuter des programmes susceptibles de causer des problèmes, qu'il s'agisse de logiciels malveillants ou de failles logicielles involontaires, sans dommage ni risque pour les ressources critiques de l'entreprise.

Une sandbox est souvent utilisée comme une quarantaine pour les emails et les pièces jointes inconnues.

Les filtres de courrier électronique détectent les messages et pièces jointes potentiellement malveillants, mais un administrateur a besoin d'un endroit sûr pour les consulter afin de détecter les faux positifs.

Les documents malveillants peuvent contenir des macros qui exploitent les failles des applications de productivité les plus répandues comme Microsoft Office. Un administrateur peut utiliser une machine virtuelle de type sandbox pour ouvrir les pièces jointes et afficher les macros afin de vérifier si elles sont sûres.

Dans les organisations qui ne disposent pas de personnel spécialisé dans la cybersécurité, une sandbox peut être utilisée par n'importe quel employé pour isoler les programmes suspects. Une sandbox peut permettre aux employés d'exécuter du code inconnu sans exposer leur système à de nouvelles menaces.

Exemples de sandboxes

Une sandbox peut contenir des composants logiciels et matériels.

Avec des restrictions matérielles, une sandbox peut se trouver sur son propre réseau isolé. Pour une isolation très restreinte, la sandbox peut se trouver sur son propre routeur Wi-Fi et sa propre connexion FAI.

Cette configuration rendrait physiquement impossible l'accès d'une application malveillante au réseau principal.

Plusieurs applications utilisent des sandboxes par défaut pour protéger le système d'exploitation local. Les navigateurs disposent de leurs propres sandboxes pour séparer les applications malveillantes qui s'exécutent sur le web de l'accès aux ressources locales de la machine.

Les langages comme Java ont leur propre sandbox pour protéger les ressources locales du code non fiable, comme un applet Java s'exécutant sur une page web.

Le système d'exploitation Windows 10 dispose d'une sandbox intégrée pour protéger l’ordinateur contre les codes non fiable. Bien que cette fonctionnalité ne suffise pas à remplacer les antivirus, pare-feu et anti-malware, elle ajoute une couche de sécurité dont les anciens systèmes d'exploitation Windows ne disposent pas.

HTML5 dispose d'une sandbox pour protéger l'utilisation abusive de sa fonction iframe. Et le système d'exploitation Linux dispose de plusieurs sandboxes d'application basés sur Seccomp et cgroup. L'API Google Sandbox est disponible pour les développeurs qui écrivent du code C++ et qui doivent mettre leur code en sandbox avant de le déployer dans l'environnement de production.

Comment mettre en place un environnement de sandbox ?

L'objectif d'une sandbox dépend de la façon dont vous l'avez installée.

De nombreuses plateformes de cloud computing disposent de leur propre sandbox pour travailler avec les nouveaux programmes et les mises à jour. Par exemple, si vous décidez de travailler avec PayPal en tant que processeur de paiement, la plateforme dispose d'une sandbox complète où vous pouvez émuler l'environnement de production.

Tout code utilisant la sandbox est isolé de la production, de sorte que les erreurs et les bugs n'affectent pas la plateforme principale.

Si vous avez besoin d'une sandbox pour tester du code ou des logiciels potentiellement malveillants, vous pouvez créer votre propre sandbox en installant une machine virtuelle. VirtualBox est souvent utilisé pour héberger un environnement virtuel, également appelé machine virtuelle. Il vous suffit ensuite d'un fichier d'installation pour faire fonctionner le système d'exploitation sur la machine virtuelle.

Avant d'installer le système d'exploitation sur la machine virtuelle, définissez les ressources matérielles qui seront disponibles pour l'environnement comme la mémoire, le processeur, la capacité de stockage et l'adaptateur réseau.

Ces ressources sont virtualisées et ne seront pas disponibles en dehors de la machine virtuelle.

Inversement, les programmes s'exécutant dans votre nouvel environnement ne pourront pas partager les ressources mémoire avec le système d'exploitation principal ou tout ce qui se trouve en dehors de la machine virtuelle.

Même si une sandbox doit être un espace sûr, les attaquants essaient toujours de briser la sécurité de la sandbox. Les entreprises de la tech accordent souvent des primes importantes à quiconque trouve dans la sandbox une faille susceptible d'être exploitée.

Les développeurs de Microsoft Edge versent jusqu'à 30 000 dollars à quiconque trouvera une faille dans la sandbox du navigateur. Les développeurs de Google Chrome ont payé 60 000 dollars à une personne qui a pu exécuter du code non validé sur une machine entièrement corrigée en 2012.

Pour faire des recherches sur la sécurité ou se plonger dans l'analyse des logiciels malveillants, une sandbox est indispensable. Elle permet de s'assurer que toutes les ressources, y compris le stockage réseau, sont indisponibles pour la machine virtuelle.

Avec une sandbox, vous pouvez analyser du code sans risquer de détruire un environnement de production.