Zum Hauptinhalt springen

📩 bits ist allgemein verfĂŒgbar — vier signierte Agenten, die Sie herunterladen und verifizieren können

· 6 Minuten Lesezeit
Cert-IX Team
Platform Development Team

Die bits-Familie — die Agenten, die auf Ihren eigenen Maschinen laufen — ist ab sofort ĂŒber die Download-Seite beziehbar. Vier Binaries, jedes mit demselben SchlĂŒssel signiert, jedes vor der AusfĂŒhrung verifizierbar.

AgentVersionWas er tutPlattformen
bitcollectorv0.1.0-gaBeweisfÀhige Asset-Wahrheit von einem Host: Prozesse, Pakete, Ports, Konten, SicherheitslageLinux amd64/arm64, macOS amd64/arm64, Windows amd64
bitscannerv0.1.3-gaFindet die GerÀte, die Ihr Inventar nicht enthÀltLinux amd64/arm64
bitenforcerv0.1.0-gaValidierung von HĂ€rtungsrichtlinien und Pre-FlightLinux amd64/arm64
bitmapperv0.1.0-gaLive-Mitschnitt von Verbindungen — Endpunkte, Ports, Protokoll, ZĂ€hler, Verbindungszustand. Keine Prozesszuordnung in diesem ReleaseLinux amd64
Korrektur: bitmapper v0.1.0-ga ordnet Flows keinen Prozessen zu

In der Zeile oben stand zunĂ€chst „Live-Mitschnitt von Verbindungen mit Zuordnung je Prozess", und der bitmapper-Eintrag unter WofĂŒr jeder Agent da ist behauptete, bitmapper melde, „welche Prozesse tatsĂ€chlich womit sprechen, zugeordnet je Verbindung". Beides war fĂŒr das Binary, das dieser Beitrag ankĂŒndigt, falsch — und zwar falsch in der Richtung, die Sie etwas kostet: Die Zuordnung je Prozess ist das, was bitmapper von einem Scanner außerhalb des Hosts unterscheidet, und sie ist der eigentliche Grund, ihn auszurollen.

Gemessen am veröffentlichten 0.1.0-ga — Commit 64ebc64, das Artefakt, das heute auf der Download-Seite liegt — trug kein einziger von 12 mitgeschnittenen Flows irgendeine Prozesszuordnung, darunter ein 60 Sekunden langer Flow, dessen besitzender Prozess durchgehend lebte und abfragbar war. destination_process wurde außerhalb von Testcode nie befĂŒllt. In diesem Build wird die Auflösung genau einmal versucht, beim Anlegen der Verbindung, gegen einen Schnappschuss der Socket-Tabellen, der den Socket einer eben erst entstandenen ausgehenden Verbindung gar nicht enthalten kann; kein spĂ€teres Paket versucht es erneut, und es gibt keine Ableitung aus lauschenden Sockets, auf die zurĂŒckgefallen werden könnte — dieser Code steckt in 64ebc64 schlicht nicht drin.

Was v0.1.0-ga tatsĂ€chlich tut, ist passiver Flow-Mitschnitt, und dieser Teil ist echt. Jede verfolgte Verbindung wird als Flow-Datensatz exportiert: Quell- und Zielendpunkte, Ports, Protokoll, Verbindungszustand, Richtung, Schnittstelle, erste und letzte Beobachtung, Dauer sowie Byte- und PaketzĂ€hler — und niemals ein einziges Nutzdaten-Byte. Das ist eine brauchbare Antwort auf „womit spricht diese Maschine". Es ist keine Antwort auf „welcher Prozess tut es".

Die Zuordnung je Prozess ist implementiert und verifiziert — sie steckt nur nicht in dem Binary, das Sie herunterladen können. Auf demselben PrĂŒfstand, der 0 von 12 gemessen hat, ordnet der Nachfolger 12 von 12 zu, schreibt die Antwort an das Ende, dem der Socket wirklich gehört, und trennt einen direkten Socket-Treffer von einer Ableitung — und benennt niemanden, wenn an einem Port mehrere Prozesse lauschen. Sie kommt mit dem nĂ€chsten bitmapper-Release. Ein Datum hĂ€ngen wir hier nicht daran: Wir haben Ihnen bereits einmal gesagt, diese FĂ€higkeit sei ausgeliefert, als sie es nicht war.

Wenn Sie bitmapper im Vertrauen auf den ursprĂŒnglichen Satz heruntergeladen haben, ist das unser Fehler. Prozesszuordnung legt genau dar, was das heutige Binary auflöst und was es ablöst.

Warum manche Agenten weniger Plattformen auffĂŒhren als andere​

Weil ein Binary, das sich installiert, sich als gesund meldet und nichts erfasst, schlechter ist als gar kein Binary.

Jede Plattform in dieser Tabelle ist eine, auf der der Agent seine Arbeit tut. Wo er das nicht tĂ€te, haben wir ihn nicht veröffentlicht — und wir sagen das lieber, als Sie es nach einem Rollout entdecken zu lassen:

  • bitenforcer lĂ€uft nur unter Linux. Seine gesamte OberflĂ€che sind iptables, sysctl, systemd und SELinux. Unter macOS gibt es das nicht, der Agent wĂŒrde also nichts validieren, und seine Rollback-Primitive hĂ€tten nichts wiederherzustellen.
  • bitmapper lĂ€uft nur unter Linux amd64. Er braucht eine echte, einkompilierte Bibliothek fĂŒr den Paketmitschnitt. Ein Build ohne sie erzeugt trotzdem ein lauffĂ€higes Binary — eines, das ĂŒberhaupt nichts mitschneidet —, deshalb verweigert unsere Release-Pipeline die Signatur fĂŒr ein Artefakt, das nicht nachweislich mitschneiden kann.
  • bitscanner lĂ€uft nur unter Linux, aus derselben Art von Grund: Seine Leser fĂŒr Nachbarn und Routen sind fĂŒr Linux implementiert.

Wir gehen davon aus, dass diese Listen wachsen. Wenn sie es tun, dann weil der Agent auf dieser Plattform erprobt wurde, nicht weil er sich kompilieren ließ.

Verifizieren, bevor Sie ausfĂŒhren​

Jedes Release liefert je Binary eine abgetrennte Signatur, eine SBOM und eine Build-Attestierung, dazu eine signierte SHA256SUMS ĂŒber den gesamten Satz. Die Builds sind reproduzierbar: Die Pipeline baut zweimal von Grund auf neu und verweigert die Veröffentlichung, sofern beide nicht byte-identisch sind.

Der SignaturschlĂŒssel ist an drei unabhĂ€ngigen Stellen veröffentlicht, die ĂŒbereinstimmen mĂŒssen: auf der Dokumentationsseite, in einem DNS-TXT-Record mit seinem Fingerabdruck und in einem zweiten TXT-Record mit dem SchlĂŒssel selbst. Gleichen Sie mindestens zwei davon ab. Eine Signatur ist nur so viel wert wie der Vertrauensanker dahinter, und eine einzige Quelle ist ein Ritual, keine PrĂŒfung.

# Den SchlĂŒssel ĂŒber DNS beziehen — funktioniert in der CI, wo Bot-Schutz einfache HTTPS-Abrufe blockiert
dig +short TXT _cosign-key.cert-ix.com | tr -d '"' | sed 's/.*key=//' \
| base64 -d | openssl pkey -pubin -inform DER -out cosign.pub

# BestĂ€tigen, dass es UNSER SchlĂŒssel ist — gegen den auf der Dokumentationsseite veröffentlichten Fingerabdruck
openssl pkey -pubin -in cosign.pub -outform DER | sha256sum
# erwartet: 552839f6b1b1eb0934557e1886326c7270584fa602fbf56f84754a98be3de822

# Dann das heruntergeladene Release verifizieren
cosign verify-blob --key cosign.pub --bundle SHA256SUMS.sig \
--insecure-ignore-tlog=true SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
DNS ist der Transport, nicht der Vertrauensanker

cert-ix.com veröffentlicht noch keinen DS-Record, DNS-Antworten sind daher nicht kryptografisch Ende-zu-Ende validiert. Den SchlĂŒssel ĂŒber DNS zu beziehen, ist bequem und funktioniert dort, wo HTTPS blockiert ist — aber was Vertrauen herstellt, ist der Abgleich des Fingerabdrucks mit der Dokumentationsseite, geladen ĂŒber HTTPS, mit validiertem Zertifikat. Überspringen Sie ihn nicht.

Die vollstĂ€ndige Anleitung — wozu jede Datei in einem Release da ist und wie eine fehlgeschlagene PrĂŒfung aussieht — steht unter Ihre Downloads verifizieren.

WofĂŒr jeder Agent da ist​

  • bitcollector — was auf dieser Maschine ist, als Nachweis statt als Behauptung. Jeder Batch ist attestiert, und die Kette lĂ€sst sich offline verifizieren, ganz ohne Zugriff auf Cert-IX.
  • bitscanner — die GerĂ€te, die ein agentenbasiertes Inventar bauartbedingt nicht sehen kann, weil auf ihnen nichts installiert ist. Wird inert ausgeliefert: Er bringt kein einziges Paket in Ihr Netz, bis Sie ihn ausdrĂŒcklich scharfstellen, und die Freigabe kann nicht aus einer Umgebungsvariable kommen.
  • bitenforcer — was eine HĂ€rtungsrichtlinie Ă€ndern wĂŒrde, bevor sie irgendetwas Ă€ndert. v1 validiert und berichtet; sie wendet nichts an.
  • bitmapper — womit diese Maschine tatsĂ€chlich spricht, Flow fĂŒr Flow: Endpunkte, Ports, Protokoll, ZĂ€hler und Verbindungszustand, live von ihren eigenen Schnittstellen mitgeschnitten. In v0.1.0-ga tragen diese Flows keine Prozesszuordnung — lesen Sie die Korrektur oben, bevor Sie darauf aufbauen.

Wo Sie anfangen​

Laden Sie einen Agenten herunter, verifizieren Sie ihn und lesen Sie die Seite zu dem, fĂŒr den Sie sich entschieden haben. Wenn Sie unsicher sind, welcher es sein soll: Was ist bits? erklĂ€rt, wie die vier zusammenpassen und — genauso wichtig — was jeder von ihnen bewusst nicht tut.