ΠΠΎΡΡΡΠΏΠ΅Π½ Π²ΡΠΏΡΡΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΉ Bubblewrap 0.8, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Bubblewrap ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Flatpak Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΡΠ»ΠΎΠΉΠΊΠΈ Π΄Π»Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ LGPLv2+.
Per l'isolamento vengono utilizzate le tecnologie tradizionali per la virtualizzazione dei contenitori su Linux, basate sull'uso di cgroups, spazi dei nomi (namespaces), Seccomp e SELinux. Per eseguire operazioni privilegiate nella configurazione del contenitore, Bubblewrap viene avviato con diritti di root (file eseguibile con flag suid) per poi ripristinare i privilegi dopo la conclusione dell'inizializzazione del contenitore.
L'attivazione del sistema degli spazi dei nomi degli identificatori utente (user namespaces), che consente di utilizzare in contenitori un insieme separato di identificatori, non Γ¨ necessaria poichΓ© per impostazione predefinita non funziona in molte distribuzioni (Bubblewrap Γ¨ posizionato come un'implementazione suid limitata di un sottoinsieme delle funzionalitΓ degli spazi dei nomi degli utentiβper escludere tutti gli identificatori degli utenti e dei processi dall'ambiente, eccetto quello corrente, si utilizzano le modalitΓ CLONE_NEWUSER e CLONE_NEWPID). Per una protezione aggiuntiva, i programmi eseguiti sotto Bubblewrap vengono avviati in modalitΓ PR_SET_NO_NEW_PRIVS, che vieta l'acquisizione di nuovi privilegi, ad esempio, in presenza del flag setuid.
L'isolamento a livello di file system avviene creando un nuovo spazio di nomi per i punti di montaggio (mount namespace) per impostazione predefinita, in cui viene creato un filesystem root vuoto tramite tmpfs. In questa partizione, se necessario, vengono montate le partizioni della FS esterna in modalitΓ 'mount βbind' (ad esempio, all'avvio con l'opzione 'bwrap βro-bind /usr /usr', la partizione /usr viene trasmessa dal sistema principale in modalitΓ di sola lettura). Le capacitΓ di rete sono limitate all'accesso all'interfaccia loopback, con isolamento dello stack di rete attuato tramite i flag CLONE_NEWNET e CLONE_NEWUTS.
La principale differenza rispetto a progetti simili come Firejail, che utilizza anch'esso un modello di avvio con setuid, Γ¨ che in Bubblewrap il livello per la creazione dei container include solo il minimo necessario di capacitΓ , mentre tutte le funzioni avanzate necessarie per l'avvio di applicazioni grafiche, l'interazione con il desktop e il filtraggio delle richieste a Pulseaudio sono gestite da Flatpak e vengono eseguite dopo il ripristino dei privilegi. Firejail, invece, combina tutte le funzioni ausiliarie in un unico file eseguibile, rendendo piΓΉ complesso il suo audit e il mantenimento della sicurezza a un livello adeguato.
Nel nuovo rilascio:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βdisable-usernsΒ» ΠΎΡΠΊΠ»ΡΡΠ°ΡΡΠ°Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π² sandbox-ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ ΡΠ²ΠΎΠ΅Π³ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ (user namespace).
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βassert-userns-disabledΒ» Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΡΠΎ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΡΠΈΠΈ Β» βdisable-usernsΒ» Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
- ΠΠΎΠ²ΡΡΠ΅Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ Π² ΡΠ΄ΡΠ΅ Π½Π°ΡΡΡΠΎΠ΅ΠΊ CONFIG_SECCOMP ΠΈ CONFIG_SECCOMP_FILTER.
Fonte: opennet.ru
