← Neueste Arbeiten
🤖 machine learning

Verification Modulo Tested Library Contracts

Die Autoren stellen einen vom Gegenbeispiel geleiteten Lernrahmen vor, der in dem Werkzeug VMTLC implementiert ist und durch die Synthese modularer und kontextueller Verträge, die sowohl formale Korrektheitsbeweise als auch Testanforderungen erfüllen, die Verifikation von Client-Programmen komplexer Bibliotheken automatisiert.

Ursprüngliche Autoren: Abhishek Uppar, Omar Muhammad, Sumanth Prabhu, Deepak D'Souza, Madhusudan P, Adithya Murali

Veröffentlicht 2026-04-20
📖 5 Min. Lesezeit🧠 Tiefgang

Ursprüngliche Autoren: Abhishek Uppar, Omar Muhammad, Sumanth Prabhu, Deepak D'Souza, Madhusudan P, Adithya Murali

Originalarbeit lizenziert unter CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dies ist eine KI-generierte Erklärung des untenstehenden Papers. Sie wurde nicht von den Autoren verfasst oder gebilligt. Für technische Genauigkeit konsultieren Sie das Originalpaper. Vollständigen Haftungsausschluss lesen

Das große Problem: Der riesige Werkzeugkasten

Stellen Sie sich vor, Sie bauen ein Haus (das ist Ihr Programm). Um das Haus sicher zu bauen, brauchen Sie Werkzeuge und Materialien von einem riesigen, komplexen Lieferanten (das ist die Bibliothek).

In der Welt der Software-Sicherheit gibt es zwei extreme Ansätze:

  1. Der Perfektionist: Er überprüft jeden einzelnen Nagel, jede Schraube und jedes Brett des Lieferanten mit mathematischer Präzision, bevor er das Haus baut. Das ist extrem sicher, aber es dauert ewig und ist bei riesigen Werkzeugkisten oft unmöglich.
  2. Der Bauruine: Er vertraut blind auf den Lieferanten, baut das Haus und hofft, dass nichts einstürzt. Das ist schnell, aber gefährlich.

Die Autoren dieses Papiers schlagen einen dritten, pragmatischen Weg vor: Verifikation durch Testen.

Die neue Idee: "Verifizieren modulo getesteter Verträge"

Statt den gesamten Werkzeugkasten des Lieferanten mathematisch zu beweisen, tun wir folgendes:

  1. Wir schreiben einen Vertrag für die Werkzeuge (z. B. "Wenn ich einen Hammer nehme, muss er fest sein").
  2. Wir beweisen mathematisch, dass unser Haus sicher steht, wenn diese Verträge gelten.
  3. Statt den Hammer selbst zu zerlegen und zu analysieren, lassen wir einen Roboter-Tester den Hammer tausendmal gegen eine Wand schlagen. Wenn der Hammer dabei nicht kaputtgeht oder die Wand nicht beschädigt, akzeptieren wir den Vertrag als "gut genug".

Das ist der Kern: Wir beweisen das Haus, aber wir testen nur die Werkzeuge.

Die zwei Arten von Verträgen

Das Papier stellt zwei Arten von Verträgen vor, die wie zwei verschiedene Denkweisen funktionieren:

1. Der "Allgemeingültige Vertrag" (Modular Contract)

Das ist wie ein Vertrag, der für jeden Hammer gilt, egal wer ihn benutzt, wo er steht oder was er trifft.

  • Vorteil: Sehr sicher.
  • Nachteil: Schwer zu finden. Der Vertrag muss so komplex sein, dass er jede denkbare Katastrophe abdeckt. Oft ist das zu schwierig für Computer, um es automatisch zu finden.

2. Der "Kontextuelle Vertrag" (Contextual Contract) – Die geniale Neuerung

Das ist wie ein Vertrag, der nur für Ihr spezifisches Bauprojekt gilt.

  • Beispiel: Ihr Bauleiter (das Programm) benutzt den Hammer niemals, um auf Glas zu schlagen. Er schlägt nur auf Holz.
  • Der Vertrag: "Wenn dieser Hammer auf Holz geschlagen wird, bleibt er intakt."
  • Warum ist das besser? Dieser Vertrag ist viel einfacher zu finden und zu beweisen! Er ignoriert alle Szenarien, die in Ihrem spezifischen Projekt sowieso nie passieren.
  • Der Test: Der Roboter-Tester simuliert nur Ihre Baustelle. Er schlägt den Hammer nur auf Holz. Wenn er dabei nichts kaputt macht, ist der Vertrag für Ihr Projekt gültig.

Der Vergleich:

  • Ein allgemeiner Vertrag ist wie ein Versicherungspolster für "Alles, was auf der Welt passieren könnte".
  • Ein kontextueller Vertrag ist wie ein Versicherungspolster nur für "Das, was in meinem Wohnzimmer passiert". Es ist viel einfacher zu bekommen und trotzdem für Sie ausreichend sicher.

Wie funktioniert das alles automatisch? (Der Lern-Mechanismus)

Computer sind dumm, wenn sie nicht lernen dürfen. Das Papier beschreibt einen Prozess, der wie ein Schüler mit einem strengen Lehrer funktioniert:

  1. Der Schüler (der Synthesizer): Er versucht, Verträge und Regeln für das Haus zu erfinden.
  2. Der Lehrer (der Constraint Solver): Er prüft, ob die Regeln logisch das Haus sicher machen.
  3. Der Prüfer (der Tester): Er nimmt die neuen Verträge und schüttelt den Werkzeugkasten so lange, bis er einen Fehler findet.

Der Kreislauf:

  • Der Schüler schlägt einen Vertrag vor.
  • Der Prüfer findet einen Fehler (z. B. "Aha! Wenn du den Hammer auf Stein schlägst, bricht er!").
  • Der Schüler lernt daraus: "Okay, ich muss den Vertrag ändern, um Stein zu berücksichtigen" ODER (bei kontextuellen Verträgen) "Okay, mein Haus baut nie auf Stein, also ist das für mich irrelevant."
  • Der Schüler versucht es erneut.
  • Dieser Prozess wiederholt sich, bis der Schüler Verträge findet, die das Haus beweisen UND vom Prüfer nicht mehr angegriffen werden können.

Die Rolle von KI (LLMs)

Die Autoren nutzen auch Künstliche Intelligenz (LLMs), wie Chatbots, als "Schüler".

  • Die KI liest den Code und sagt: "Ich vermute mal, dieser Hammer hält für Holz."
  • Wenn der Tester das widerlegt, sagt die KI: "Oh, ich habe mich geirrt, lass es uns nochmal versuchen."
  • Das ist besonders nützlich, weil KI oft gute Vermutungen anstellt, die menschliche Programmierer übersehen würden.

Das Ergebnis: Dualis

Die Autoren haben ein Werkzeug namens Dualis gebaut. Sie haben es an 43 echten, schwierigen Programmen getestet (die aus riesigen, offenen Bibliotheken wie denen von Facebook oder Google stammen).

  • Ergebnis: Herkömmliche automatische Sicherheits-Tools haben bei diesen Programmen versagt (sie waren zu groß und komplex).
  • Dualis hat jedoch in den meisten Fällen erfolgreich Verträge gefunden, die die Sicherheit des Programms beweisen, indem es die Bibliotheken nur getestet (aber nicht mathematisch vollständig bewiesen) hat.

Fazit in einem Satz

Statt zu versuchen, das Unmögliche zu beweisen (die Perfektion eines riesigen Werkzeugkastens), beweisen wir die Sicherheit unseres eigenen Hauses, indem wir die Werkzeuge nur so weit testen, wie es für unser spezifisches Haus nötig ist – und das alles automatisch mit Hilfe von lernenden Computern.

Das ist ein großer Schritt, um Software-Sicherheit auch für riesige, komplexe Programme praktikabel zu machen.

Ertrinken Sie in Arbeiten in Ihrem Fachgebiet?

Erhalten Sie tägliche Digests der neuesten Arbeiten passend zu Ihren Forschungsbegriffen — mit technischen Zusammenfassungen, in Ihrer Sprache.

Digest testen →