Les types de fichiers que vous avez répertoriés et les objectifs que vous avez présentés entraînent une énorme surface d'attaque. En supposant un adversaire sophistiqué, cela donne une possibilité d'exploitation considérablement accrue. Les PDF et PPT/PPTX sont particulièrement problématiques. Si vous ne pouvez pas vous limiter à beaucoup moins de types de fichiers, vous devrez isoler vos activités, soit en utilisant la séparation des privilèges, soit la virtualisation à distance.
Séparation des privilèges
Il s'agit d'une solution dans le cas où vous auriez besoin d'effectuer cette activité sur votre ordinateur local. Bien qu'il soit difficile de mettre en sandbox individuellement chaque application que vous utiliserez, vous pouvez créer un nouvel utilisateur sur votre ordinateur avec quelques privilèges :
- Désactiver l'accès à
su
etsudo
du nouvel utilisateur, et ne les utilisez pas comme cet utilisateur. - Ne pas
su
à votre utilisateur inférieur à partir de la racine pour éviter les attaques de refoulement TTY. - Utilisez
iptables
pour désactiver l'accès au réseau pour cet utilisateur. - Définissez des limites de ressources pour réduire la quantité de dommages qu'une application exploitée peut causer.
- Utilisez Wayland au lieu de Xorg si possible, ou Xorg avec
systemd-logind
pour l'exécuter en tant que non root. - Activez et utilisez la clé d'attention sécurisée lorsque vous avez terminé et que vous passez à une nouvelle session.
- Recherchez et supprimez tous les fichiers setuid ou setgid inutiles, ainsi que les fichiers setcap.
- Utilisez une structure d'audit comme auditd pour surveiller les activités potentiellement malveillantes.
- Appliquez un renforcement général du système, tel que des ajustements sysctl ou des correctifs de renforcement.
Selon le niveau de sophistication de l'adversaire, cela peut ne pas suffire, et même pour un adversaire de capacité modérée, c'est assez incomplet, mais c'est un point de départ. Comme vous devez supposer (très probablement correctement) que les applications que vous utilisez pour accéder à ces fichiers sont vulnérables à l'exécution de code arbitraire, la question se transforme en Comment puis-je exécuter en toute sécurité du code non approuvé ? , qui est bien sûr extrêmement large.
Serveurs privés virtuels
Une solution plus simple serait d'utiliser un VPS. Vous pouvez exécuter des applications à distance sur le VPS plutôt que sur votre propre ordinateur et interagir avec lui de cette façon. Même si le VPS est complètement compromis, la surface d'attaque est réduite à celle de votre client SSH et de votre terminal, qui est assez réduite. Comme vous ne pourrez pas visualiser directement les images via SSH (du moins pas en toute sécurité), vous souhaiterez peut-être les convertir dans un format d'image très simple (et difficile à exploiter) avant de le transférer sur votre ordinateur local et de le visualiser. Un exemple d'un tel format serait le format de carte de pixels PPM. Cela fonctionne également pour la visualisation de fichiers PDF, car ils peuvent être facilement convertis en fichiers image à l'aide de divers utilitaires.
L'hôte d'un VPS peut accéder et modifier n'importe quoi sur le VPS. Si cela vous pose problème (par exemple, si les fichiers sont extrêmement sensibles ou si l'intégrité est de la plus haute importance), vous ne voudrez peut-être pas utiliser un VPS. Il est peu probable que cela pose un problème, et comme le site Web à partir duquel vous avez téléchargé est déjà (vraisemblablement) public, il ne devrait y avoir aucun problème de confidentialité. Vous pouvez augmenter la confidentialité et l'intégrité des données en utilisant à la place un serveur dédié, même si cela coûterait plus cher.
Vous devez conserver une sauvegarde locale de ces fichiers, dans le cas où le VPS est arrêté, afin de pouvoir le restaurer ultérieurement sur un autre VPS. Les fichiers locaux doivent être stockés sous une forme "inerte" qui ne sera pas susceptible d'être exploitée par les indexeurs ou les générateurs de vignettes que vous pourriez avoir sur votre système. Cela peut être fait par exemple en mettant les fichiers dans une archive telle que tar
.
Comme vous devrez utiliser des utilitaires de ligne de commande plutôt que des utilitaires graphiques, vous devrez trouver des moyens d'accéder à ces fichiers via SSH. Quelques exemples que vous pouvez faire à distance sur un VPS :
- Vous pouvez convertir des fichiers PNG, TIFF, JPEG et GIF (non animés) en PPM pour les afficher localement en toute sécurité.
- XLS/XLSX peut être converti en CSV, ce qui est correct en ligne de commande. Il existe un bon plugin vim.
- RTF, DOC, DOCX et ODF peuvent être convertis en images, qui peuvent être visualisées localement en toute sécurité.
- Je ne connais aucun moyen de afficher PPT/PPTX en ligne de commande, bien que vous puissiez les analyser.
- HTML, CSS et JS peuvent être affichés dans un éditeur de texte ou exécutés sur un navigateur textuel distant.
- PHP peut être affiché dans un éditeur de texte ou exécuté à l'aide d'un interpréteur PHP en ligne de commande.