
Domina C y C++ con nuestro nuevo capítulo de Manual de Pruebas
FUENTE
The Trail of Bits Blog
DATE
READ
4 min de lectura
Se ha añadido un nuevo capítulo al Manual de Pruebas, centrado en una lista de verificación de seguridad para el código C y C++. Identifica las clases comunes de errores y las organiza para entornos Linux, Windows y …
Hemos añadido un nuevo capítulo a nuestro Manual de Pruebas: una lista de verificación de seguridad completa para el código C y C++. Hemos identificado una amplia gama de clases de errores comunes, trampas conocidas y problemas de API en los códigobases de C y C++ y los hemos organizado en secciones que cubren Linux, Windows y seccomp. Mientras que otros capítulos del manual se centran en el análisis estático y dinámico, este capítulo ofrece una base sólida para la revisión de código manual. ¡Entusiastas de LLM, reúnanse! También estamos desarrollando una habilidad de Claude basada en este nuevo capítulo. Convertirá la lista de verificación en indicaciones para detectar errores que un LLM pueda ejecutar contra un código base, y estará consciente de la plataforma y el modelo de amenazas. Asegúrese de probarla cuando la lancemos. Y después de leer el capítulo, puede probar sus habilidades de revisión de C/C++ contra dos desafíos al final de esta publicación. Sea uno de los primeros 10 en enviar las respuestas correctas para ganar artículos Trail of Bits. ¿Qué hay en el capítulo Cubre cinco áreas: clases de errores generales, modo de usuario y kernel de Linux, modo de usuario y kernel de Windows, y sandbox/BPF de seccomp. Comienza con problemas de nivel de lenguaje en la sección de clases de errores, como la seguridad de la memoria, errores de enteros, confusión de tipos, errores introducidos por el compilador, y se va progresivamente a problemas más específicos del entorno. La sección del modo de usuario de Linux se centra en las trampas de libc. Esta sección también es aplicable a la mayoría de los sistemas POSIX. Varía desde problemas bien conocidos con métodos de cadenas hasta problemas menos conocidos alrededor de la caída de privilegios y el manejo de variables de entorno. El kernel de Linux es una bestia complicada, y ninguna lista de verificación puede cubrir siquiera una parte de sus complejidades. Sin embargo, nuestro nuevo capítulo del Manual de Pruebas puede brindarle un punto de partida para realizar revisiones manuales de controladores y módulos. Las secciones de Windows cubren el plantado de DLL, vulnerabilidades de rutas sin comillas en CreateProcess y problemas de recorrido de rutas. Esta última clase de errores incluye problemas como errores WorstFit Unicode, donde los caracteres fuera del conjunto ANSI básico pueden ser reinterpretados de formas que eludan las comprobaciones de ruta por completo. La sección del kernel aborda preocupaciones específicas del controlador, como los controles de acceso al dispositivo, el denegación de servicio a través del uso incorrecto de espintrlock, problemas de seguridad que surgen al pasar manejadores de usermode al modo kernel, y varios bordes agudos en las API del kernel de Windows. Las funciones seccomp y BPF de Linux se utilizan a menudo para crear sandboxes. Si bien existen herramientas más modernas como Landlock y espacios de nombres para esta tarea, todavía vemos una combinación de estas funciones más antiguas durante las auditorías, y siempre descubrimos muchos problemas. El nuevo capítulo del Manual de Pruebas cubre los saltos de sandbox que hemos visto, como las llamadas al sistema io_uring que se ejecutan sin que el filtro BPF nunca las vea, la bandera CLONE_UNTRACED que permite que el rastreador desactive efectivamente los filtros de seccomp, y condiciones de carrera de nivel de memoria en sandboxes basadas en ptrace. Pruebe sus habilidades de revisión. Hemos proporcionado dos desafíos a continuación que contienen clases de errores reales de la lista de verificación. Intente identificarlas, luego envíe sus respuestas. Si está entre los primeros 10 en enviar respuestas correctas, recibirá artículos de Trail of Bits. El desafío se cerrará el 17 de abril, así que envíe sus respuestas antes de esa fecha. ¿Atascado? No se preocupe. Publicaremos las respuestas en una publicación de blog de seguimiento, así que no se olvide de #like y #subscribe, lo que significa que agregue nuestro feed RSS a su lector. Las muchas peculiaridades de libc de Linux. En este simple programa ping, hay dos trampas de libc que hacen que el programa sea fácilmente explotable. ¿Puede encontrarlas y explicarlas? Si no puede, consulte el capítulo del manual. Ambos errores están cubiertos en la sección de modo de usuario de Linux.