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