Manuale d’uso di PathScope
Questo manuale segue le schermate in ordine, dal trovare con PathScope i punti deboli di questo dispositivo al capire da dove iniziare a correggerli. Le spiegazioni sulle schermate evitano per quanto possibile il gergo tecnico; i comandi sono raccolti nel capitolo «Uso della riga di comando».
1. Che cos’è PathScope
PathScope individua i «percorsi» con cui un utente comune di questo dispositivo può raggiungere root (privilegi di amministratore) o dati sensibili e mostra, con priorità, dove una correzione è più efficace. È pensato per controllare dispositivi che gestisci tu stesso e ambienti di prova.
L’analisi è in sola lettura. Non modifica impostazioni o file e non applica correzioni in automatico. Vengono mostrati esempi di comandi di correzione, ma sta a te decidere se eseguirli.
pathscope). PathScope è un’app separata da RoamSwitch con licenza Apache License 2.0. Non è soggetto al contratto di licenza di RoamSwitch (EULA).2. Installazione e avvio
PathScope viene installato come app separata con una propria icona. Ecco come avviarlo.
| Ambiente | Come avviarlo |
|---|---|
| Mac | Apri PathScope.app dal file di distribuzione (DMG) e fai clic su «Analizza». |
| Linux | Apri «PathScope» dall’elenco delle applicazioni e fai clic su «Analizza». Da terminale esegui pathscope-gui. La finestra richiede WebKitGTK 4.1, che con deb e rpm viene installato automaticamente. Su Arch (AUR) installa webkit2gtk-4.1 come dipendenza facoltativa. |
| Riga di comando | Esegui pathscope in un terminale. Su Mac è PathScope.app/Contents/MacOS/pathscope. |
All’avvio si apre una finestra con i pulsanti «Analizza», «Cronologia», «Assistente LLM», «Spiega con LLM» e «Impostazioni» in alto. «Spiega con LLM» non si può premere finché non viene mostrato un risultato. PathScope non apre porte in ascolto e la finestra non carica siti esterni.
3. Eseguire l’analisi e leggere il risultato
Quando fai clic su «Analizza», PathScope raccoglie lo stato di questo dispositivo a partire dall’utente corrente e lo analizza. Può richiedere da pochi secondi a qualche decina di secondi. Al termine, il risultato viene salvato automaticamente come una voce della cronologia.
Procedura
- Fai clic su «Analizza».
- In «Diagramma dei percorsi» ed «Elenco dei percorsi» vedi quale utente raggiunge root o dati sensibili e attraverso quali passaggi. Cerchi e quadrati sono utenti e destinazioni, e ogni linea è un passaggio che aumenta i privilegi. Il numero su una linea corrisponde al «motivo per cui il passaggio è possibile» nella tabella sotto il diagramma.
- In «Punti da correggere (in ordine di priorità)» controlla dove correggere ha l’effetto maggiore. Ogni voce mostra la priorità (critica, alta, media o bassa, con un punteggio), il numero di percorsi interessati, una correzione suggerita e la tecnica MITRE ATT&CK più vicina.
- Fai clic su «E se correggessi questo?» per rianalizzare, in via ipotetica, i percorsi che resterebbero se quel punto venisse corretto come suggerito. «E se correggessi tutto?» fa lo stesso per tutti i punti mostrati. Nessuna delle due modifica questo dispositivo.
- Leggi l’elenco delle aree che non è stato possibile verificare, mostrato sotto i punti da correggere.
Quali percorsi individua
- Appartenenza al gruppo docker (consente le stesse operazioni di root)
- Abuso di un eseguibile che gira con i privilegi di root (SUID) per diventare root, riscrivere file o leggere file
- L’eseguibile di un servizio che gira come root, di un programma su cui root è in ascolto o di un file che root esegue periodicamente può essere riscritto
- Impostazioni che consentono sudo senza password (i file di configurazione di sudo e cron vengono considerati dopo essere stati letti con «Assistente LLM»)
- Su Mac, un’app a cui è stato concesso l’accesso a tutti i file può essere riscritta
- Il software installato, il kernel o la versione di macOS hanno ancora una vulnerabilità nota sfruttata in attacchi reali o con alta probabilità di esserlo (nel KEV della CISA oppure, fuori dal KEV, con un punteggio EPSS alto di FIRST; solo quelle che permettono a un utente comune di diventare root)
Le vulnerabilità note vengono verificate con dati inclusi nell’app. Sono coperti macOS e le versioni di Debian, Ubuntu, famiglia RHEL, SUSE, Arch e Alpine per cui esistono dati; tutto il resto (Debian 11 e precedenti, Fedora e così via) viene mostrato come «non verificato». Non è una funzione per esaminare le vulnerabilità in modo esaustivo.
4. Cronologia, esportazione, controllo periodico
I risultati dell’analisi vengono conservati automaticamente come cronologia su questo dispositivo. Fai clic su «Cronologia» per aprire l’elenco, dove puoi aprire una voce, assegnarle un’etichetta (ad esempio prima della correzione) o eliminarla. Seleziona due voci e fai clic su «Confronta i 2 elementi selezionati» per vedere i percorsi scomparsi e quelli comparsi, oltre alle variazioni dei punti da correggere. Usalo per confrontare la situazione prima e dopo una correzione.
I risultati dell’analisi salvati in formato JSON su un altro dispositivo possono essere portati nella cronologia con «Importa risultati di analisi». Seleziona due o più voci nella cronologia e fai clic su «Riepiloga la cronologia selezionata» per vedere i dispositivi più a rischio in ordine e le debolezze comuni a più dispositivi.
Il risultato mostrato può essere salvato come «Risultato dell’analisi (JSON)», «Elementi da monitorare (JSON)» o «Regole auditd (per l’audit di Linux)». La destinazione si sceglie nella finestra di salvataggio. Vengono solo scritti file: non viene applicata alcuna impostazione e questo dispositivo non viene modificato.
Scrive un file di configurazione che analizza periodicamente e avvisa quando i percorsi sono aumentati rispetto all’ultima volta.
- Mostra un risultato di analisi e fai clic su «Salva come riferimento».
- Imposta l’«Intervallo (minuti)» (da 5 a 10080).
- Su Mac fai clic su «Salva configurazione launchd…», su Linux su «Salva configurazione systemd…», e scegli dove salvare.
- Controlla il contenuto scritto e poi registralo tu stesso (ad esempio con launchctl load). PathScope non lo registra.
5. Funzioni che usano un LLM (facoltativo)
Configurazione
- Seleziona «Attiva l’integrazione LLM».
- Scegli l’«LLM da usare». Le scelte sono i comandi claude, opencode, codex e agy, e si possono usare quelli il cui «Stato» è «Installato». Se compare «Non trovato», installa prima quel comando.
- Scegli «Contenuto inviato all’LLM per la lettura delle impostazioni» (vedi la tabella sotto).
- Fai clic su «Salva».
Nell’elenco, «Modello» e «Timeout (secondi)» si possono cambiare per ciascun LLM. claude viene avviato con l’esecuzione di comandi e la lettura di file disattivate. opencode, codex e agy sono trattati come non disattivabili e non si possono usare se non selezioni «Capisco che per questo LLM non si possono disattivare l’esecuzione di comandi e la lettura di file». Un LLM che non si può limitare può leggere file di propria iniziativa lungo il percorso, e il contenuto può essere inviato al servizio dell’LLM.
Spiega con LLM
Con un risultato mostrato, fai clic su «Spiega con LLM» per far scrivere all’LLM una valutazione complessiva, l’ordine e i motivi delle correzioni, il significato delle aree non verificate e simili. Viene passato solo un riepilogo di percorsi, punti da correggere e aree non verificate; le informazioni grezze raccolte (come gli elenchi di proprietari e permessi dei file) non vengono passate. Il riepilogo contiene però i nomi utente e i percorsi di file che compaiono nei percorsi. La risposta dell’LLM è indicativa. Verifica e decisione spettano alle persone, e nulla cambia automaticamente in base alla risposta.
Assistente LLM (lettura dei file di configurazione)
I file di configurazione come sudoers, cron e gli script sono scritti nei modi più vari e un programma da solo a volte non riesce a leggerli. L’assistente LLM fa leggere questi file a un LLM per cercare le descrizioni legate ai privilegi di root.
- Fai clic su «Assistente LLM». I file candidati alla lettura sono elencati con il motivo di ciascuno (all’inizio sono tutti selezionati). Sono candidati sudoers, cron, le impostazioni di systemd e launchd e gli eseguibili caricati dai servizi che girano come root, tra gli altri. Deseleziona quelli che non vuoi inviare.
- Fai clic su «Invia all’LLM gli elementi selezionati (○)». Compare una conferma di ciò che verrà inviato; leggila e poi fai clic su «Invia (confermato)».
- Nel risultato controlla «Elementi trovati», «File letti» e «File non letti (restano non verificati)».
- Fai clic su «Applica e rianalizza» per aggiungere gli elementi trovati all’analisi. Se non vuoi più usarli, eliminali da «Salvati».
Vengono usati solo gli elementi indicati dall’LLM per cui è stato confermato che la riga esiste davvero nel file originale. Quelli non confermati compaiono solo in «Solo per riferimento» e non vengono usati nell’analisi. La verifica si ripete a ogni analisi, quindi un elemento la cui riga originale è scomparsa non viene più usato.
| Cosa viene inviato | Dettagli |
|---|---|
| Standard | I valori che sembrano password o chiavi vengono sostituiti con «[REDACTED]» prima dell’invio. I file come le chiavi private non vengono inviati. Di un file grande vengono inviate solo le righe che contengono percorsi o comandi. |
| Nessun limite | Un’impostazione per i casi in cui il contenuto non esce dal tuo dispositivo, come con un LLM locale (a tuo rischio). Vengono inviati anche gli hash delle password e simili. |
6. Uso della riga di comando
La stessa analisi della finestra può essere eseguita con il comando pathscope. Senza opzioni analizza i percorsi dall’utente corrente a root. La raccolta è in sola lettura e non modifica lo stato del dispositivo.
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
| Opzione | Dettagli |
|---|---|
--json-out=<file> | Salva il risultato come JSON. |
--what-if-fix=all | Rianalizza, in via ipotetica, i percorsi che resterebbero se tutto fosse corretto come suggerito. Con un numero, solo quel punto da correggere. |
--baseline=<file> --fail-on=new | Confronta con un JSON precedente e termina con codice 1 se i percorsi sono aumentati. Con --notify viene mostrata anche una notifica sul desktop (solo il numero). |
--fail-on=any|new|critical|high|medium | any termina con codice 1 se esiste almeno un percorso; critical, high e medium lo fanno quando esiste un punto da correggere con quella priorità o superiore. |
--print-schedule=launchd|systemd | Mostra un esempio di configurazione per l’esecuzione periodica. Non la registra. Con --interval-min si indica l’intervallo in minuti. |
--plain | Mostra la vecchia presentazione in testo semplice invece del Markdown. I presupposti dell’analisi vanno allora sullo standard error invece di comparire nel risultato. |
--help / --version | --help (-h) mostra la descrizione di tutte le opzioni, i codici di uscita e alcuni esempi. --version (-V) mostra la versione. |
L’output è in Markdown. Dopo il titolo compaiono, nell’ordine, una tabella di riepilogo, i percorsi, i punti da correggere (una tabella con priorità, passaggio, motivo e percorsi interessati e poi, per ogni numero, un dettaglio con la corrispondenza ATT&CK, i comandi di correzione e un’avvertenza), l’ambito della raccolta e i presupposti dell’analisi. I punti da correggere compaiono solo se sono stati trovati dei percorsi, i presupposti solo se c’è qualcosa da indicare. Con --what-if-* segue un elenco dell’analisi ipotetica e, con --baseline, un elenco delle modifiche rispetto all’esecuzione precedente. Si può incollare così com’è in una nota o in un ticket. Per ottenere la vecchia presentazione in testo semplice, aggiungi --plain.
Il codice di uscita è 0 se tutto va bene, 1 quando una condizione di --fail-on è soddisfatta e 2 per un errore di utilizzo o di input/output. Se eseguito come root, raccoglie direttamente anche i listener su cui root è in ascolto. Anche i risultati di lettura salvati con l’assistente LLM vengono inclusi nell’analisi del comando.
7. Dove vengono salvati i dati e aggiornamenti
| Elemento | Posizione |
|---|---|
| Cronologia dei risultati di analisi | Su Mac, ~/Library/Application Support/net.lafine.pathscope/history.sqlite3; su Linux, ~/.local/share/net.lafine.pathscope/history.sqlite3 |
| Impostazioni LLM | ~/.config/pathscope/settings.json (salvato con permessi che consentono solo a te di leggerlo e scriverlo) |
| Contenuto salvato dall’assistente LLM | ~/.local/share/pathscope/facts.json |
| Il «riferimento» del controllo periodico | ~/.local/share/pathscope/baseline.json |
La cronologia si può cancellare con «Elimina tutto» nella schermata della cronologia. I risultati dell’analisi contengono informazioni sensibili sulla configurazione di questo dispositivo (nomi utente, percorsi di file, permessi), quindi limita dove vengono conservati e con chi vengono condivisi. Per usare un comando che non è nell’elenco degli LLM, aggiungilo a mano in profiles nel file di impostazioni. Dalla finestra non si può modificare.
Aggiornare l’app
PathScope su Mac si aggiorna da solo, in modo indipendente da RoamSwitch. Si connette a lafine.net, per ottenere le informazioni sull’ultima versione, solo quando fai clic su «Cerca aggiornamenti» (non vengono inviate informazioni su questo dispositivo né sui risultati dell’analisi). Se c’è una versione nuova, fai clic su «Installa v○○» e, a operazione conclusa, su «Riavvia e applica». Un aggiornamento scaricato viene installato solo dopo aver verificato la firma, che conferma che non è stato manomesso.
Su Linux fa parte del pacchetto RoamSwitch, quindi si aggiorna aggiornando quel pacchetto. Lo indica anche la scheda «Aggiornamenti».
I dati usati per l’analisi, come quelli sulle vulnerabilità note, sono inclusi nell’app. Ciò che viene scoperto dopo non viene verificato finché non aggiorni PathScope. Quando i dati inclusi sono diventati vecchi, il risultato dell’analisi lo segnala.
8. Cosa non fa
- Non modifica impostazioni o file e non esegue correzioni in automatico. Si limita a mostrare le correzioni suggerite.
- «Nessun percorso trovato» è un risultato entro l’ambito che è stato possibile raccogliere. Non è una prova di sicurezza.
- Non esamina le vulnerabilità in modo esaustivo. Considera solo le vulnerabilità note sfruttate in attacchi reali che permettono a un utente comune di diventare root.
- «E se correggessi questo?» si può usare solo sul risultato di un’analisi appena eseguita, non su un risultato aperto dalla cronologia.
9. Se qualcosa non funziona
| Sintomo | Cosa fare |
|---|---|
| Su Mac, «Dati delle impostazioni di privacy (TCC.db)» compare tra le aree non verificate | Nella scheda «Permessi» di «Impostazioni», fai clic su «Apri le impostazioni di Accesso completo al disco», attiva PathScope in Impostazioni di Sistema, poi riavvia PathScope e analizza di nuovo. Le altre analisi funzionano anche senza questo permesso. |
| Compare «Impossibile usare l’LLM» oppure non si riesce a salvare | Attivalo in «Integrazione LLM» nelle «Impostazioni» e scegli l’LLM da usare. Se nell’elenco compare «Non trovato», installa il comando. Con opencode, codex o agy serve anche la casella di conferma. |
| Un LLM si ferma con «Timeout» | Nell’elenco di «Integrazione LLM» in «Impostazioni», aumenta il «Timeout (secondi)» di quell’LLM (da 1 a 900) e salva. |
| «E se correggessi questo?» non si può usare | Non si può usare su un risultato aperto dalla cronologia. Fai di nuovo clic su «Analizza» e poi usalo. |
| L’aggiornamento dall’interno dell’app non è utilizzabile | Se lo hai installato su Linux da un pacchetto RoamSwitch, aggiornalo aggiornando il pacchetto. Se non l’hai installato da un pacchetto (.deb, .rpm o AppImage), l’aggiornamento dall’interno dell’app non è utilizzabile, quindi reinstalla il pacchetto distribuito. |