alf1342 For me, apks are stored in a separate memory space from those of the users.
True.
alf1342 If you clone an application for a secondary user from the owner user, the apk is installed from that space into the user space.
No. It is still only in the shared space. All that happens is that a launcher for it is added in the secondary user profile, pretty much. And data and cache directories for the app is created in that user profile.
alf1342 But if a secondary user has the right to install applications, and updates the application, the shared space apk will be modified and all users will install this new version of the application.
Yes, the APK in the shared space will be updated with the new version, so all users will automatically be using the new version.
alf1342 In a way, a secondary user can "propagate" a modified version of an application to all other users.
All APKs are signed. It is only possible to upgrade an APK for an app with a certain ID if the new upgraded version is signed by the same key as the already installed one. This might be the key of the developer or the app store. So one cannot upgrade to a compromised version without the original app developer or trusted app store cooperating by signing the compromised version.
Not even uninstalling the app and installing a new compromised one with the same app ID will work. All uninstalling will do is remove the launcher, and data and cache directories. The APK from the shared space is only removed if no user profile has the app anymore. So if the launcher is removed from within a secondary user profile, and one attempts to install a new compromised version signed with attacker controlled keys, the installation will be rejected since signing keys doesn't match already installed APK.
alf1342 Preventing a secondary user to install apps, may reduce that risk.
No, it should be secure against that already.
alf1342 So, if I understand, if an app use an OS exploit to escape the app sandbox, for you, it can monitor all the activities taking place in the other running user sessions (like doing screenshot, ..)?
That is my understanding, yes. There are no isolation between user profiles beyond the app sandbox.