Un sistema operativo donde la autoridad se tiene, no se presupone
Casi todas las intrusiones funcionan igual: un programa alcanza algo que nunca debió tocar. ParanoidBSD es un sistema operativo construido para que no pueda. A cada programa se le entrega solo lo que necesita, y todo lo demás no está simplemente prohibido — está fuera de su alcance. Construido sobre HardenedBSD, reescrito en C++ moderno, con el original guardado al lado para poder contrastar cada cambio.
Qué es esto, en un minuto
Un sistema operativo está debajo de todo lo demás que ejecuta una organización. Casi todos se apoyan en décadas de código antiguo y dejan que cualquier programa pida cualquier cosa — el sistema decide después si se lo permite. Por eso un solo fallo en algo inofensivo, como el código que dibuja una fuente en pantalla, puede acabar en contraseñas robadas.
ParanoidBSD cambia lo que un programa puede pedir de entrada. En vez de comprobar el permiso después de la petición, entrega a cada programa una lista corta de cosas que puede tocar y no le da forma de nombrar ninguna otra. Un fallo en una parte deja de ser un camino hacia el resto.
Proveedores de defensa y de gobierno a los que ya se les pide software escrito en lenguajes más seguros. Equipos que pasan años sobre el terreno y no se pueden parchear deprisa — controladores industriales, máquinas médicas, equipos de servicios públicos. Docentes e investigadores que quieren un sistema operativo de verdad lo bastante pequeño para leerlo de punta a punta.
La autoridad ambiental es el fallo que no se puede parchear
En un Unix convencional, un proceso no posee el derecho a abrir
/etc/master.passwd. Simplemente lo pide, y el kernel decide después, según quién dice ser el proceso. Todo proceso puede nombrar todos los recursos del sistema. El espacio de nombres es global y ambiental; la comprobación es un añadido tardío.
Por eso un solo fallo de análisis en un renderizador de fuentes puede convertirse en un robo de credenciales. El renderizador nunca necesitó el archivo de contraseñas — pero nada en la arquitectura le impedía pedirlo.
HardenedBSD ya hace un trabajo serio aquí: aleatorización del espacio de direcciones (ASLR), que carga el programa en un sitio distinto cada vez para que un atacante no pueda adivinar dónde está nada; integridad del flujo de control (CFI), que impide desviar un programa hacia código que nunca fue hecho para ejecutar; y junto a ellas mitigaciones derivadas de PaX, SafeStack y asignadores de memoria endurecidos. PBSD conserva todo eso y cambia la forma de la pregunta que hay debajo — de “¿este proceso tiene permiso?” a “¿este proceso posee un descriptor para eso?”
Dos maneras de responder a una misma llamada al sistema
// Ambient authority — the traditional path int fd = open("/etc/master.passwd", O_RDONLY); // kernel walks a global namespace, then // checks uid/gid/MAC after the fact // Handle nucleus — the PBSD path auto f = dir_handle.open("master.passwd", Rights::Read); // there is no global namespace to walk. // no handle, no name, no operation.
Forma ilustrativa de la diferencia, no un listado literal de las llamadas que un programa hace al kernel — su interfaz de programación de aplicaciones, o API. El modelo de referencia está en docs/.
Sigue una llamada al sistema a través del núcleo
Dale al proceso algunos descriptores, elige algo que intente hacer y cambia entre los dos modelos de autoridad. El veredicto y el razonamiento se calculan en vivo en tu navegador — esto es un modelo didáctico del diseño, no un emulador de kernel.
Núcleo de capacidades — monitor de referencia
El proceso intenta…
Traza
Descriptores que posee el proceso
Veredicto
“Alcanzable” cuenta cuántas de las operaciones listadas podría llegar a hacer este proceso bajo el modelo actual. Con autoridad ambiental, la alcanzabilidad la decide la identidad; con el núcleo, los descriptores que realmente posee.
pbsd/; la especificación está en
docs/specs/.
Cuatro etapas, y un modelo que nunca se certifica a sí mismo
Portar a mano el espacio de usuario y el kernel de una Distribución de Software de Berkeley (BSD) a C++23 es una década de trabajo. Portarlo pidiéndole a un modelo de lenguaje que reescriba archivos es una forma rápida de producir basura verosímil. PBSD no hace ninguna de las dos cosas.
Inventario
tools/inventory_c_sources.py y clang_cxx23_port.py puntúan cada archivo C por dificultad y escriben c_inventory.csv. Nada se da por supuesto sobre el alcance.
Pasadas deterministas
run_todo_passes.py aplica reescrituras mecánicas seguras en los niveles 0–4. Sin modelo de por medio. Lo que una pasada rechaza se registra en
refusals.jsonl en lugar de forzarlo.
Bucle con agentes
pbsd.py rellena los archivos sin resolver y los rechazados con DeepSeek Flash, escalando a Pro con el máximo esfuerzo de razonamiento — 48 workers Flash y 24 Pro por defecto.
Esto es lo que financia el Kickstarter.
Control de verificación
Compilación, ASan, UBSan, ejecución diferencial y comparación al nivel de la representación intermedia (IR) del compilador. Un archivo que solo compila está
sin verificar. Los fallos van a parar a
agent_port_failures.jsonl.
Un port es una afirmación de equivalencia
Decir que un archivo está portado es decir que el nuevo se comporta como el viejo. Eso es una afirmación, y las afirmaciones necesitan pruebas. Una reescritura en C++23 que compila es una estructura de alambre de aspecto verosímil; todavía no es el mismo demonio.
Así que el signo de igualdad es el control. La ejecución diferencial ejecuta los dos y compara el comportamiento observable. La comparación de IR comprueba que signifiquen lo mismo para el compilador. Hasta que una de las dos pasa, el archivo sigue abierto en el registro de migración y no cuenta como progreso — por acabado que parezca.
Reglas que el repositorio cumple de verdad
Ningún archivo está hecho hasta que pasa la verificación diferencial o de IR
Portar con fidelidad — no “arreglar” en silencio los fallos del original
Primero las herramientas deterministas; los modelos rellenan solo lo que queda
El C++ del kernel es independiente: -fno-exceptions -fno-rtti
docs/specs/KERNEL_CXX_ABI.md para que quien colabore pueda saber qué es legal en contexto de kernel sin adivinar.
Cada módulo necesita una entrada de procedencia antes de contar como hecho
docs/PROVENANCE.md registra de dónde salió cada módulo y bajo qué licencia. Esto es lo que hace que la declaración de licencias de abajo sea verificable y no un deseo — puedes comprobar, módulo a módulo, qué código deriva de HardenedBSD y cuál es trabajo nuevo de PBSD.
Dos licencias, separadas con honestidad
El código nuevo de PBSD — el núcleo, los módulos de C++23, las herramientas — se ofrece bajo los términos estándar de Imortek: la Licencia Pública General Affero de GNU (AGPL-3.0+), gratis para uso personal, entidades benéficas, educación y organizaciones por debajo de 50.000 dólares australianos (AUD) al año, con una licencia comercial por tramos por encima de eso.
El código derivado de HardenedBSD se queda bajo su licencia BSD original. No se puede relicenciar, e Imortek no pretende hacerlo. docs/PROVENANCE.md es el registro de qué es qué.
Trabajo nuevo de PBSD
pbsd/, tools/, scripts/, el núcleo de capacidades, UDA, BIFROST, el compositor y el tema.
Derivado de HardenedBSD
hbsd/ y todo archivo portado que se remonte a él. Términos originales, atribución original.
Un sistema operativo en el que es más difícil entrar
La mayoría de las intrusiones aprovechan el mismo tipo de error: un programa que llega a memoria que nunca debió tocar. ParanoidBSD reconstruye un sistema de confianza en un lenguaje que hace ese error mucho más difícil, y le da a cada programa solo el acceso que realmente necesita.
Proveedores de defensa y de la administración pública
Los compradores empiezan a exigir software construido en lenguajes que cierran clases enteras de ataque. Empezar otra vez desde cero cuesta una década. Esto, en cambio, traslada un sistema ya probado, y guarda un registro escrito de cada archivo que cambió y de cómo se comprobó ese cambio.
Equipos que pasan años desplegados
Controladores de fábrica, máquinas médicas, equipos de servicios públicos. Cuando aparece un fallo, muchas veces no se puede sencillamente enviar una actualización. Esto limita hasta dónde llega un intruso una vez está dentro, porque ningún programa puede alcanzar nada más allá de lo que se le entregó.
Universidades e investigadores de seguridad
Un sistema operativo real, lo bastante pequeño para leerlo de principio a fin, con el original al lado para comparar. Útil para enseñar y para probar ideas sobre algo que de verdad funciona.
El port depende de un cómputo del que no dispone
Las pasadas deterministas son gratis. El bucle con agentes que rellena el residuo — y las ejecuciones de verificación que lo controlan — no lo son. Eso es todo lo que se pide.