Forum: PC Hard- und Software Debugging Linux Capabilities


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 Ein T. (ein_typ)


Lesenswert?

Hallo,

ich möchte gerne herausfinden, welche Linux Capabilities 
(capabilitites(7)) bestimmte Programme benötigen. Bei vielen ergibt sich 
das bereits aus der detaillierten Kenntnis ihrer Funktion. Aber es wäre 
natürlich viel schöner, wenn man diese Capabilities irgendwie "abfragen" 
könnte oder wenigstens die Kernel-Logs befragen könnte...

Kennt hier jemand eine Möglichkeit, die von einem Programm benötigten 
Capabilities in Erfahrung zu bringen, und könnte dazu bitte ein wenig 
erzählen? Lieben Dank für sachdienliche Hinweise. ;-)

von foobar (Gast)


Lesenswert?

> Kennt hier jemand eine Möglichkeit, die von einem Programm benötigten
> Capabilities in Erfahrung zu bringen

Schau in die Doku des Programms.  Wenn da nichts steht, frag den 
Programmierer (aber nicht wundern, wenn du nur ein "braucht 
root/CAP_SYS_ADMIN[1]" als Antwort bekommst).  Ein Automatismus zum 
Erkennen der benötigten Capabilities (statische und/oder dynamische 
Analyse) funktioniert nur in trivialen Fällen korrekt.

MMn sind Capabilities ein typische Beispiel, wie man es nicht machen 
sollte: mehr Sicherheit durch hohe Komplexität und einem daraus 
folgenden administrativen Alptraum - ist mMn mehr Augenwischerei als 
tatsächlicher Sicherheitsgewinn.




[1] Grob die Hälfte (Tendenz steigend) aller Tests im Kernel benutzen 
CAP_SYS_ADMIN - es ist dadurch ziemlich gleichbedeutend mit "root". 
Soviel zu "fine grained control" ...

von Nano (Gast)


Lesenswert?

Ein T. schrieb:
> Kennt hier jemand eine Möglichkeit, die von einem Programm benötigten
> Capabilities in Erfahrung zu bringen,

Eventuell das Programm mit restriktiv eingestellten firejail Settings 
und firejail davor starten und dann schauen, wo das Programm meckert.

von Ein T. (ein_typ)


Lesenswert?

Vielen lieben Dank für die Antworten, wenngleich das Erhoffte -- 
irgendwas, das ich aktivieren und dann irgendwo Ausgaben oder 
Logmeldungen wie etwa "process 4711 requested CAP_RÜBENNASE" abgreifen 
kann -- leider nicht dabei ist. Als bekennender Faulpelz finde ich das 
natürlich schade.

Firejail kannte ich übrigens noch gar nicht, sieht aber sehr interessant 
aus und ist vielleicht weniger aufwändig als meine bisherige Methode mit 
AppArmor-Profilen. Mal sehen, ich bin gespannt, lieben Dank für den 
Tipp!

von foobar (Gast)


Lesenswert?

> irgendwas, das ich aktivieren und dann irgendwo Ausgaben oder
> Logmeldungen wie etwa "process 4711 requested CAP_RÜBENNASE"
> abgreifen kann

Wenn du unbedingt eine dynamische Analyse (mit fragwürdigem Ergebnis) 
durchführen willst, schau mal nach "capable"[1], ein Werkzeug aus "BCC" 
(BPF Compiler Collection) - das logged Capabilitytests, die das Kernel 
macht.  Evtl musst du aber dein Kernel umkonfigurieren, damit die dafür 
benötigten Features drin sind.  Kann sein, dass in 
dprobes/kprobes/ktrace/LTT auch was dabei ist.  Sind aber alles 
verhältnismäßig komplexe Developertools.

Boilerplate: Benutze selbst keine Capabilities und hab die Tools nie 
eingesetzt.

[1] https://github.com/iovisor/bcc/blob/master/tools/capable.py

von Ein T. (ein_typ)


Lesenswert?

foobar schrieb:
> Wenn du unbedingt eine dynamische Analyse (mit fragwürdigem Ergebnis)
> durchführen willst, schau mal nach "capable"[1], ein Werkzeug aus "BCC"
> (BPF Compiler Collection) - das logged Capabilitytests, die das Kernel
> macht.

Wow, das sieht sehr nach dem aus, was ich suche, vielen lieben Dank für 
diesen wunderbaren Tipp! In Debian und Ubuntu sind sogar schon fertige 
Pakete in den Repositories der Distributionen vorhanden (unter Ubuntu 
heißt das Programm "capable-bpfcc" aus dem Paket "bpfcc-tools"), dann 
werden wohl auch deren Kernels schon dafür konfiguriert sein. Ein erster 
schneller Test sieht auch schon sehr vielversprechend aus, yay! 
Dankeschön! ;-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.