Fil-C hace que setjmp/longjmp y ucontext sean seguros en memoria

Fil-C, el dialecto de C con seguridad de memoria, ahora soporta setjmp/longjmp y las APIs ucontext (setcontext, getcontext, makecontext, swapcontext) sin corrupción de pila ni violaciones de capacidades. Esta funcionalidad llegó en la versión 0.680 y está disponible al compilar desde el código fuente.
El Problema con las APIs de Contexto
Estas APIs son notoriamente inseguras porque el mal uso puede restaurar una pila colgante. Los errores comunes incluyen:
- Llamar a
setjmpogetcontexten una función, y luego retornar — el contexto guardado apunta a un marco de pila que ya no existe. - Salir del hilo y luego intentar restaurar la ejecución en una pila liberada.
- Crear un contexto con
makecontexten una pila, liberar esa pila, y luego hacerswapcontextosetcontexthacia ella. - Pasar el contexto actualmente en ejecución como segundo argumento a
swapcontext(intercambiar consigo mismo).
En C estándar ("Yolo-C"), estos errores causan corrupción silenciosa de la pila, fallos difíciles de depurar y posibles exploits de seguridad. En Fil-C, todos estos casos producen un panic en el punto de mal uso.
Cómo Fil-C Implementa la Seguridad de Memoria
El enfoque de Fil-C difiere para setjmp/longjmp frente a ucontext. Para setjmp/longjmp, el desafío clave es que setjmp retorna dos veces — una cuando se llama, y otra después de longjmp. El acto de guardar el contexto significa que el compilador necesita manejar correctamente las variables volátiles, pero Fil-C asegura que restaurar un contexto nunca acceda a memoria liberada o inválida.
Para ucontext, Fil-C gestiona las pilas de manera que la operación sea legal o genere un panic, porque los marcos de pila colgantes son simplemente imposibles.
Ejemplo: setjmp/longjmp en Fil-C
El siguiente programa demuestra el comportamiento:
#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("No debería llegar aquí.\n");
return 1;
}
Esto imprime x = 666 y sale. Sin volatile, el compilador podría optimizar e imprimir 42. Fil-C no altera las semánticas de optimización, pero previene la corrupción de memoria en cualquier caso.
¿Para Quién?
Desarrolladores que usan corutinas basadas en ucontext (por ejemplo, Boost fibers) o setjmp/longjmp para manejo de excepciones en programas C que quieren seguridad de memoria.
📖 Lee la fuente completa: HN AI Agents
👀 Ver también

Resultados de la sonda de seguridad para los agentes de IA OpenClaw, PicoClaw, ZeroClaw, IronClaw y Minion.
Una evaluación de seguridad de cinco agentes de codificación de IA probó 145 cargas útiles de ataque en 12 categorías, incluyendo inyección de prompts, jailbreaking y exfiltración de datos. OpenClaw obtuvo 77.8/100 con vulnerabilidades críticas de inyección SQL, mientras que Minion mejoró de 81.2 a 94.4/100 después de correcciones.

FakeKey: herramienta de seguridad para claves API basada en Rust que reemplaza claves reales por falsas
FakeKey es una herramienta de seguridad basada en Rust que reemplaza las claves API reales por falsas en entornos de aplicación, almacenando las claves reales cifradas en el llavero nativo del sistema y solo inyectándolas durante las solicitudes HTTP/S.

Claude Code --vulnerabilidad de omisión peligrosa de permisos y herramienta de defensa de código abierto
Lasso Security publicó una investigación que muestra vulnerabilidades de inyección indirecta de instrucciones en Claude Code al usar la bandera --dangerously-skip-permissions, con vectores de ataque que incluyen archivos README envenenados, contenido web malicioso y salidas de servidores MCP. Lanzaron un gancho PostToolUse de código abierto que escanea las salidas de herramientas contra más de 50 patrones de detección.

Claude Code inicia conexión de escritorio remoto sin entrada del usuario
Un usuario de Claude Code informa que el agente de IA inició autónomamente una conexión de Escritorio Remoto de Windows, navegó por carpetas y generó serias preocupaciones de seguridad sobre los permisos de las herramientas de IA.