Heute kam auf Mint 19 ein Update für libunwind. Ich habe mir angesehen,
was die macht:
1
Package: libunwind8
2
Description-en: library to determine the call-chain of a program - runtime
3
The primary goal of this project is to define a portable and efficient C
4
programming interface (API) to determine the call-chain of a program.
5
The API additionally provides the means to manipulate the preserved
6
(callee-saved) state of each call-frame and to resume execution at any
7
point in the call-chain (non-local goto). The API supports both local
8
(same-process) and remote (across-process) operation. As such, the API
9
is useful in a number of applications.
Sehr interessant… ABER: das Ding birgt doch wohl ganz erhebliches
Missbrauchspotential. Deswegen wäre es interessant, herauszufinden,
welches Programmpaket diese Lib braucht.
Der Weg, zu einem bestimmten Executable die Liste der referierten Libs
zu finden, ist relativ einfach. Aber wie findet man Programmpakete, die
eine bestimmte Lib referieren?
Moriz schrieb:> Sehr interessant… ABER: das Ding birgt doch wohl ganz erhebliches> Missbrauchspotential.
Wieso das? Damit kann ein Programm seine eigenen Laufzeitdaten
analysieren. Auf die es ja sowieso Zugriff hat. Die Library umgeht keine
Sicherheitsmechanismen.
Libunwind wird von C++ benutzt um bei Exceptions den Stack abzuwickeln,
d.h. insbesondere um Ressourcen freizugeben. Somit dürften einige/alle
C++ -Programme auf deinem System (indirekt) von einer Version dieser
Library abhängig sein.
Ansonsten:
https://askubuntu.com/a/128527
Zeig mal die Ausgabe.
Niklas G. schrieb:> Zeig mal die Ausgabe.
Siehe Anhang.
> Wieso das?
Weil das genau das ist, was sich ein Virenprogrammierer oder Hacker
wünscht… insbesondere über Remote.
> Somit dürften einige/alle C++ -Programme auf deinem System (indirekt) von> einer Version dieser Library abhängig sein.
Um heraus zu bekommen, welche Anwendungen letztlich darauf
zurückgreifen, wird man wohl nur dadurch heraus bekommen, dass man jeden
Referenzbaum rückwärts abwickelt, bis man auf irgend was kommt, das
nicht mit lib… anfängt.
Moriz schrieb:> Weil das genau das ist, was sich ein Virenprogrammierer oder Hacker> wünscht… insbesondere über Remote.
Naja, dazu müsste der Angreifer aber erstmal Vollzugriff auf den
Speicher des Prozesses haben. Und dann hat man eh verloren. Und
stattdessen könnte der Angreifer das auch einfach mit einem Debugger
machen, libunwind ist dafür unnötig. Programme nutzen libunwind nur, um
sich selbst zu "analysieren".
Naja, am Missbrauchspotential habe ich einige Zweifel, aber egal.
1
apt-cache rdepends libunwind[0-9]
Highlights sind:
* xserver-xorg-core (der gute alte X11 desktop)
* libgstreamer1.0-0 (So ziemlich jede Musik / Video Wiedergabe
heutzutage)
* libcamera0.0.3 (Quasi das Mesa der Kameras, ist für komplexe
Smartphonecameras unverzichtbar)
* strace (Kennt jeder entwickler, extrem nützlich zum
nachsehen was ein Programm macht)
Ist aber nur eine Ebene. An, z.B. libgstreamer1.0-0 hängen dann noch
sachen wie:
* libweston-10-0 (und damit auch weston)
* pulseaudio (Das ist für die Audioausgabe vom System. Wobei, nun gibt
es ja noch pipewire, und alsa geht auch ohne.)
* libreoffice-core
* nautilus (Der Dateimanager unter Gnome)
* rygel, rhythmbox, totem, etc. (Die meisten Musik und Videoplayer,
aber nicht mpv)
Für alles gibt es noch apt-rdepends.
Siehe Anhang. So ziemlich alles hängt irgendwie mit drinn.
Auch nett: gnome-shell, und alle task-desktop.
Moriz schrieb:> Weil das genau das ist, was sich ein Virenprogrammierer oder Hacker> wünscht… insbesondere über Remote.
Naja, das ist eine Library, kein Server, vermutlich bezieht sich das auf
irgend welche lokalen ptrace Sachen oder gdb Debugging Apis oder irgend
so was. Von selbst macht das ding nicht viel.
Einen Speicherzugriffsfehler kann man damit übrigens auch nicht
einfacher ausnutzen, du hast vermutlich von Sachen wie ROP gehört, aber
wenn man auf dem Stack Speicher überschreiben kann, ist das lange bevor
man den Luxus hat irgendwelche libunwind APIs aufzurufen, und wenn man
mal soweit ist, dass man es könnte, braucht man es gar nicht mehr.
Daniel A. schrieb:> Siehe Anhang.
Es gelingt mir mit 3 verschiedenen Browsern nicht, die Anhänge
darzustellen…
Auch herunter laden und die Dateien mit verschiedenen Programmen zu
öffnen, schlägt fehl.
Die Vorschau ist kaputt, also den Link darunter auf machen. Chromium und
Firefox kommen bei mir damit klar. Die meisten andern Programme wollen
bei mir auch nicht. (Vermutlich ist die Datei zu gross oder so).
Wichtig ist, du musst entweder raus zoomen, oder runter / rüber
scrollen. Oben links ist viel leerer Raum. Oder eventuell einfach nach
"libunwind8" suchen, und den Browser zum Anfangspunkt scrollen lassen.
Daniel A. schrieb:> Die Vorschau ist kaputt, also den Link darunter auf machen.
Hab ich probiert – funktioniert nicht.
> Chromium und Firefox kommen bei mir damit klar.
Bei mir können es Vivaldi, Chromium und Firefox nicht. Es kommt jeweils
nur ein weißer Bildschirm, egal ob Vorschau oder der Link darunter.
Moriz schrieb:> Bei mir können es Vivaldi, Chromium und Firefox nicht. Es kommt jeweils> nur ein weißer Bildschirm, egal ob Vorschau oder der Link darunter.
Wie ich schon sagte:
Daniel A. schrieb:> Wichtig ist, du musst entweder raus zoomen, oder runter / rüber> scrollen. Oben links ist viel leerer Raum. Oder eventuell einfach nach> "libunwind8" suchen, und den Browser zum Anfangspunkt scrollen lassen.
Daniel A. schrieb:> Die Vorschau ist kaputt, also den Link darunter auf machen.
Kaputt in dem Sinn, daß sie ewig lädt; aber das angezeigte
Schwärzungsmuster (ganz links ist nur ganz unten was zu sehen, dann
kommt ein Hügel bis ganz rauf, später noch ein zweiter und dazwischen
und danach ist nur in der unteren Hälfte was zu sehen) scheint schon in
etwa zum eigentlichen Bild zu passen.
Und fürs Protokoll: Opera zeigt bei mir die eigentliche .svg problemlos
an.
Moriz schrieb:> Weil das genau das ist, was sich ein Virenprogrammierer oder> Hacker wünscht…
Selbst wenn diese lib für Bösewichte interessante Funktionen mitbrächte
sind diese ohne ein Executeable, das diese Funktionen entsprechend
nutzt, wertlos; wer es schafft Dir ein solches Programm unterzuschieben
und es gestartet bekommt, der hätte zu ebendiesem auch ohne wesentlichen
Mehraufwand die libunwind statisch dazulinken können… und hätte das wohl
auch so gemacht. Bei Malware will man, daß sie auf möglichst vielen
Zielsystemen läuft, also vermeidet man jegliche Abhängigkeit von
irgendwelchen vorinstallierten libs.
> insbesondere über Remote.
Das Wort remote kommt zwar in Deiner Beschreibung vor, aber ausdrücklich
im Sinn von prozessübergreifend; für Hacker/Viren wäre dagegen nur
remote im Sinne von hostübergreifend interessant, denn sobald er mal
einen von ihm kontrollierten Prozess auf Deinem Rechner am laufen hat,
hast Du ohnehin schon verloren.
Firefox zeigt einen weißen Bildschirm an. Allerdings mit Scrollbalken,
was erkennen lässt, daß da was sein kann. Scrollt man nach rechts unten,
kommt tatsächlich auch Inhalt.
Herauszoomen geht nicht, man kann nur hineinzoomen, was ziemlich sinnlos
ist.
Bei mir zeigt Firefox die Grafik korrekt an. Da sie viel weißen
Hintergrund enthält, muss man erst etwas herunterscrollen.
Viel relevanten Inhalt enthält sie allerdings nicht (s. angehängten
Ausschnitt). An anderen Stellen sieht das Ganze noch viel chaotischer
aus.