Sicherheitslücke im Gnome 3 Desktop

Im Gnome 3 Desktop klafft mindestens seit der Version für Fedora 18 eine Sicherheitslücke.

Diese betrifft i.d.R. Benutzer eines Laptops, da diese das Laptop öfters in den Suspend-on-Disk Modus versetzen um Energie zu sparen, auf Deutsch: Den Deckel zu machen 😉

Wenn das passiert, wird der Bildschirm schwarz, weil er ausgeht. Wenn der Bildschirm wieder angeht, sieht man auf einigen Rechnern den Inhalt des Desktops vor dem Suspend, bis der Screensafer einsetzt und dem ganzen einen Riegel vorschiebt:

Am 9.12.2015 wurde die Lücke zum zweiten Mal an Fedora und damit an Gnome gemeldet.

Ein zweites Mal ? Ja, genau. Schon in Fedora 18 wurde auf einem Laptop dieser Effekt bemerkt und an Fedora gemeldet. Da es sich um einen Security-Bug handelt, wurde darüber nichts bekannt. Im Laufe der nächsten Tage, kamen die Redhat- und Gnome-Entwickler zu dem Schluß, des es an dem „alten“ „langsamen“ Laptop liegen mußte und es modernen nicht reproduziert werden konnte.

Nun sind 2,5 Jahre rum und ich habe ein neues Laptop…. und den gleichen Bug wie vor 2,5 Jahren.

Diesmal gab es aber eine Fristsetzung für Gnome. Das Sie diesen Beitrag lesen können, bedeutet, daß die Schweigefrist von 90 Tagen um ist.

Wie können Sie diesen Bug ausnutzen um an Informationen zu gelangen ?

Eine Voraussetzung ist natürlich, daß das Opfer sensitive Daten angezeigt hat, bevor der Suspendmodus eingeleitet wurde. Ansonsten sehen Sie zwar den Desktop, aber außer einigen anrüchigen Pornohintergründen, wenden Sie vermutlich kaum etwas „entdecken“ können 🙂

Wie exploiten wird dies nun ?

Das ist schon so trivial, daß man sich schämen muß es zu erwähnen:

Handy nehmen
Videoaufnahme starten
auf den Bildschirm richten
Leertaste auf dem Opfer Laptop benutzen
etwas warten bis das Bild kommt.
Weggehen.

Spulen Sie die Videoaufnahme langsam ab und halten Sie einfach in dem Moment an, wenn der Bildschirm zusehen ist.

Kleiner Tip:

Das Laptop und der Monitor sollten in einer hellen Umgebung aufgenommen werden, also nicht nur den Bildschirm sondern auch etwas Dekor, weil dann der Videochip die Aufnahme nicht überstrahlt, wenn es von schwarz auf weiß umschlägt.

Gegenmaßnahmen:

Zuerst den Screensafer starten, dann den Suspendmodus benutzen.

Betroffen:

min. Fedora 18,19,20,21,22,23 mit Gnomedesktop
vermutlich: Ubuntu, Debian mit Gnome und alle Fedora vor 18 mit Gnome

Teamspeak und Skype unterbrechen den Sound

Kennen Sie das ? Sobald Teamspeak läuft, sind alle anderen Sounds im Pulseaudio gemutet.

Ursache ist eine Priorisierung der Audioquellen damit Sprachtools immer zu hören sind.
Teamspeak markiert seinen Datenstrom als „Voice“ Klasse, MPlayer dagegen als „Music“.

Das Verhalten kann man durch eine kleine Einstellung in der Datei /etc/pulse/default.pa ändern. Dort kommentiert man den Eintrag „load-module module-role-cork“ einfach aus.

Anschliessend muß man Pulseaudio neu starten und da wird es schwierig.

Erstmal muß man alle Audioanwendungen beenden, sonst endet das böse. Danach:

# pulseaudio -k
# pulseaudio –start

Danach dauert es etwas bis Pulseaudio wieder bereit ist und das Problem ist weg.

FFMPEG – Desktopsessions direkt encoden

Jeder Gamer kennt das Problem, man möchte seine Gamesession aufzeichnen und später bei Youtube hochladen. Unter Windows gibt es einige gute Tools das zu tun, z.b. Fraps. Unter Fedora Linux ist das noch einfacher, da im GNOME bereits der Desktop-Recorder integriert ist, sollte man jedenfalls meinen.

Wenn es funktionieren würde, gäbe diesen Beitrag wohl nicht, also was brauchen wir tatsächlich alles :

1. Pulse Audio
2. FFMpeg

Pulse Audio ist bereits drauf, sonst könnte man nichts hören, wichtig wäre aber für Pulse noch das Tool „pactl“ aus dem „pulseaudio-utils“ RPM . Damit ermittelt man zunächst mal den sogenannten Sink auf dem alles zusammen gemischt wird:

# pactl list sinks
Sink #0
    State: RUNNING
    Name: alsa_output.pci-0000_00_14.2.analog-stereo
    Description: Internes Audio Analog Stereo
    Driver: module-alsa-card.c
    Sample Specification: s16le 2ch 48000Hz
    Channel Map: front-left,front-right
    Owner Module: 8
    Mute: no
    Volume: front-left: 95197 / 145% / 9,73 dB,   front-right: 95197 / 145% / 9,73 dB
            balance 0,00
    Base Volume: 65536 / 100% / 0,00 dB
    Monitor Source: alsa_output.pci-0000_00_14.2.analog-stereo.monitor
    Latency: 25933 usec, configured 26000 usec
    Flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY
    Properties:
        alsa.resolution_bits = „16“
        device.api = „alsa“
        device.class = „sound“
        alsa.class = „generic“
        alsa.subclass = „generic-mix“
        alsa.name = „ALC887-VD Analog“
        alsa.id = „ALC887-VD Analog“
        alsa.subdevice = „0“
        alsa.subdevice_name = „subdevice #0“
        alsa.device = „0“
        alsa.card = „0“
        alsa.card_name = „HDA ATI SB“
        alsa.long_card_name = „HDA ATI SB at 0xfe300000 irq 16“
        alsa.driver_name = „snd_hda_intel“
        device.bus_path = „pci-0000:00:14.2“
        sysfs.path = „/devices/pci0000:00/0000:00:14.2/sound/card0“
        device.bus = „pci“
        device.vendor.id = „1002“
        device.vendor.name = „Advanced Micro Devices, Inc. [AMD/ATI]“
        device.product.id = „4383“
        device.product.name = „SBx00 Azalia (Intel HDA)“
        device.form_factor = „internal“
        device.string = „front:0“
        device.buffering.buffer_size = „352768“
        device.buffering.fragment_size = „176384“
        device.access_mode = „mmap+timer“
        device.profile.name = „analog-stereo“
        device.profile.description = „Analog Stereo“
        device.description = „Internes Audio Analog Stereo“
        alsa.mixer_name = „Realtek ALC887-VD“
        alsa.components = „HDA:10ec0887,10438444,00100302“
        module-udev-detect.discovered = „1“
        device.icon_name = „audio-card-pci“
    Profile:
        analog-output-lineout: Line Out (priority: 9900, available)
        analog-output-headphones: Analoge Kopfhörer (priority: 9000, not available)
    Aktive Profile: analog-output-lineout
    Formats:
        pcm

Das Rote ist nicht der benutzbare Name, immer die Monitor Quelle nehmen. Das geben wir direkt im FFMpeg Befehl als Audioquellenangabe an:

# ffmpeg -f x11grab -s 1440×900 -i :0.0 -r 25 -f pulse -i alsa_output.pci-0000_00_14.2.analog-stereo.monitor -c:v libx264 -preset slow -pix_fmt yuv420p -s 1440×900 -strict experimental -acodec aac -ab 128000 -ar 48000 -ac 2 -vbsf h264_mp4toannexb -f avi testvideo.avi

Diese Bashzeile müssen Sie nur entsprechend an Ihre Bildschirmauflösung anpassen und natürlich Ihr passendes Sink ermitteln. Der Rest ist an sich klar :

– X11grab: aktiviert den Screengrabber
– Audioinput von Pulse Audio
– h264 Codec fürs Video
– das Preset Slow sorgt für gute Qualität
– AAC mit 128kbit für den Audiocodec
– und Stereosoundkanäle
und am Ende noch der Dateinamen und das Dateiformat. Das war es schon und im Gegensatz zum GNOME-Screenrecorder kommt dabei auch was brauchbares aus. Das Ergebnis kann sofort im GNOME-Mplayer angesehen werden.

Hier ein paar Tips:

Die zweite Angabe von „-s 1440×900“ ist die Zielgröße fürs Video. Weicht diese vom ersten Wert ab, wird automatisch passend skaliert.

FFMpeg nimmt im Beispiel oben bei einer Mehrmonitorlösung den linken Monitor.

In einem früheren Beitrag habe ich bereits auf die Möglichkeiten des Autocroping von FFMpeg hingewiesen. Wenn man also von einem zweiten Monitor capturen möchte, muß man die Gesamtgröße des Bildschirms angeben und nicht nur die vom linken Monitor. Dann benutzt man den Cropfilter und schneidet den linken Monitor einfach weg.

In einem anderen Beitrag wurde gezeigt, wie man sich mit xwininfo anzeigen lassen kann, wie die Maße des Bildschirms sind.

FFMpeg kann gleichzeitig zwei oder mehr Audioquellen in den Film mit einbinden. Damit kann man sich z.b. auch eine Audiokommentarspur ins Video einfügen, wenn man das Micro mitschneidet. Meistens ist die PC-Hardware aber so lausig, daß man den Ton noch mal nachbearbeiten muß und vor allem soll das Video ja am Ende vermutlich noch geschnitten werden. Sinnvoll wäre es daher, den Ton mit Audacity aufzunehmen und dann gleich das Rauschen zu entfernen. Ansonsten muß man den Ton erst aus dem Video abspalten und dann am Ende das Video sowieso neu mischen, was beim Schneiden ohnehin passiert. Das besondere an FFMpeg ist nun, daß es die beiden Tonspuren auch gleich live zu einer Tonspur zusammen mischen kann. Wenn dann aber Geräusche oder Musik im Video vorkommen, wird das mit den Scheiden dann nichts mehr. Überlegen Sie also vorher was Sie wollen.