> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On
> Behalf Of José Bollo
> Sent: Tuesday, March 18, 2014 7:22 AM
> To: [email protected]
> Subject: [Dev] Secure Smack Launcher
> 
> Hi all,
> 
> I propose to use a secure smack launching mechanism to solve all the tizen
> security issues including native applications.
> 
> According to installation permissions, the launcher will configure a safe and
> secure environment and will launch the application into it.
> There is no need for applications to be rewritten or polkit dependent.
> 
> The prepared environment is:
>  - a restricted Smack environment using load-self
>  - a restricted FS environment using Namespace (needs cap_sys_admin)

This doesn't work with Smack aware services like dbus,
nor with privilege pop-ups ("Allow Once?"). 
 
> On a core i5, speed measure of that launch process is:
>  - reading security database 0.6 ms
>  - restricting smack security 0.6 ms
>  - restricting FS 0.8 ms
> for a total of 2.2 ms.
> 
> But it can be reduced to an average of 1.2 ms by:
>  - using a daemon that loads the databases only one time
>  - improving the code
> 
> I'm working on that launcher as a library component. You can browse the
> quickly changing code here https://github.com/jobol/smaunch
> 
> We would like to add that launcher library to aul-ng to make some test of the
> solution.
> 
> Let's go now on more technical aspects.
> 
> The main idea is that a user delegate to the launcher the responsibility to
> restrict the rights (s)he have to launch the application. Advantage:
> no user can launch an application with more right than itself, if (s)he 
> tries, the
> application will encounter security restrictions.
> 
> Then the load-self2 interface of SMACK is helpful to accomplish it.
> Using isn't restricted by capabilities and it only allow to restrict rights 
> of the
> current process (and its children). (see note **1**)
> 
> The launcher is then simple:
>  1. read database of permissions
>  2. read the manifest of the application to launch  3. use the database to
> know what smack permissions are needed according to the manifest  4. alter
> the current process smack context to remove any unwanted permission  5.
> "exec" the application
> 
> The step 1 can be made only one time by a daemon.
> 
> Doing it will works with services smack labeled. The services can be running
> either as processes with smack controlled sockets or as library using their
> smack access label.
> 
> Doing it isn't enough because the access to the files can't be controlled by a
> reduced set of Smack labels. More details here
> https://wiki.tizen.org/wiki/User:Jobol/asn
> 
> That specially important for native applications to have a mechanism to
> restrict access to filesystem.
> 
> For these reasons, the use of namespace isolation is a good complement to
> the use of smack. The idea is to hide part of the FS and/or set part of it 
> read-
> only. It remains very simple: nothing is created, the hierarchy is unchanged,
> only parts of the fs tree are hidden or set read only.
> 
> The launcher is then completed to modify the filesystem environment of the
> process.
> 
> This complement is simple:
>  1. read database of FS configurations
>  2. read the manifest of the application to launch  3. use the database to
> know what FS configuration is needed for the manifest  4. unshare the FS
> namespace  5. remount all as slave  6. configure the FS according to step 3  
> 7.
> drop the cap_sys_admin
> 
> Best regards
> José
> 
> note **1**: the smack interface load-self2 allow to add per process rules
> that are checked only if the permission test is granted by loaded rules (the
> rules that are applied to all processes). This allow to make a restriction. 
> But
> that interface currently has an issue: you can go backward. It means that if a
> process (the lancher) restrict the smack access, the launched application may
> recover the rights by writing load-self2. There are 2 solutions to that
> problem: (1) the behaviour of the load-self2 interface is changed in a such
> way that you can't go back; (2) the smackfs interface is remount read-only.
> To don't change the kernel, I tried to use the second solution: remounting
> smackfs.
> Currently, it doesn't work because the smackfs is internally (at kernel code
> level) mounted as "mount_single". I'm sure that some solution will be found
> for this problem, I'm trying to mount with mount_nodev because it is a minor
> change. But if Casey is alright I can also work on the "ONLY FORWARD
> RESTRICTION of load-self(2)".
> 
> 
> 
> 
> 
> 
> _______________________________________________
> Dev mailing list
> [email protected]
> https://lists.tizen.org/listinfo/dev
_______________________________________________
Dev mailing list
[email protected]
https://lists.tizen.org/listinfo/dev

Reply via email to