View Full Version : /proc in chroot ?
E' sicuro montare proc in chroot?
Mi pareva ci fossero dei problemi di sicurezza con i kernel 2.2 e 2.4
Ci sono ancora con la 2.6, o comunque in genere?
Il punto è che tomcat (o meglio java) in chroot, senza il /proc dà un warning, che non può voler dire nulla, ma che se non ci fosse toglierebbe dubbi su eventuali impallamenti in produzione.
Credo potrebbe basta /proc/self/stat (non sono sicuro), ma in tal caso esiste un modo per montare solo questa parte ?
Grazie !
Ok, ho detto una mezza cavolata: /proc/self punta all'ID associato al processo, quindi non posso montare soltanto /proc/self perché non avrebbbe senso.
Siccome non so a priori l'ID del processo, mi tocca montare comunque proc /chroot/tomcat/proc.
Fosse stata una directory, forse avrei potuto fare un mount con l'opzione bind.
I dubbi che restano sono quindi:
1) Con il kernel 2.6 è abbastanza sicuro montare proc in chroot?
2) Ho scoperto che esiste l'opzione bind per il mount. Si può fare anche con il fs proc e se si, cosa è meglio in termini di sicurezza e prestazioni ? Un mount diretto o un bind alla directory precedentemente montata (/proc) ?
ilsensine
28-02-2006, 12:02
1) Con il kernel 2.6 è abbastanza sicuro montare proc in chroot?
Quanto farlo "fuori" da chroot. Se puoi evitarlo è meglio, a scanso di equivoci (ma non è sempre possibile, purtroppo).
Nota che puoi montare proc in r/o.
2) Ho scoperto che esiste l'opzione bind per il mount. Si può fare anche con il fs proc e se si, cosa è meglio in termini di sicurezza e prestazioni ? Un mount diretto o un bind alla directory precedentemente montata (/proc) ?
Sì puoi fare un bind mount di proc, ma è inutile finché i furbi non implementano il read-only bind mount (l'unica cosa in grado di aggiungere un pò di protezione).
Ad oggi il read-only bind mount è disponibile solo come patch esterna.
Ti ringrazio per le preziosissime risposte.
Per capire se mi può bastare montarlo solo in ro faccio uno strace del processo che lo richiede (java) per vedere se ci accede solo con dei read ?
ilsensine
28-02-2006, 12:28
Probabilmente (sicuramente) ci accede solo in read. Lo scopo del chroot è di proteggere il sistema da programmi che possono venire "bucati", quindi che compiono azioni che normalmente non dovrebbero compiere.
Nota che proc in ro non è la fine della storia. Proc contiene diverse informazioni che, se lette, potrebbero essere utili ad un attaccante (quali i pid e i nomi dei processi in esecuzione, i loro socket aperti ecc.). Non si tratta di vulnetabilità in se, ma di informazioni che se puoi evitare di diffondere è meglio.
Non si tratta di vulnetabilità in se, ma di informazioni che se puoi evitare di diffondere è meglio.
...lo so, e mi piacerebbe sapere se e come si potesse limitare le informazioni a un utente o a un processo, in modo che l'utente/processo in chroot possa guardare solo le proprie informazioni e non il resto. Sai se si può ?
[LAMENTELA ON]
:( quei pirla (scherzo! :p ) della Sun sono 2 anni (google docet) che ricevono segnalazioni che Java dà dei warning (e poi vai a sapere se sono warning o WARNING...) se non gli si monta /proc, ma non fanno nessuna modifica. Cos'altro posso fare :(... ??
O meglio, qualcosa l'hanno fatto: in passato causava un segmentation fault con dump del core :doh:, ora non più.
[LAMENTELA OFF]
Come verificare il problema, se hai un JDK sotto mano e una chroot ;):
chroot /chroot/test /usr/java/bin java -version
Basta solo questo.....
Sì puoi fare un bind mount di proc, ma è inutile finché i furbi non implementano il read-only bind mount (l'unica cosa in grado di aggiungere un pò di protezione).
Ad oggi il read-only bind mount è disponibile solo come patch esterna.
Ho provato
mount --bind -o ro /proc /chroot/tomcat/proc
e l'ha digerito.
Sto usando Trustix con il kernel 2.6 e avevo letto di problemi con il readonly ma con il 2.4.
Quello che mi stai dicendo, che non è implementato il read only, sai mica come si manifesta?
Cioè, mi dovrebbe dare errore il mount oppure lo accetta, non mi dice niente, ma poi lo monta come scrivibile ?
Penso che sia quest'ultimo caso, perché ho provato a montare /tmp in una cartella qualsiasi in readonly e mi ha lasciato creare un files (da root, comunque)
ilsensine
02-03-2006, 20:07
-o ro viene silenziosamente ignorato dai bind mount...
-o ro viene silenziosamente ignorato dai bind mount...
Grazie, sono dei geni...
... e dei signori :(
Non voglio attaccare chi lavora penso "gratis" su Linux, ma metterci un if che stampa "o -ro ignored" in caso di "--bind" e "o -ro" non ci avrebbe richiesto molto :(
Più che altro è una questione di fiducia: quali altre parti hanno un comportamento analogo? (non te lo sto chiedendo ;), è una perplessità indotta dal comportamento del mount....)
Grazie ancora per l'assistenza.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.