Manuel d’utilisation de PathScope
Ce manuel suit les écrans dans l’ordre, du repérage des points faibles de cet appareil avec PathScope jusqu’au choix de l’endroit par où commencer les corrections. Les explications des écrans évitent autant que possible le jargon technique ; les commandes sont regroupées dans le chapitre « Utilisation en ligne de commande ».
1. Qu’est-ce que PathScope
PathScope repère les « voies » par lesquelles un utilisateur ordinaire de cet appareil peut atteindre root (droits d’administrateur) ou des données sensibles, et indique, avec des priorités, où une correction est la plus efficace. Il est destiné à contrôler les appareils que vous gérez vous-même et les environnements de test.
L’analyse est en lecture seule. Elle ne modifie ni les réglages ni les fichiers, et n’applique aucune correction automatiquement. Des exemples de commandes de correction sont affichés, mais c’est à vous de décider de les exécuter ou non.
pathscope). PathScope est une application distincte de RoamSwitch, sous licence Apache License 2.0. Il n’est pas couvert par le contrat de licence de RoamSwitch (EULA).2. Installation et lancement
PathScope s’installe comme une application distincte, avec sa propre icône. Voici comment le lancer.
| Environnement | Comment le lancer |
|---|---|
| Mac | Ouvrez PathScope.app depuis le fichier de distribution (DMG) et cliquez sur « Analyser ». |
| Linux | Ouvrez « PathScope » dans la liste des applications et cliquez sur « Analyser ». Depuis un terminal, lancez pathscope-gui. L’affichage nécessite WebKitGTK 4.1, installé automatiquement avec deb et rpm. Sous Arch (AUR), installez webkit2gtk-4.1 comme dépendance facultative. |
| Ligne de commande | Lancez pathscope dans un terminal. Sur Mac, il s’agit de PathScope.app/Contents/MacOS/pathscope. |
Au démarrage, une fenêtre s’ouvre avec, en haut, les boutons « Analyser », « Historique », « Aide du LLM », « Expliquer avec un LLM » et « Réglages ». « Expliquer avec un LLM » n’est utilisable qu’une fois un résultat affiché. PathScope n’ouvre aucun port en écoute et sa fenêtre ne charge aucun site externe.
3. Lancer une analyse et lire le résultat
Lorsque vous cliquez sur « Analyser », PathScope collecte l’état de cet appareil à partir de l’utilisateur actuel et l’analyse. Cela peut prendre de quelques secondes à quelques dizaines de secondes. À la fin, le résultat est enregistré automatiquement comme une entrée de l’historique.
Marche à suivre
- Cliquez sur « Analyser ».
- Dans « Schéma des voies » et « Liste des voies », regardez quel utilisateur atteint root ou des données sensibles, et par quelles étapes. Les cercles et les carrés sont des utilisateurs et des destinations, et chaque ligne est une étape qui élève les droits. Le numéro sur une ligne correspond à la « raison pour laquelle l’étape est possible » dans le tableau sous le schéma.
- Dans « Points de correction (à corriger dans cet ordre) », repérez les endroits où une correction a le plus d’effet. Chaque élément indique sa priorité (critique, élevée, moyenne ou faible, avec un score), le nombre de voies concernées, une correction proposée et la technique MITRE ATT&CK la plus proche.
- Cliquez sur « Et si je corrige ceci ? » pour relancer, à titre d’essai, l’analyse des voies qui resteraient si ce point était corrigé comme proposé. « Et si je corrige tout ? » fait de même pour tous les points affichés. Ni l’un ni l’autre ne modifie cet appareil.
- Lisez la liste des zones qui n’ont pas pu être vérifiées, affichée sous les points de correction.
Quelles voies sont détectées
- Appartenance au groupe docker (qui permet les mêmes opérations que root)
- Détournement d’un exécutable qui s’exécute avec les privilèges root (SUID) pour devenir root, réécrire des fichiers ou lire des fichiers
- L’exécutable d’un service exécuté par root, d’un programme sur lequel root écoute, ou d’un fichier que root exécute périodiquement peut être réécrit
- Réglages permettant sudo sans mot de passe (les fichiers de configuration de sudo et de cron sont pris en compte une fois lus avec « Aide du LLM »)
- Sur Mac, une application autorisée à accéder à tous les fichiers peut être réécrite
- Les logiciels installés, le noyau ou la version de macOS comportent encore une vulnérabilité connue exploitée dans des attaques réelles ou très susceptible de l'être (dans le KEV de la CISA ou, hors KEV, avec un score EPSS élevé de FIRST ; seulement celles qui permettent à un utilisateur ordinaire de devenir root)
Les vulnérabilités connues sont vérifiées à l’aide de données fournies avec l’application. Sont couverts macOS et les versions de Debian, Ubuntu, de la famille RHEL, SUSE, Arch et Alpine pour lesquelles des données existent ; tout le reste (Debian 11 et antérieures, Fedora, etc.) est indiqué comme « non vérifié ». Ce n’est pas une fonction d’analyse exhaustive des vulnérabilités.
4. Historique, exportation, vérification récurrente
Les résultats d’analyse sont conservés automatiquement dans un historique sur cet appareil. Cliquez sur « Historique » pour ouvrir la liste, où vous pouvez ouvrir une entrée, lui donner une étiquette (par exemple avant correction) ou la supprimer. Sélectionnez deux entrées et cliquez sur « Comparer les 2 sélectionnés » pour voir les voies disparues et apparues ainsi que les changements des points de correction. Servez-vous-en pour comparer la situation avant et après une correction.
Les résultats d’analyse enregistrés au format JSON sur un autre appareil peuvent être importés dans l’historique avec « Importer des résultats ». Sélectionnez au moins deux entrées dans l’historique et cliquez sur « Synthétiser la sélection » pour voir les appareils les plus exposés, par ordre, et les faiblesses communes à plusieurs appareils.
Le résultat affiché peut être enregistré en « Résultat d’analyse (JSON) », « Éléments à surveiller (JSON) » ou « Règles auditd (pour la fonction d’audit de Linux) ». Vous choisissez la destination dans la boîte de dialogue d’enregistrement. Cela se limite à écrire des fichiers : aucun réglage n’est appliqué et cet appareil n’est pas modifié.
Cela écrit un fichier de configuration qui lance l’analyse périodiquement et vous avertit lorsque des voies sont apparues depuis la fois précédente.
- Affichez un résultat d’analyse et cliquez sur « Enregistrer comme résultat de référence ».
- Définissez l’« Intervalle (minutes) » (de 5 à 10080).
- Sur Mac, cliquez sur « Enregistrer les réglages launchd… », sous Linux sur « Enregistrer les réglages systemd… », puis choisissez l’emplacement.
- Vérifiez le contenu écrit, puis enregistrez-le vous-même (par exemple avec launchctl load). PathScope ne l’enregistre pas.
5. Fonctions utilisant un LLM (facultatif)
Mise en place
- Cochez « Activer le LLM ».
- Choisissez le « LLM à utiliser ». Les choix sont les commandes claude, opencode, codex et agy, et seules celles dont l’« État » est « Installé » sont utilisables. Si « Introuvable » s’affiche, installez d’abord cette commande.
- Choisissez « Ce qui est envoyé au LLM pour la lecture des réglages » (voir le tableau ci-dessous).
- Cliquez sur « Enregistrer ».
Dans la liste, le « Modèle » et le « Délai d’attente (secondes) » se règlent pour chaque LLM. claude est lancé avec l’exécution de commandes et la lecture de fichiers désactivées. opencode, codex et agy sont considérés comme impossibles à restreindre et ne sont utilisables que si vous cochez « Je comprends que l’on ne peut pas empêcher ce LLM d’exécuter des commandes ni de lire des fichiers ». Un LLM qu’on ne peut pas restreindre peut lire des fichiers de lui-même en cours de route, et leur contenu peut être envoyé à son service.
Expliquer avec un LLM
Avec un résultat affiché, cliquez sur « Expliquer avec un LLM » pour que le LLM rédige une évaluation d’ensemble, l’ordre et les raisons des corrections, la signification des zones non vérifiées, etc. Seul un résumé des voies, des points de correction et des zones non vérifiées est transmis ; les informations brutes collectées (comme les listes de propriétaires et de permissions de fichiers) ne le sont pas. Le résumé contient toutefois les noms d’utilisateur et les chemins de fichiers qui apparaissent dans les voies. La réponse du LLM est donnée à titre indicatif. Ce sont des personnes qui vérifient et décident de la suite, et rien ne change automatiquement à partir de la réponse.
Aide du LLM (lecture des fichiers de configuration)
Les fichiers de configuration comme sudoers, cron et les scripts sont écrits de multiples façons, et un programme seul ne peut parfois pas les lire. L’aide du LLM fait lire ces fichiers par un LLM pour y chercher les passages liés aux privilèges root.
- Cliquez sur « Aide du LLM ». Les fichiers candidats à la lecture sont listés avec la raison de chacun (tous sont sélectionnés au départ). Les candidats comprennent sudoers, cron, les réglages de systemd et de launchd, et les exécutables chargés par des services exécutés en tant que root. Décochez ce que vous ne voulez pas envoyer.
- Cliquez sur « Envoyer au LLM les ○ sélectionnés ». Une confirmation de ce qui sera envoyé s’affiche ; lisez-la, puis cliquez sur « Envoyer (confirmé) ».
- Dans le résultat, vérifiez « Éléments trouvés », « Fichiers lus » et « Fichiers non lus (ils restent non vérifiés) ».
- Cliquez sur « Appliquer et relancer l’analyse » pour intégrer les éléments trouvés à l’analyse. Si vous ne voulez plus les utiliser, supprimez-les depuis « Enregistrés ».
Seuls les éléments cités par le LLM dont il a été confirmé que la ligne figure bien dans le fichier d’origine sont utilisés. Les éléments non confirmés apparaissent seulement sous « À titre indicatif » et ne servent pas à l’analyse. La vérification est refaite à chaque analyse : un élément dont la ligne d’origine a disparu n’est donc plus utilisé.
| Ce qui est envoyé | Détails |
|---|---|
| Standard | Les valeurs qui ressemblent à des mots de passe ou à des clés sont remplacées par « [REDACTED] » avant l’envoi. Les fichiers comme les clés privées ne sont pas envoyés. Pour un gros fichier, seules les lignes contenant des chemins ou des commandes sont envoyées. |
| Sans restriction | Un réglage pour les cas où le contenu ne quitte pas votre machine, comme avec un LLM local (à vos risques). Les empreintes de mots de passe et éléments similaires sont également envoyés. |
6. Utilisation en ligne de commande
La même analyse que dans la fenêtre peut être lancée avec la commande pathscope. Sans option, elle analyse les voies de l’utilisateur actuel vers root. La collecte est en lecture seule et ne modifie pas l’état de l’appareil.
pathscope
pathscope --json-out=report.json
pathscope --what-if-fix=all
pathscope --baseline=base.json --fail-on=new --notify
pathscope --print-schedule=systemd --interval-min=60
pathscope --export-watch=watch.json --export-auditd=pathscope.rules
pathscope --plain
pathscope --version
pathscope --lang=en
| Option | Détails |
|---|---|
--json-out=<file> | Enregistre le résultat au format JSON. |
--what-if-fix=all | Relance, à titre d’essai, l’analyse des voies qui resteraient si tout était corrigé comme proposé. Avec un numéro, seulement ce point de correction. |
--baseline=<file> --fail-on=new | Compare avec un JSON précédent et se termine avec le code 1 si des voies sont apparues. Avec --notify, une notification de bureau (nombre seulement) est aussi affichée. |
--fail-on=any|new|critical|high|medium | any se termine avec le code 1 dès qu’il y a au moins une voie ; critical, high et medium le font lorsqu’il existe un point de correction de cette priorité ou plus. |
--print-schedule=launchd|systemd | Affiche un exemple de configuration d’exécution périodique, sans l’enregistrer. --interval-min permet de fixer l’intervalle en minutes. |
--plain | Affiche l’ancienne présentation en texte simple au lieu de Markdown. Les hypothèses de l’analyse sont alors envoyées sur la sortie d’erreur au lieu de figurer dans le résultat. |
--help / --version | --help (-h) affiche la description de toutes les options, les codes de sortie et des exemples. --version (-V) affiche la version. |
La sortie est au format Markdown. Après le titre viennent, dans l’ordre, un tableau récapitulatif, les voies, les points de correction (un tableau de la priorité, de l’étape, de la raison et des voies concernées, puis, pour chaque numéro, un détail avec la correspondance ATT&CK, les commandes de correction et une mise en garde), le périmètre de la collecte et les hypothèses de l’analyse. Les points de correction n’apparaissent que si des voies ont été trouvées, et les hypothèses seulement s’il y a quelque chose à indiquer. Avec --what-if-*, une liste de l’analyse hypothétique suit ; avec --baseline, une liste des changements depuis la dernière exécution. Vous pouvez la coller telle quelle dans une note ou un ticket. Pour obtenir l’ancienne présentation en texte simple, ajoutez --plain.
Le code de sortie est 0 pour un déroulement normal, 1 lorsqu’une condition de --fail-on est remplie, et 2 pour une erreur d’utilisation ou d’entrée/sortie. Exécutée en tant que root, la commande collecte aussi directement les processus en écoute de root. Les résultats de lecture enregistrés avec l’aide du LLM sont également pris en compte dans l’analyse de la commande.
7. Emplacements de stockage et mises à jour
| Élément | Emplacement |
|---|---|
| Historique des résultats d’analyse | Sur Mac, ~/Library/Application Support/net.lafine.pathscope/history.sqlite3 ; sous Linux, ~/.local/share/net.lafine.pathscope/history.sqlite3 |
| Réglages du LLM | ~/.config/pathscope/settings.json (enregistré avec des droits qui ne permettent qu’à vous de le lire et de l’écrire) |
| Contenu enregistré par l’aide du LLM | ~/.local/share/pathscope/facts.json |
| Le « résultat de référence » de la vérification récurrente | ~/.local/share/pathscope/baseline.json |
L’historique peut être effacé avec « Tout supprimer » dans l’écran de l’historique. Les résultats d’analyse contiennent des informations sensibles sur la configuration de cet appareil (noms d’utilisateur, chemins de fichiers, permissions) ; limitez donc l’endroit où ils sont conservés et les personnes avec qui ils sont partagés. Pour utiliser une commande absente de la liste des LLM, ajoutez-la à la main dans profiles du fichier de réglages. Cela ne peut pas se modifier depuis la fenêtre.
Mettre l’application à jour
PathScope sur Mac se met à jour lui-même, indépendamment de RoamSwitch. Il ne se connecte à lafine.net, pour récupérer les informations sur la dernière version, que lorsque vous cliquez sur « Rechercher des mises à jour » (aucune information sur cet appareil ni sur les résultats d’analyse n’est envoyée). Si une nouvelle version existe, cliquez sur « Installer v○○ », puis, une fois terminé, sur « Redémarrer pour appliquer ». Une mise à jour téléchargée n’est installée qu’après vérification de sa signature, qui confirme qu’elle n’a pas été altérée.
Sous Linux, il fait partie du paquet RoamSwitch et se met donc à jour avec ce paquet. L’onglet « Mises à jour » l’indique également.
Les données utilisées pour l’analyse, comme celles sur les vulnérabilités connues, sont fournies avec l’application. Ce qui a été découvert après coup n’est pas vérifié tant que vous n’avez pas mis PathScope à jour. Lorsque les données fournies sont devenues anciennes, le résultat de l’analyse le signale.
8. Ce que PathScope ne fait pas
- Il ne modifie ni les réglages ni les fichiers et n’exécute aucune correction automatiquement. Il se limite à présenter des corrections proposées.
- « Aucune voie trouvée » est un résultat limité à ce qu’il a été possible de collecter. Ce n’est pas une preuve de sécurité.
- Il n’examine pas les vulnérabilités de manière exhaustive. Il ne regarde que les vulnérabilités connues exploitées dans des attaques réelles et qui permettent à un utilisateur ordinaire de devenir root.
- « Et si je corrige ceci ? » ne s’utilise que sur le résultat d’une analyse qui vient d’être faite, pas sur un résultat ouvert depuis l’historique.
9. En cas de problème
| Symptôme | Que faire |
|---|---|
| Sur Mac, « Données des réglages de confidentialité (TCC.db) » apparaît parmi les zones non vérifiées | Dans l’onglet « Autorisations » des « Réglages », cliquez sur « Ouvrir les réglages d’Accès complet au disque », activez PathScope dans les Réglages Système, puis redémarrez PathScope et relancez l’analyse. Les autres analyses fonctionnent même sans cette autorisation. |
| Le message « Impossible d’utiliser le LLM » s’affiche, ou les réglages ne peuvent pas être enregistrés | Activez-le dans « Intégration LLM » des « Réglages » et choisissez le LLM à utiliser. Si la liste indique « Introuvable », installez la commande. Avec opencode, codex ou agy, la case de confirmation est également nécessaire. |
| Un LLM s’arrête avec « Délai dépassé » | Dans la liste de « Intégration LLM » des « Réglages », augmentez le « Délai d’attente (secondes) » de ce LLM (de 1 à 900), puis enregistrez. |
| « Et si je corrige ceci ? » est inutilisable | Il est inutilisable sur un résultat ouvert depuis l’historique. Cliquez de nouveau sur « Analyser », puis utilisez-le. |
| La mise à jour dans l’application est inutilisable | Si vous l’avez installé sous Linux depuis un paquet RoamSwitch, mettez-le à jour en mettant à jour le paquet. Si vous ne l’avez pas installé depuis un paquet (.deb, .rpm ou AppImage), la mise à jour dans l’application est inutilisable ; réinstallez alors le paquet distribué. |