Comretix Blog

Wir bieten aktuelle Informationen über uns und aus der IT Welt.

Keine Datenlecks mehr: TrapC soll die Speicherprobleme von C und C++ beheben

TrapC ist eine neue, auf Cybersicherheit spezialisierte Variante der Programmiersprache C. Sie zielt darauf ab, die in C und C++ gängigen Speicherprobleme und Pufferüberläufe zu verhindern.

Anzeige

Der von Robin Rowe entwickelte TrapC-Compiler soll Ende des Jahres 2025 als Open-Source-Software verfügbar sein und ermöglicht es, C und TrapC-Code parallel zu verwenden. Zudem soll TrapC auch zu einfachem C++-Code kompatibel sein, zum Beispiel:

// hello.cpp #include <iostream> int main() { std::cout << "hello world" << std::endl; return 0; }

Rowe hat sein Projekt auf dem letzten ISO-C-Meeting Ende Februar in Graz vorgestellt. Der TrapC-Compiler setzt auf speichersichere Zeiger, was Speicherlecks und Speicherüberläufe verhindern soll. Parallel dazu greifen Sicherheitsfunktionen, die in C fehlen, wie Konstruktoren und Destruktoren aus C++. TrapC entfernt zudem unsichere Schlüsselwörter wie goto und union und fügt neue Schlüsselwörter wie trap und alias hinzu. In einem Whitepaper nennt Robin Rowe ein Beispiel dafür, wie TrapC einem Pufferüberlauf entgegenwirkt: ein User-Dialog, in dem Anwender ihre Namen eingeben. In C geschrieben, sieht die entsprechende Code-Passage so aus:

// gets_input.h (CWE–242, CWE–120, CWE-77) #include <stdio.h> inline void gets_input() { char buffer[24]; printf("Please enter your name and press <Enter>\n"); gets(buffer);// TrapC will terminate on overrun! printf("%s",buffer); }

Geben Anwenderinnen und Anwender mehr als 24 Zeichen ein, provoziert das einen Pufferüberlauf und öffnet einen Exploit für Angreifende. In C oder C++ wird dieser Fehler nicht unbedingt registriert, was zu einem Crash führt.

Dagegen kommt es mit TrapC nicht zu einem Absturz. Im Fall eines Speicherüberlaufs oder anderen Fehlern wie etwa einer Teilung durch Null beendet der TrapC-Compiler das Programm und wirft eine entsprechende Fehlermeldung aus, es sei denn, es existiert eine passende Fehlerroutine.

C-Sprachen als Mengendiagramm C-Sprachen als Mengendiagramm

So überschneidet sich TrapC mit C und C++

(Bild: Robin Rowe)

Mit dem Stichwort trap führt TrapC ein eigenes Error-Handling ein. Ein Beispiel:

// trap_test.tc #include "gets_input.h" int main() { gets_input(); trap { puts("ERROR: invalid input"); return 1; } return 0; }

Dabei muss die aufrufende Funktion die Fehler behandeln, denn sie lassen sich nicht wie bei C++-Exceptions weiterreichen. trap.return bietet jedoch eine ähnliche Funktion wie throw. Weitere Details der Sprache finden sich im Whitepaper.

(Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.)

(Ursprünglich geschrieben von Heise)
×
Stay Informed

When you subscribe to the blog, we will send you an e-mail when there are new updates on the site so you wouldn't miss them.

Patchday: Attacken auf Android-Smartphones beobach...
HP stopft 233 Sicherheitslecks im Thin-Client-OS T...
 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Bereits registriert? Hier einloggen
Dienstag, 04. November 2025

Die Comretix GmbH ist ein IT Systemhaus aus Tuttlingen. Seit über 30 Jahren betreuen wir unsere Kunden in Baden-Württemberg, der Schweiz und im gesamten Bundesgebiet mit Leidenschaft, Fairness und Loyalität. Wir bauen auf eine zuverlässige Partnerschaft mit unseren Lieferanten und Kunden. Unseren Mitarbeitern stehen wir auf Augenhöhe gegenüber.

Comretix GmbH Logo