blog · git · desktop · images · contact & privacy · gopher
2020-05-04
Okay, das ist jetzt erstmal der letzte langweilige Blogpost zu lariza. Geht aber um eine größere Änderung, die noch ein bisschen Erklärung braucht.
WebKitGTK-Sandboxing wird im nächsten Release aktiviert sein.
Im Prozessbaum sieht das dann so aus:
lariza(1030)─┬─WebKitNetworkPr(1035)───...
├─bwrap(1050)───bwrap(1051)───WebKitWebProces(1054)─┬─{WebKitWebProces}(1059)
│ ├─...
│ └─{WebKitWebProces}(4837)
├─bwrap(9975)───bwrap(9977)───WebKitWebProces(9978)─┬─{WebKitWebProces}(9979)
│ ├─...
│ └─{WebKitWebProces}(9986)
└─...
bwrap
zeigt an, dass bubblewrap benutzt wird, um jene
Komponenten zu isolieren, die besonders verwundbar sind. Rendering und
JavaScript-Verarbeitung passiert hier drin. Web Extensions laufen da
auch. Solch eine Isolation ist eine recht gute Idee, würde ich sagen,
und vermutlich auch längst überfällig.
bubblewrap sollte schon als Abhängigkeit von WebKitGTK installiert sein, zumindest ist das bei Arch Linux so. Man muss eigentlich nichts dafür tun, damit das läuft. Naja, eigentlich™.
Es wird zum Beispiel ähnlich eines chroot
das Dateisystem isoliert.
Die Prozesse brauchen natürlich weiterhin Zugriff auf manche Dinge, also
gibt es dann einige Bind-Mounts. Die kann man sich im
/proc
-Dateisystem anschauen:
$ cat /proc/1054/mounts
...
/dev/sdb1 /usr/lib ext4 ro,nosuid,nodev,relatime 0 0
/dev/sdb1 /usr/share/zoneinfo/Europe/Berlin ext4 ro,nosuid,nodev,relatime 0 0
tmpfs /tmp/.X11-unix/X0 tmpfs rw,nosuid,nodev,relatime,size=31457280k 0 0
/dev/sdb1 /home/tux/.Xauthority ext4 ro,nosuid,nodev,relatime 0 0
...
Ich erwähne das, weil darunter auch sowas zu finden ist:
/dev/sdb1 /home/tux/.config/fontconfig ext4 ro,nosuid,nodev,relatime 0 0
/dev/sdb1 /home/tux/.fontconfig ext4 ro,nosuid,nodev,relatime 0 0
/dev/sdb1 /home/tux/.fonts ext4 ro,nosuid,nodev,relatime 0 0
Deine Config-Dateien. Jenachdem, wie die eingerichtet sind, muss man das
nun anpassen. Zum Beispiel war mein ~/.config/fontconfig/fonts.conf
ein Symlink zu einer Datei in meinem Repo ~/work/dotfiles-pub
. Das
geht dann natürlich kaputt, weil dieses Zielverzeichnis im isolierten
Prozess nicht verfügbar ist. In diesem konkreten Fall war dann die
Qualität der gerenderten Fonts ziemlich im Eimer. Bei solchen oder
ähnlichen Dingen muss man dann sein Setup anpassen.
Es ist schade, dass wir pledge(2)
und unveil(2)
nicht auf Linux haben. Ich mutmaße, dass derartige Prozessisolation dann
deutlich verbreiteter wäre, weil diese beiden Syscalls wesentlich
einfacher zu benutzen sind als alles, was wir derzeit unter Linux haben.