Redhat patcht 6 Monate nach Fedora

Wer heute die Patchnotes der CERTs verfolgt hat, wird dort eine Warnung für BASH finden, die vom Redhat Security Team stammt.

Betroffene Software:

  Bash
  

Betroffene Plattformen:

  Red Hat Enterprise Linux Desktop 6
  Red Hat Enterprise Linux HPC Node 6
  Red Hat Enterprise Linux Server 6
  Red Hat Enterprise Linux Workstation 6
  
Mehrere Schwachstellen in GNU Bash ermöglichen einem lokalen, nicht
authentisierten Angreifer die Ausführung beliebigen Programmcodes, auch mit
Administratorrechten, sowie das Umgehen von Sicherheitsvorkehrungen u.a. mit
der Folge eines Denial-of-Service (DoS)-Zustandes.

Red Hat stellt für die Red Hat Enterprise Linux 6 Produkte Server, Desktop,
Workstation und HPC Node Sicherheitsupdates bereit.

Patch:

  Red Hat Security Advisory RHSA-2017:0725

  <http://rhn.redhat.com/errata/RHSA-2017-0725.html>

Da es sich hier um eine aus meiner Sicht problematische Sicherheitslücke handelt, ist es unverständlich, wieso RedHat 6 Monate gewartet hat. Fedora, daß ja im Prinzip vom selben Team mit betreut wird, hatte den Patch bereits im September 2016 eingepflegt:

* Fr Sep 30 2016 Siteshwar Vashisht <svashisht@redhat.com> - 4.3.42-7
- CVE-2016-7543: Fix for arbitrary code execution via SHELLOPTS+PS4 variables
  Resolves: #1379634

* Mi Sep 21 2016 David Kaspar [Dee'Kej] <dkaspar@redhat.com> - 4.3.42-6
- CVE-2016-0634 - Fix for arbitrary code execution via malicious hostname
  Resolves: #1377614

Für mich erschreckend daran, daß die Lücke auch nur als Moderate geführt wird, obwohl man mit Hilfe eines DHCP Servers Code auf einem Computer ausführen kann. Einen Rouge DHCP Server in ein Netz zu bringen ist nachdem man einen Computer übernommen hat, nicht mehr so schwer. Da die meisten Netze via DHCP gemanaged werden, reagieren natürlich auch praktische alle Rechner im Netz auf so einen Angriff. Um so mehr ist es unverständlich, wie es sechs Monate gedauert hat, bis der Patch endlich erstellt wurde.

Und dabei hatte ich vor, die Linux Distributionen für Ihre zügigen Updates zu loben, was zumindest bei Fedora stimmt.

Escapesequenzen im /etc/issue

Desktopuser kennen das weniger, aber wer sich per Monitorkonsole auf einem Linuxsystem einloggt, der bekommt eine Anzeige, welches OS grade läuft und welcher Kernel aktiv ist.

Das Template dazu heißt  „/etc/issue“ . Es könnte so aussehen:

\S
Kernel \r on an \m (\l)

Aber was heißen die ganzen Platzhalter und welche gibt es überhaupt :

\b  Serialspeed des Terminals ( Bitrate )
\d Datum
\e  Leerzeile
\l    Konsolendevice (tty)
\m Architektur des Prozessors
\n  Servername
\o  (none) ???
\r   Kernelversion
\s   OS ( Linux )
\t aktuelle Uhrzeit
\u  Anzahl der CPUs
\v Buildinfo des Kernels
\O Domain in der sich der Computer befindet
\S OS ID String
\U Anzahl der eingeloggten Benutzer

Alles was man jetzt machen muß, ist die gewünschten Platzhalter mit einem verbindlichen Text, oder auch ohne Text, in die /etc/issue zu schreiben. Das wars.

Update: Fedora OpenSSH Alarm: Nicht updaten auf 7.2p2-6 !

Wie gestern schon berichtet, ist die openssh Version 7.2p2-6 für Fedora defekt,

Wer keinen Zugang zu seiner Monitor Konsole hat und trotzdem das Downgrade einspielen muß, kann nun auf diesen Weg zurückgreifen:

Workaround V2.0: Downgrade auf 7.2p2-3

Über den Kojilink lädt man die drei Pakete runter:

Koji :  http://koji.fedoraproject.org/koji/buildinfo?buildID=756836

dann loggt man sich via defektem SSHD ein und  downgraded die Files für einen oneshot CronJob:

echo „59 16 * * * root /usr/bin/rpm -U –force /tmp/openssh*rpm > /tmp/log; rm -f /etc/cron.d/onetime“ > /etc/cron.d/onetime

Die Uhrzeit muß man natürlich an seine aktuelle Zeit anpassen 😉

Dann Ausloggen und nach der Zeit wieder einloggen. Der Befehl „rpm -qa | grep openssh“ sollte dann 7.2p2-3 anzeigen, welches die letzte funktionierende Version war.  Danach in /etc/dnf/dnf.conf einfügen:

exclude=openssh*

erst dann zieht das nächste Update nicht wieder die defekte Version auf den Server.

Das ganze klappt, weil der crond als „echter“ Root außerhalb der SSH Session läuft und nicht über sshd angetriggert wird.

Erste Hinweise zu den Ursachen des Problems

Wie im Bugtracker von RedHat einsehbar ist, kristallisieren sich grade Probleme mit der Chroot-Funktion vom SSHD heraus. Ist die Chroot aktiviert, was man tun sollte um Benutzer den Zugang zum System zu verweigern, so daß diese keine lokalen Angriffe fahren können, sondern in einer eigenen Umgebung arbeiten können. werden die für Root nötigen Capabilities nicht mehr gesetzt.

Capabilities sind die Eigenschaften eines Users, die erweiterte Rechte im Linuxsystem beinhalten, wie z.b. das Recht sich mit PTRACE in Prozessen einzuklinken, um diese zu belauschen oder zu verändern. Diese Capabilities machen Root erst aus und fehlen in der aktuellen sshd version:

# capsh --print
Current: =
Bounding set =
Securebits: 00/0x0/1'b0
 secure-noroot: no (unlocked)
 secure-no-suid-fixup: no (unlocked)
 secure-keep-caps: no (unlocked)
uid=0(root)
gid=0(root)
groups=

Meine Vermutung: Da hat wer zuviel weggepatcht 😉