Se hai una shell di root in una sessione dello schermo (scollegata o meno, protetta da password o meno) e il tuo screen
eseguibile non è setxid, un utente malintenzionato che ottiene i tuoi privilegi può eseguire comandi in quella shell. Se non altro, possono farlo rintracciando il processo dello schermo.
Se screen è setuid o setgid e la sessione è scollegata e protetta da password, in linea di principio richiede la password dello schermo per eseguire i comandi in quella shell. Se questo principio è valido, qualcuno che ha solo compromesso il tuo account dovrebbe mettere in atto un trojan e attendere che tu digiti la password. Tuttavia, la superficie di attacco (ovvero il numero di punti in cui le cose possono andare storte a causa di un bug o di un'errata configurazione) è scomoda. Oltre alle funzionalità di sicurezza di base del sistema, ti stai fidando:
- schermo per ottenere il controllo della password corretto.
- schermo per impedire l'accesso alla sessione con altri mezzi.
- schermata per utilizzare correttamente i meccanismi di controllo degli accessi al sistema operativo (ad es. permessi sui tubi).
- il kernel per eseguire correttamente i controlli di sicurezza di ptrace (questa è una frequente fonte di vulnerabilità).
- la conchiglia non fa nulla di stupido.
- qualche altra caratteristica per non morderti.
"Qualche altra caratteristica per non morderti": sì, è vago. Ma è sempre una preoccupazione per la sicurezza. Potresti essere tentato di liquidare questo come un semplice pio desiderio, ma hai davvero pensato a tutto? Per esempio…
Finché è possibile scrivere sul dispositivo terminale, è possibile iniettare dati nell'input della shell. Sotto la configurazione predefinita dello schermo sul mio computer:
printf '\ekfoo\017bar\e\\' >/dev/pts/33
printf '\e[21t' >/dev/pts/33
Questo si inserisce ␛]lfoobar␛l
nel flusso di input della shell. \ek
è la sequenza di controllo che consente a un'applicazione (o qualsiasi cosa in grado di scrivere sul dispositivo terminale) di impostare il titolo della finestra (vedere la sezione "Denominazione delle finestre" nel manuale dello schermo ), e \e[21t
fa in modo che il terminale riporti il suo titolo sull'input standard dell'applicazione ( schermo non documenta questa sequenza, ma non attuarlo; si può trovare sotto CSI Ps ; Ps ; Ps ; t
nella lista sequenze di controllo xterm in realtà, almeno sotto schermo 4.0.3, tutti i caratteri di controllo vengono eliminati dal titolo segnalato, in modo che la shell legge. lfoobar
(supponendo che ␛]
non sia vincolato a un comando di modifica) e nessuna nuova riga. Quindi l'attaccante non può effettivamente eseguire un comando in quel modo, ma può riempire un comando comechmod u+s /bin/sh
seguito da un sacco di spazi e un prompt dall'aspetto probabile.
Lo schermo implementa diverse altre sequenze di controllo rischiose simili, non so quale sia la loro potenzialità per le vulnerabilità. Ma si spera ormai che tu possa vedere che la protezione offerta dalle password delle sessioni dello schermo non è eccezionale. Uno strumento di sicurezza dedicato come sudo ha molte meno probabilità di avere vulnerabilità.
sudo
.