1150 Zeilen Legacy, eine Zeile Kotlin: Wie ich mit KI drei AWS-Bibliotheken neu gebaut habe
- vor 7 Stunden
- 2 Min. Lesezeit
Ich bin Christoph Sens, Software-Entwickler und als Freelancer auf KI-gestützte Softwareentwicklung und Legacy-Modernisierung spezialisiert. Statt das in einem Satz zu behaupten, zeige ich lieber ein Projekt, an dem es sich nachprüfen lässt.
Die Meldung, die nie verschwindet
Ein Sicherheits-Scan meldet dieselbe CVE seit Monaten. Der Eintrag im Tracking-Tool: "kein Update-Pfad vorhanden". Konkreter Anlass war bei mir ein Bündel aus drei AWS-Bibliotheken – payload-offloading-java-common-lib-for-aws, amazon-sqs-java-extended-client-lib und amazon-sns-java-extended-client-lib –, die große SQS-/SNS-Nachrichten transparent nach S3 auslagern. Funktional unauffällig, technisch überfällig: Java 8, Jackson 2, und Wrapper-Klassen mit elf- bis zwölfhundert Zeilen reinem Pass-through-Code.
Wo die Lücke wirklich sitzt
Die Bibliotheken hängen an jackson-databind 2.15.2 und jackson-core 2.16.0. Beide Versionen tragen konkrete, aktive Sicherheitslücken: CVE-2023-35116 betrifft jackson-databind bis genau dieser Version, und erst im Februar 2026 kam mit GHSA-72hv-8253-57qq eine weitere Schwachstelle im asynchronen Parser hinzu – zu dem Zeitpunkt noch ohne eigene CVE-Nummer, wodurch sie in reinen CVE-basierten Scans unsichtbar blieb. Ein Update auf eine neuere Jackson-Version hätte diese beiden Fälle geschlossen, aber nichts an der eigentlichen Architektur geändert: Die Klassenhierarchie stammt aus einer Zeit vor Kotlin-Coroutines, mit getrennten synchronen und asynchronen Client-Klassen, die praktisch identischen Code doppelt vorhalten.
Der eigentliche Grund, warum das trotzdem so bleibt, ist selten Unwissen. Fremden Code zu patchen und zu verstehen kostet Zeit, die niemand einplant, solange "es ja läuft". Genau das erklärt, warum sich CVEs in genau solchen Bibliotheken über Jahre ansammeln.
Neu gebaut, nicht geflickt
Ich habe nicht gepatcht. Ich habe neu gebaut – mit KI, an einem Nachmittag, von der Idee bis zur Veröffentlichung: s3overflow, sqsoverflow, snsoverflow.
Sicherheit: raus statt geflickt. Jackson wurde nicht aktualisiert, sondern komplett entfernt und durch kotlinx.serialization ersetzt. CVE-2023-35116 und GHSA-72hv-8253-57qq sind für diesen Code damit nicht gepatcht, sondern gegenstandslos – und mit ihnen jede Jackson-Lücke, die noch kommt.
Architektur: 1150 Zeilen werden zu einer. Kotlins Interface-Delegation ersetzt die komplette Pass-through-Klasse:
class SqsExtendedClient(
private val sqsClient: SqsClient,
private val clientConfig: SqsExtendedClientConfig,
) : SqsClient by sqsClient {
override suspend fun sendMessage(input: SendMessageRequest): SendMessageResponse { /* ... */ }
// + 7 weitere Methoden mit echter Fachlogik – der Rest des Interfaces
// wird von "by sqsClient" automatisch durchgereicht
}Acht Methoden mit echter Fachlogik bleiben. Der Rest des Interfaces – Dutzende Methoden wie createQueue oder listQueues – schreibt sich selbst.
Sorgfalt: KI-generiert heißt nicht ungeprüft. Jedes der drei Projekte wurde einzeln lizenzrechtlich bewertet. s3overflow ist eine unabhängige Neuentwicklung ohne übernommenen Code. sqsoverflow und snsoverflow sind als abgeleitete Werke deklariert, mit dateigenauer Attribution zum Original – so wie es die Apache-2.0-Lizenz der Vorlagen verlangt, nicht wie es bequem wäre.
Ergebnis: live, nicht nur fertig. Alle drei sind quelloffen und auf Maven Central veröffentlicht, einsatzbereit mit einer Zeile Gradle:
implementation("com.christoph-sens:sqsoverflow:1.0.0")Was das für Ihr Projekt bedeutet
Dieses Projekt ist bewusst klein gewählt, weil sich daran jeder Schritt nachvollziehen lässt: das Problem konkret benennen, die Ursache technisch belegen statt vermuten, und mit KI eine Lösung bauen, die man auch verantworten kann – inklusive Lizenzprüfung, nicht nur Code.
Genau das ist die Arbeit, die ich als Freelancer anbiete: KI-gestützte Softwareentwicklung, Modernisierung von Legacy-Systemen und Backend-Entwicklung mit Kotlin und AWS, bei der am Ende nicht nur Code steht, sondern etwas, das produktiv läuft und geprüft ist.
Wenn in Ihrem Stack eine ähnliche Meldung seit Monaten liegen bleibt, sprechen Sie mich an.



