Pourquoi aucune autorisation comme Android ou iOS?

26

Lorsque j'installe un programme comme GIMP ou LibreOffice sur Linux, on ne me demande jamais les autorisations. En installant un programme sur Ubuntu, est-ce que je donne explicitement à ce programme la permission complète de lire / écrire n'importe où sur mon disque et un accès complet à Internet?

Théoriquement, GIMP pourrait-il lire ou supprimer n'importe quel répertoire sur mon lecteur, ne nécessitant pas de mot de passe de type sudo?

Je ne suis curieux que si c'est techniquement possible, pas si c'est probable ou non. Bien sûr, je sais que ce n'est pas probable.

stackinator
la source
26
XKCD obligatoire: xkcd.com/1200
Andrea Lazzarotto
10
Parce que le modèle de sécurité de Linux date d'avant que quiconque ait pensé à le faire. En fait, cela date d'avant Internet - lorsque votre plus grande menace était que d'autres personnes utilisent le même ordinateur.
user253751
2
En partie parce que bon nombre des personnes qui utilisent * nix n'installent pas de programmes, elles les compilent à partir des sources ou les écrivent elles-mêmes. Imaginez donc si vous deviez passer par le rigamarole "permissions" pour chaque petit script shell simple que vous avez écrit: ne serait-ce pas une perte de temps énorme?
jamesqf
4
Je n'achète cependant pas ce raisonnement, "le code est open source, vous pouvez le consulter et le compiler vous-même!". Toutes ces déclarations sont vraies, mais cela ne signifie pas que je vais pouvoir revoir chaque ligne de code que j'exécute, et même si je l'ai fait, ou si une équipe de personnes l'a fait, ou le monde entier l'a fait, cela ne signifie en aucun cas vous repérerez du code malveillant ou mauvais qui aura un impact négatif sur votre ordinateur. Mais merci pour la contribution, je vois comment cela pourrait devenir une douleur majeure et j'ai découvert des moyens de le contourner maintenant.
stackinator

Réponses:

31

Il y a deux choses ici:

  • lorsque vous installez un programme par des moyens standard (programme d'installation du système tel que apt / apt-get sur Ubuntu), il est généralement installé dans un répertoire où il est disponible pour tous les utilisateurs (/ usr / bin ...). Ce répertoire nécessite l'écriture de privilèges, vous avez donc besoin de privilèges spéciaux lors de l'installation.

  • lorsque vous utilisez le programme, il s'exécute avec votre identifiant utilisateur et ne peut lire ou écrire que là où les programmes exécutés avec votre identifiant sont autorisés à lire ou à écrire. Dans le cas de Gimp, vous découvrirez par exemple que vous ne pouvez pas éditer des ressources standard telles que des pinceaux car elles sont dans le partage /usr/share/gimp/et que vous devez d'abord les copier. Cela montre également Edit>Preferences>Foldersoù la plupart des dossiers se présentent par paires, un système qui est en lecture seule et un utilisateur qui peut être écrit.

xénoïde
la source
17
Une fois le programme installé, la façon dont il a été installé devient sans importance. La seule chose qui compte, c'est sous quel ID utilisateur il s'exécute ((en d'autres termes, qui l'utilise). Ensuite, il assume les mêmes droits d'accès que tous les autres programmes exécutés par le même utilisateur.
xenoid
3
@xenoid Sauf si le programme est installé et appartient à root et avec le bit setuid activé. Dans ce cas, le programme s'exécute en tant que root, bien qu'il soit utilisé par quelqu'un d'autre.
Monty Harder
2
Oui, tous les 18: mount / umount / ping / sudo ...
xenoid
2
@xenoid, je pense que l'important est que l'installation d'un paquet ne vous demande pas explicitement la permission d'installer un binaire setuid. Au lieu de cela, tout ce qui se trouve dans le package est installé, et il vous suffit de «savoir» d'une autre manière s'il y a des programmes privilégiés impliqués. Vous êtes entièrement tributaire du packager pour vous assurer que le package correspond à la documentation et est par ailleurs sûr, etc., l'utilitaire du gestionnaire de packages ne fait rien pour vous y aider.
ilkkachu
3
Oui, donc rien de nouveau, c'est pourquoi il existe des référentiels ... Même sans le bit setuid et le logiciel installé peuvent faire beaucoup d'autres choses désagréables comme rm -rf ~/. Si vous installez à partir d'autres sources, vous devez être prudent (ou installer à partir des sources, après une inspection du code).
Xenoid
23

En installant un programme sur Ubuntu, est-ce que je donne explicitement à ce programme la permission complète de lire / écrire n'importe où sur mon disque et un accès complet à Internet?

Oui, si vous utilisez sudoou l'équivalent, vous donnez au programme d' installation la permission complète de lire / écrire n'importe où sur votre disque. C'est à peu près la même chose. Il existe également un indicateur que l'installateur peut définir, appelé setuid, qui donnera au programme des autorisations complètes après l'installation également.

Même si nous ignorons le programme d'installation et si le programme n'est pas setuid (il est très rare que les programmes utilisent setuid), lorsque vous exécutez le programme, il a un accès complet à tout ce à quoi votre compte peut accéder. Par exemple, si vous êtes connecté à votre banque en ligne, cela pourrait hypothétiquement envoyer tous vos fonds au Nigéria.

Pourquoi aucune autorisation comme Android ou iOS?

Le modèle de sécurité - c'est-à-dire la façon dont le système de sécurité est conçu - sous Linux est très ancien. Il est hérité d'Unix, qui remonte aux années 1960. À l'époque, il n'y avait pas d'Internet et la plupart des gens d'un service utilisaient le même ordinateur. La plupart de vos programmes provenaient de grandes entreprises de confiance. Le système de sécurité a donc été conçu pour protéger les utilisateurs les uns des autres, et non pour protéger les utilisateurs des programmes qu'ils exécutent.

De nos jours, il est assez dépassé. Android est basé sur Linux, mais il fonctionne en créant un "compte d'utilisateur" distinct pour chaque application, au lieu de pour chaque utilisateur. Je ne sais pas ce qu'iOS utilise. Des efforts comme Flatpak tentent actuellement d'apporter le même genre de chose au bureau Linux.

user253751
la source
2
Il s'agit en fait d'un argument pour exécuter du code potentiellement exploitable en tant qu'utilisateur distinct non privilégié et en espérant qu'il n'y a pas de vulnérabilité d'élévation de privilèges dans le système d'exploitation. Ou Docker.
Willtech
@immibis Android utilise le noyau Linux et un FS ext. Il ne partage aucune autre similitude afaik. Ne confondez pas Linux et UNIX (ou GNU / Linux). (Au moins, vous n'avez pas appelé FreeBSD "Linux" ..)
wizzwizz4
1
@ wizzwizz4 Linux est un noyau, Android utilise le noyau appelé Linux, je ne sais pas quel est votre point.
user253751
@Willtech Il fonctionne techniquement comme une mesure de sécurité, mais c'est assez gênant. Vous voulez généralement que les applications puissent accéder à vos fichiers, après tout. Mais seuls les fichiers auxquels vous leur avez dit d'accéder.
user253751
@immibis Les autorisations ne sont pas implémentées dans le noyau, il est donc trompeur d'impliquer qu'Android est basé sur un système qui inclut le modèle d'autorisation. (IIirc le noyau applique cependant certaines des autorisations ..)
wizzwizz4
9

Ce que vous voulez est fourni par les applications Flatpack. Ce sont à peu près l'équivalent des applications iOS, Android ou Windows Store.

Je ne les ai pas utilisés, donc je ne sais pas s'ils ont déjà implémenté l'interface graphique, pour voir les autorisations requises par chaque application lors de son installation.

https://blogs.gnome.org/alexl/2017/01/20/the-flatpak-security-model-part-2-who-needs-sandboxing-anyway/

Chaque application flatpak contient un manifeste, appelé métadonnées. Ce fichier décrit les détails de l'application, comme son identité (app-id) et le runtime qu'elle utilise. Il répertorie également les autorisations requises par l'application.

Par défaut, une fois installée, une application obtient toutes les autorisations demandées. Cependant, vous pouvez remplacer les autorisations chaque fois que vous appelez flatpak run ou globalement par application en utilisant la substitution flatpak (voir les pages de manuel pour flatpak-run et flatpak-override pour plus de détails). La gestion des autorisations des applications est actuellement quelque peu cachée dans l'interface, mais le plan à long terme consiste à afficher les autorisations lors de l'installation et à faciliter leur remplacement.

Je n'ai pas non plus utilisé l'alternative d'Ubuntu, Snappy, pour savoir si elle fournit une telle fonctionnalité visible dans l'interface graphique.

sourcejedi
la source
Les flatpaks ont-ils une autorisation de lecture / écriture sur mon dossier personnel dans Ubuntu?
stackinator
1
En lisant le lien, on dirait a) qu'ils ont une solution élégante à l'esprit où les applications n'ont accès qu'aux fichiers que l'utilisateur a choisis dans une fenêtre d'ouverture / d'enregistrement de fichiers, etc. b) la valeur par défaut était d'accorder un accès complet à votre répertoire personnel .
sourcejedi
2
Les applications Web sont une solution beaucoup plus standard à ce problème, bien qu'elles soient ennuyeusement inefficaces dans de nombreux cas. Tout navigateur Web populaire est un bac à sable hautement polyvalent et soigneusement testé.
sudo
6

C'est techniquement possible et les solutions incluent apparmor, selinuxet firejailmême des conteneurs complets comme LXCou une machine virtuelle complète (par exemple VirtualBox, kvmou vmware). Pour la mise en réseau, il existe opensnitchun clone du littlesnitchprogramme OSX.

La raison pour laquelle il n'y a pas de modèle de sécurité répandu avec des autorisations accordées par l'utilisateur est que, traditionnellement, vous faites attention à ce que vous exécutez sur votre PC. 90% de ce qui se trouve dans les appstores des systèmes mobiles serait considéré comme un malware sur PC.

Il existe des scanners pour les logiciels publicitaires (c'est-à-dire adaware ou Spybot D&D) qui classeraient les comportements tels que la connexion de Facebook, Google Analytics et les réseaux publicitaires comme des logiciels malveillants sur le PC. L'écosystème mobile est comme un redémarrage complet de l'informatique en ce qui concerne ces choses. Tout le monde regroupe les logiciels publicitaires, juste parce que c'est facile et ajoute des analyses, juste parce qu'il est curieux. Les effets secondaires sont une diminution de la confidentialité et de la sécurité. La partie sécurité est prise en compte par le modèle sandbox, la partie confidentialité est toujours un problème ouvert.

Une autre raison de ne pas avoir cela sur le PC pendant longtemps est la complexité d'un bac à sable, ce qui signifie qu'il peut être trop lent pour les anciens PC il y a quelque temps et nécessiter plus d'ingénierie pour quelque chose qui n'avait alors que peu d'avantages.

Aujourd'hui, nous voyons des tentatives d'utilisation du sandboxing dans de nouveaux formats de package comme snap et flatpak et les navigateurs l'utilisent également pour leurs extensions. Chromium utilise un modèle d'autorisation depuis le début et Firefox en utilise un pour toutes les extensions Web (depuis 57 les seules extensions que vous pouvez installer). Cela est tout à fait raisonnable, car les gens installent des extensions de navigateur d'auteurs inconnus tout comme les applications de personnes dont ils n'ont jamais entendu parler, pensant qu'ils ne sont pas plus dangereux qu'un site Web qu'ils visitent, ce qui est une erreur fausse lorsqu'il n'y a pas de bac à sable pour les protéger.

allo
la source
4

Android utilise un modèle de sécurité «marketplace»: différentes applications proviennent de différents fournisseurs (semi-fiables) et doivent être isolées des ressources protégées et les unes des autres. La plupart des applications sont distribuées à but lucratif: elles sont vendues (payantes), diffusent des publicités payantes ou «monétisent» leurs utilisateurs en vendant leurs données à des tiers. Il y a une forte motivation à s'engager dans un accès illicite aux données, même s'ils se font prendre.

La plupart des applications dans Debian, Red Hat et les distributions Linux "classiques" similaires sont distribuées sous forme source: après qu'une application open source gagne suffisamment de traction, elle est choisie manuellement pour être incluse par les responsables de la distribution. Il y a peu de motivation pour effectuer un accès illicite aux données, - les gains potentiels ne justifient pas les efforts.

Il convient de noter que ce modèle de sécurité avancé d'Android est l'une des raisons pour lesquelles il a gagné en popularité, surmontant facilement iOS sur les marchés mobiles. Les distributions Linux de bureau modernes ne sont pas seulement «différentes», elles sont en fait bien en retard en termes de modèles de sécurité et de distribution.

Certaines distributions Linux proposent des améliorations à leur système de distribution de logiciels: référentiels de logiciels tiers centralisés (AUR), formats de packages spécialisés pour la distribution de logiciels tiers (AppImage, Snappy, Flatpack), systèmes de référentiels secondaires (Docker). Malheureusement, ces améliorations gagnent très peu de terrain avec le temps: AppImage a été inventé en 2004, la première version d'AUR est sortie en 2005, mais aucune des distributions Linux modernes n'a officiellement adopté ses fonctionnalités après> 10 ans.

user1643723
la source
3

Lorsque j'installe un programme comme GIMP ou LibreOffice sur Linux, on ne me demande jamais les autorisations.

Ces applications sont installées dans une partie privilégiée du système de fichiers que vous et la plupart des utilisateurs n'avez normalement pas accès pour modifier.

Sur les distributions principales configurées pour une utilisation sur ordinateur, l'utilisateur unique initialement configuré lors de l'installation aura généralement des droits d'administrateur. Tout ce qui leur sera normalement demandé, c'est leur propre mot de passe de connexion pour installer le logiciel, et pas toujours.

Une fois installé, le logiciel sera, par défaut, configuré pour être exécutable par les utilisateurs normaux et permettre la lecture des fichiers de données. C'est tout ce qu'il faut.

En installant un programme sur Ubuntu, est-ce que je donne explicitement à ce programme la permission complète de lire / écrire n'importe où sur mon disque et un accès complet à Internet?

Pas le programme. Ce qui se passe, c'est que le compte d'utilisateur appartient à différents groupes et que les différents groupes accordent l'accès à différentes ressources.

Le modèle de sécurité sous Linux est que votre compte d'utilisateur dispose de certains droits et que les groupes auxquels votre compte appartient ont des droits spécifiques. Pour accéder à n'importe quelle partie du système de fichiers, il faut des privilèges root, qui ne sont normalement pas accordés aux utilisateurs. Même lorsque vous utilisez sudo, vous n'obtenez pas tous les droits.

Les comptes d'utilisateurs normaux ont généralement accès aux ressources dont ils sont censés avoir besoin, comme Internet.

Théoriquement, GIMP pourrait-il lire ou supprimer n'importe quel répertoire sur mon lecteur, ne nécessitant pas de mot de passe de type sudo?

Tout répertoire ou fichier auquel vous, en tant qu'utilisateur, avez des droits d'accès est accessible par l'application que vous lancez car il hérite généralement de vos droits. Un utilisateur normalement connecté n'aura pas par défaut le droit de modifier la plupart des fichiers système critiques ou des fichiers partagés.

Je ne suis curieux que si c'est techniquement possible, pas si c'est probable ou non. Bien sûr, je sais que ce n'est pas probable.

Gardez à l'esprit que la plupart des utilisateurs installent généralement des applications à partir de référentiels bien contrôlés et que le risque de code hostile est faible.

Je suggérerais probablement quelques lectures supplémentaires pour maîtriser les autorisations Linux.

Le modèle de sécurité Android évolue pour répondre aux besoins des utilisateurs qui non seulement ne comprennent généralement rien du modèle de sécurité sous-jacent du système d'exploitation, mais ne comprennent pratiquement rien des ordinateurs.

Le modèle Linux (que j'aime beaucoup plus) est conçu pour permettre aux utilisateurs (et aux administrateurs en particulier) d'exercer plus de contrôle sur la sécurité du système (dans les limites si leurs autorisations le permettent).

Du point de vue de l'utilisateur, il est préférable de décrire la différence entre un contrôle entièrement automatique et semi-automatique ou manuel. Les consommateurs modernes veulent une auto complète. Linux a semi-automatique et manuel. La plupart des utilisateurs de Linux n'ont jamais besoin de connaître le modèle de sécurité de nos jours, mais le contrôle est là si vous en avez besoin ou si vous le souhaitez.

StephenG
la source
2

Lorsque vous installez certains programmes, vous pouvez les installer dans votre propre espace utilisateur (c'est-à-dire autonomes dans votre répertoire personnel) et non à l'échelle du système. En tant que tel, il ne vous est pas demandé de privilèges de superutilisateur car vous n'en avez pas besoin pour installer un programme pour un usage personnel. Un programme ainsi installé ne pourrait en effet pas accéder aux fichiers non accordés à la permission "non propriétaire non membre du groupe peut lire cette" absence d'une élévation de privilèges.

DopeGhoti
la source
Si le programme est installé dans mon répertoire personnel, peut-il lire et écrire n'importe où dans le répertoire personnel?
stackinator
2
Il s'exécute avec vos autorisations, il peut donc accéder à tout ce que vous pouvez accéder.
DopeGhoti
1
Sur une machine mono-utilisateur, l'accès utilisateur uniquement n'est pas beaucoup plus sûr que l'accès root. Quoi qu'il en soit, tout ce qui est important est probablement accessible par votre utilisateur.
sudo