Forum: PC Hard- und Software Linux: Weches Programm referiert eine spezielle Library?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Moriz (untertaucher)


Lesenswert?

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?

von Εrnst B. (ernst)


Lesenswert?

Holzhammer:

find /bin /usr/bin -executable -print0 | xargs -0 ldd |grep unwind

von Oliver S. (oliverso)


Lesenswert?

Da m.W. nach libunwind in libgcc verwendet wird, dürfte so ziemlich 
jedes Programm unter linux incl. linux selber darauf aufbauen.

Oliver

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

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.

: Bearbeitet durch User
von Moriz (untertaucher)


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch User
von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

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".

von Daniel A. (daniel-a)


Angehängte Dateien:

Lesenswert?

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.
1
apt-rdepends --reverse --dotty libunwind8 | dot -Tsvg >libunwind8.svg
Btw. ohne die recommends:
1
apt-rdepends --reverse --follow Depends,PreDepends --dotty libunwind8 | grep -v '^size' | dot -Tsvg >libunwind8.svg

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.

von Rüdiger B. (rbruns)


Lesenswert?


von Moriz (untertaucher)


Lesenswert?

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.

: Bearbeitet durch User
von Daniel A. (daniel-a)


Lesenswert?

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.

: Bearbeitet durch User
von Moriz (untertaucher)


Lesenswert?

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.

von Daniel A. (daniel-a)


Lesenswert?

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.

von Michi S. (mista_s)


Lesenswert?

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.

von Harald K. (kirnbichler)


Lesenswert?

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.

von Yalu X. (yalu) (Moderator)


Angehängte Dateien:

Lesenswert?

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.

: Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.