[distri] Re: Sandboxing for applications in distri?

  • From: Hydro Flask <hydroflask@xxxxxxxxxxx>
  • To: Michael Stapelberg <michael+distri@xxxxxxxxxxxxx>
  • Date: Mon, 02 May 2022 14:17:50 -0700

I did a bit more research on Flatpak since this email and it seems that
Flatpak covers all of the use cases I mentioned. 

Flatpak is not a dependency system so application bundles cannot depend
on each other. Each application is self-contained, aside from the
specific "runtime" on which it relies. 

So in a world where Flatpak has broad consensus, it seems like the
distribution's package manager becomes more relevant for system building
and development. Not so much for installing applications. 

On 2022-05-02 13:02, Michael Stapelberg wrote:

I just learnt about the Portal API, which does exactly what I had in mind: 
https://who-t.blogspot.com/2021/08/flatpak-portals-how-do-they-work.html ;

So, it seems like the answer is to use Flatpak with applications that use the 
Portal API? :) 

On Mon, 2 May 2022 at 09:48, Michael Stapelberg 
<michael+distri@xxxxxxxxxxxxx> wrote: 

[replying on the mailing list as discussed] 

Hey 

On Sun, 1 May 2022 at 00:03, Hydro Flask <hydroflask@xxxxxxxxxxx> wrote: 

Thanks for your reply. 

In terms of sandboxing, I mean something a lot less heavyweight than Qubes 
OS. Something that enables mostly trust-less installation of applications 
like on iOS. 

In practical terms on a Linux desktop I think that that restricting 
filesystem access would cover majority of use cases: 

1) No access to personal information by default, i.e. the home directory 
would not be accessible without giving specific permission to files 

2) No writable access to anywhere in the file hierarchy except a designated 
app folder (for storing caches and app-specific data). 
Filesystem sandboxing makes a lot of sense to me, and seems to be the only 
kind of sandboxing that I can imagine can work for many applications, while 
also providing lots of value to users. 

In https://github.com/gokrazy/rsync, I use mount namespaces to accomplish a ;
very similar setup: the rsync process literally only has access to the 
directories that were configured to be served world-readable. 

Downsides I see are that the use of mount namespaces requires root 
permissions, and that inherently, it's not possible to grant more permissions 
later. For example, you can't have a photo editing app that requests 
permission for a single photo. 

Perhaps others on this list know if there already is some prior art in this 
space? 
AFAICT, this would have to happen at some other layer than what distri 
currently provides. 
Perhaps with some additional kernel support? 

This would also require restricting run-time access to the data of other 
processes. For example, locking down access to /proc, process_vm_readv(), 
ptrace(), framebuffer and input data via X11. At least Wayland seems to 
implement the last part. 
Here I'm a lot less certain about whether it's worthwhile to do these 
lock-downs. 
Filesystem sandboxing itself protects against poorly written software and 
misconfigurations. 
The protections you're suggesting here protect against purposefully malicious 
software. 
But, purposefully malicious software can usually find a way to do harm. 
See the recent dirty pipe or nimbuspwn vulnerabilities.  

Maybe this is an overly negative outlook from my end, but the value 
proposition of losing ptrace (for example) just so that malware has a 
slightly harder time (but may well succeed regardless) just doesn't seem too 
compelling to me. 

Best regards
Michael

  

Other related posts: