Dans l'image précédente, il est possible d'observer **comment le bac à sable sera chargé** lorsqu'une application avec le droit **`com.apple.security.app-sandbox`** est exécutée.
Ensuite, **`libSystem.B`** appellera d'autres fonctions jusqu'à ce que **`xpc_pipe_routine`** envoie les droits de l'application à **`securityd`**. Securityd vérifie si le processus doit être mis en quarantaine à l'intérieur du bac à sable, et le cas échéant, il sera mis en quarantaine.\
Enfin, le bac à sable sera activé par un appel à **`__sandbox_ms`** qui appellera **`__mac_syscall`**.
Les **fichiers créés par des processus mis en bac à sable** se voient attribuer l'**attribut de quarantaine** pour empêcher les évasions du bac à sable. Cependant, si vous parvenez à **créer un dossier `.app` sans l'attribut de quarantaine** dans une application mise en bac à sable, vous pourriez faire pointer le binaire du bundle d'application vers **`/bin/bash`** et ajouter des variables d'environnement dans le **plist** pour abuser de **`open`** et **lancer la nouvelle application sans bac à sable**.
Par conséquent, pour l'instant, si vous êtes simplement capable de créer un dossier portant un nom se terminant par **`.app`** sans attribut de quarantaine, vous pouvez échapper au bac à sable car macOS ne vérifie que l'attribut de **quarantaine** dans le **dossier `.app`** et dans l'**exécutable principal** (et nous allons faire pointer l'exécutable principal vers **`/bin/bash`**).
Notez que si un bundle .app a déjà été autorisé à s'exécuter (il a un xttr de quarantaine avec le drapeau autorisé à s'exécuter), vous pourriez également en abuser... sauf que maintenant vous ne pouvez pas écrire à l'intérieur des bundles **`.app`** à moins d'avoir certaines autorisations TCC privilégiées (que vous n'aurez pas dans un bac à sable élevé).
Dans les [**derniers exemples de contournement du bac à sable de Word**](macos-office-sandbox-bypasses.md#word-sandbox-bypass-via-login-items-and-.zshenv), on peut voir comment la fonctionnalité **`open`** de la ligne de commande peut être abusée pour contourner le bac à sable.
Même si une application est **censée être mise en bac à sable** (`com.apple.security.app-sandbox`), il est possible de contourner le bac à sable si elle est **exécutée à partir d'un LaunchAgent** (`~/Library/LaunchAgents`) par exemple.\
Comme expliqué dans [**cet article**](https://www.vicarius.io/vsociety/posts/cve-2023-26818-sandbox-macos-tcc-bypass-w-telegram-using-dylib-injection-part-2-3?q=CVE-2023-26818), si vous souhaitez obtenir une persistance avec une application mise en bac à sable, vous pourriez la faire s'exécuter automatiquement en tant que LaunchAgent et peut-être injecter du code malveillant via des variables d'environnement DyLib.
Si un processus mis en bac à sable peut **écrire** à un endroit où **plus tard une application sans bac à sable va exécuter le binaire**, il pourra **s'échapper simplement en plaçant** le binaire là-bas. Un bon exemple de ce type d'emplacements sont `~/Library/LaunchAgents` ou `/System/Library/LaunchDaemons`.
Pour cela, vous pourriez même avoir besoin de **2 étapes** : faire en sorte qu'un processus avec un **bac à sable plus permissif** (`file-read*`, `file-write*`) exécute votre code qui écrira effectivement à un endroit où il sera **exécuté sans bac à sable**.
Si à partir du processus en bac à sable vous êtes capable de **compromettre d'autres processus** s'exécutant dans des bacs à sable moins restrictifs (ou aucun), vous pourrez échapper à leurs bacs à sable :
[**Cette recherche**](https://saagarjha.com/blog/2020/05/20/mac-app-store-sandbox-escape/) a découvert 2 façons de contourner le bac à sable. Parce que le bac à sable est appliqué depuis l'espace utilisateur lorsque la bibliothèque **libSystem** est chargée. Si un binaire pouvait éviter de la charger, il ne serait jamais mis en bac à sable :
* Si le binaire était **complètement compilé de manière statique**, il pourrait éviter de charger cette bibliothèque.
* Si le **binaire n'avait pas besoin de charger de bibliothèques** (car le lien est également dans libSystem), il n'aurait pas besoin de charger libSystem. 
Notez que même si certaines **actions** peuvent être **autorisées par le bac à sable** si une application possède une **autorisation** spécifique, comme dans :
Le fichier `entitlements.xml` contient les autorisations spéciales accordées à une application macOS pour accéder à certaines ressources protégées du système. Ces autorisations sont définies par le développeur de l'application et doivent être approuvées par Apple lors de la soumission de l'application à l'App Store. Les entitlements peuvent inclure des autorisations telles que l'accès aux données utilisateur, l'utilisation de services système sensibles, etc. Il est essentiel de comprendre et d'analyser les entitlements d'une application pour évaluer son niveau d'accès et de sécurité.
To debug the macOS sandbox, you can use the `sandbox-exec` tool with the `-D` flag to enable debug mode. This will provide detailed information about sandbox violations, helping you understand why a process is being blocked by the sandbox.
```bash
sandbox-exec -D
```
#### Bypassing the macOS Sandbox
To bypass the macOS sandbox, you can use various techniques such as exploiting vulnerabilities in the sandbox profile, injecting code into a process to disable sandbox restrictions, or manipulating the sandbox rules to allow unauthorized actions.
It is important to note that bypassing the macOS sandbox is a serious security risk and should only be done for legitimate security research purposes under controlled environments.
**Même avec le contournement du bac à sable, TCC** demandera à l'utilisateur s'il souhaite autoriser le processus à lire des fichiers depuis le bureau.
<summary><strong>Apprenez le piratage AWS de zéro à héros avec</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** nous sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR aux** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.