[Technik] CodePhage soll Sicherheitslücken in Programmen automatisch beseitigen

Das MIT arbeitet aktuell an einer Software die automatisch Bugs in Programmen stopfen soll. Hierzu importiert das Programm CodePhage Fehlerkorrekturen aus anderen Programmen.

Um dies zu bewerkstelligen soll CodePhage besser abgesicherte Programme scannen, die relevanten Teile des Codes extrahieren und in die fehlerhafte Anwendung einbauen. Hierbei soll der Source-Code der zu scannenden Anwendung nicht nötig sein. Während die Anwendung, die als Vorlage dient, ausgeführt wird analysiert CodePhage das Verhalten der Sicherheits-Checks, prüft diese auf Eignung und liest diese ggf. aus. Nachdem die fehlerhafte Anwendung "geheilt" wurde, werden diverse Tests durchgeführt, die sicherstellen sollen, dass die Heilung funktioniert hat. Das gesamte Vorgehen soll auch dann funktionieren wenn die Anwendungen in unterschiedlichen Programmiersprachen geschrieben wurden.

Erste Test waren laut den Entwicklern erfolgreich. Es wurden sieben Open-Source-Programme mit Sicherheitslücken geprüft. Diese konnten alle innerhalb von 10 Minuten repariert werden. Als nächstes möchten die Entwickler die Sicherheits-Checks beschleunigen.

Quelle:
 
Das ist zwar eine schöne Idee, aber wird sich wohl nur bei Software, die speziellen Lizenzen unterliegt, verwenden lassen.
Die meiste Software verbietet die Modifikation ihres Codes.
 
(heise.de)
Der leitende Entwickler Stelios Sidiroglou-Douskos skizziert eine Zukunft, in der CodePhage automatisch hybride Software baut [...]

Skynet, wir kommen!

Nein mal ernsthaft: Klingt cool, aber wahrscheinlich wahnsinnig aufwändig in Einrichtung und Nutzung...
Wer entscheidet eigentlich welches Programm "gut programmiert" ist ?
 
Wer entscheidet eigentlich welches Programm "gut programmiert" ist ?

Wie gut Programme programmiert sind, hängt sicherlich ein wenig davon ab, was du als "gut" bezeichnen möchtest.
Bspw. wäre die Source-Ansicht für einen Programmierer gut, wenn der Code sauber strukturiert und durchkommentiert ist, ggf. noch zusätzlich eine Dokumentation vorhanden ist. Wenn viel mit Klassen und Interfaces gearbeitet wird. Aus Sicht eines Anwenders ist gut programmiert, wenn es intuitiv, stabil und sicher ist. Je nachdem muss das Programm "gut skalieren", also sich bei riesigen Eingaben genauso verhalten, wie bei kleinen Eingaben.

Hier ist allerdings eher ein mathematisches/ informationstechnisches Verständnis von "gut" gemeint, also nichts, was abhängig vom Geschmack oder individuell wäre. Im Wesentlichen dürfte es dabei darum gehen, dass Benutzereingaben oder aus Drittquellen stammende Daten sauber verarbeitet werden. Etwa: "zuerst prüfen, ob die Daten verarbeitet werden können (wird eine Zahl erwartet, dann ist ein Stream keine gültige Eingabe), ob die Daten auch von Berechtigten eingegeben wurden (darf ein Nutzer Y einen Datensatz x ändern, wenn dieser zu Nutzer X gehört), ob die Daten zulässig sind (bspw. Division durch 0) etc. Ebenfalls könnte eine Rolle spielen, ob wo und wohin Daten gespeichert werden und wo sie ausgelesen werden (bspw. face-unlock, bei dem das Bildmaterial von der Festplatte geladen wird, statt von der Kamera). Das ist alles schon verdammt nahe an Optimierungsproblemen, wenn man es ein wenig mathematischer formuliert. Bei dieser Art Fragestellungen gibt es durchaus objektiv gute und schlechte Ansätze. Genauso wie du sagen kannst, dass x = 1 die Gleichung x + 1 = 2 löst und x = -1 keine (korrekte) Lösung für die Gleichung darstellt.
 
Zurück
Oben