Fil-C macht setjmp/longjmp und ucontext speichersicher

✍️ OpenClawRadar📅 Veröffentlicht: 1. Juli 2026🔗 Source
Fil-C macht setjmp/longjmp und ucontext speichersicher
Ad

Fil-C, der speichersichere C-Dialekt, unterstützt nun setjmp/longjmp und die ucontext-APIs (setcontext, getcontext, makecontext, swapcontext) ohne Stack-Korruption oder Capability-Verstöße. Die Funktion wurde in Version 0.680 eingeführt und ist beim Bau aus dem Quellcode verfügbar.

Das Problem mit Kontext-APIs

Diese APIs sind berüchtigt unsicher, da Missbrauch einen hängenden Stack wiederherstellen kann. Häufige Fehler sind:

  • Aufruf von setjmp oder getcontext in einer Funktion, dann Rückkehr – der gespeicherte Kontext zeigt auf einen nicht mehr existierenden Stack-Frame.
  • Beenden des Threads und dann versuchen, die Ausführung auf einem freigegebenen Stack wiederherzustellen.
  • Erstellen eines Kontexts mit makecontext auf einem Stack, Freigabe dieses Stacks, dann swapcontext oder setcontext darauf.
  • Übergabe des aktuell ausgeführten Kontexts als zweites Argument an swapcontext (Vertauschen mit sich selbst).

In Standard-C („Yolo-C“) verursachen diese Fehler stille Stack-Korruption, schwer zu debuggende Abstürze und potenzielle Sicherheitslücken. In Fil-C führen alle derartigen Fälle zu einem Panic am Ort des Missbrauchs.

Ad

Wie Fil-C Speichersicherheit implementiert

Fil-Cs Ansatz unterscheidet sich für setjmp/longjmp und ucontext. Bei setjmp/longjmp besteht die zentrale Herausforderung darin, dass setjmp zweimal zurückkehrt – einmal beim Aufruf, erneut nach longjmp. Das Sichern des Kontexts bedeutet, dass der Compiler volatile-annotierte Variablen korrekt behandeln muss, aber Fil-C stellt sicher, dass die Wiederherstellung eines Kontexts niemals auf freigegebenen oder ungültigen Speicher zugreift.

Für ucontext verwaltet Fil-C Stacks so, dass die Operation entweder legal ist oder zu einem Panic führt, da hängende Stack-Frames einfach unmöglich sind.

Beispiel: setjmp/longjmp in Fil-C

Das folgende Programm demonstriert das Verhalten:

#include <setjmp.h>
#include <stdio.h>

int main(int argc, char** argv) { volatile int x = 42; jmp_buf jb; if (setjmp(jb)) { printf("x = %d\n", x); return 0; } x = 666; longjmp(jb, 1); printf("Should not get here.\n"); return 1; }

Dies gibt x = 666 aus und beendet das Programm. Ohne volatile könnte der Compiler optimieren und 42 ausgeben. Fil-C ändert die Optimierungssemantik nicht, verhindert aber in jedem Fall Speicherkorruption.

Für wen?

Entwickler, die ucontext-basierte Coroutinen (z. B. Boost-Fasern) oder setjmp/longjmp zur Ausnahmebehandlung in C-Programmen verwenden und Speichersicherheit wünschen.

📖 Den vollständigen Quelltext lesen: HN AI Agents

Ad

👀 Siehe auch

Testen von unzensierten Qwen 3.5 35B-Modellen für Cybersicherheitsfragen
Sicherheit

Testen von unzensierten Qwen 3.5 35B-Modellen für Cybersicherheitsfragen

Ein Cybersicherheitsexperte testete drei unzensierte Qwen 3.5 35B-Modelle mit Fragen zu Hacking und Sicherheitsumgehungen und stellte erhebliche Unterschiede in der Antwortqualität im Vergleich zum ursprünglichen zensierten Modell fest. Die unzensierten Modelle lieferten konsequent Antworten, bei denen das Originalmodell entweder ablehnte oder unvollständige Antworten gab.

OpenClawRadar
Snowflake Cortex Code CLI-Schwachstelle ermöglichte Sandbox-Escape und Malware-Ausführung
Sicherheit

Snowflake Cortex Code CLI-Schwachstelle ermöglichte Sandbox-Escape und Malware-Ausführung

Eine Sicherheitslücke in Snowflake Cortex Code CLI Version 1.0.25 und früher ermöglichte die Ausführung beliebiger Befehle ohne menschliche Genehmigung über eine Prozesssubstitutionsumgehung, was die Installation von Malware und das Umgehen der Sandbox durch indirekte Prompt-Injection erlaubte.

OpenClawRadar
MCP Sandbox: Führen Sie MCP-Server in isolierten Containern aus, ohne ihnen vertrauen zu müssen
Sicherheit

MCP Sandbox: Führen Sie MCP-Server in isolierten Containern aus, ohne ihnen vertrauen zu müssen

Ein Entwickler hat MCP Sandbox erstellt, das MCP-Server in isolierten gVisor-Containern mit standardmäßig verweigerter Netzwerkzugriff und sicherer Geheimniseinschleusung ausführt, plus CVE-Scanning und Musterprüfung vor der Ausführung.

OpenClawRadar
Passen Sie Ihr OpenClaw an: Kosten sparen und Sicherheit verbessern
Sicherheit

Passen Sie Ihr OpenClaw an: Kosten sparen und Sicherheit verbessern

Entdecken Sie, wie Sie Ihren OpenClaw anpassen können, um nicht nur Geld zu sparen, sondern auch die Sicherheit zu erhöhen, wie im r/openclaw-Subreddit diskutiert.

OpenClawRadar