Checked C extiende C con la verificación de los límites y la seguridad de tipo mejorada. Ayuda a los programadores modernizar el código C existente para que sea más seguro. Este repositorio contiene la especificación C verificada, el código de muestra y el código de prueba.
Los consejos gordos para la seguridad de la memoria temporal de C por Jie Zhou, John Criswell y Michael Hicks. Esto apareció en OOPSLA 2023. Describe una extensión a la C verificada que agrega nuevos punteros que proporcionan seguridad de memoria temporal.
C para verificar C por 3C, por Aravind Machiry, John Kastner, Matt McCutchen, Aaron Eline, Kyle Headley y Michael Hicks. Este documento describe la herramienta 3C semiautomatizada para convertir C en C. Ganó un premio de papel distinguido Sigplan en OOPSLA 2022.
Un modelo formal de Choped C, de Liyi Li, Deena Postol, Leonida Lampropoulos, David Van Horn y Michael Hicks. Esto se publicó en el Symposlium de Fundamentos de Seguridad Informática IEEE 352 IEEE 2022. Describe un modelo formal de C. el modelo se formalizó utilizando el Prover del teorema de CoQ.
Lograr la seguridad incrementalmente con C. esto se presentó en la Conferencia de Principios de Seguridad y Fideicomiso 2019: Este documento describe una versión temprana de 3C que convierte el código C existente para usar los tipos PTR. También prueba una propiedad de culpa sobre las regiones verificadas que muestra que las regiones marcadas no tienen culpa para cualquier corrupción de memoria. Esta prueba se formaliza para un subconjunto central de la extensión del lenguaje.
Revisado C: Hacer C Safe by Extension de David Tarditi, Samuel Elliott, Andrew Ruef y Michael Hicks. Esto apareció en la Conferencia de Desarrollo de Ciberseguridad IEEE 2018. Describe las ideas clave de los límites C verificados en 8 páginas. Hemos agregado funciones a C Volded C desde entonces. El wiki y la especificación proporcionan descripciones actualizadas de C. verificados C.
Se presentaron un póster en la Reunión de Dev de LLVM 2019: "Los desbordamientos se han ido: verificados C para la seguridad de la memoria". El póster proporciona una introducción a la C verificada, describe la implementación del compilador y presenta una evaluación experimental de C. verificado C.
Hubo una charla (diapositivas) en la reunión de desarrollo virtual 2020 LLVM: "Verificación C: Agregar soporte de seguridad de memoria a LLVM". La charla describe el diseño de anotaciones de límites para punteros verificados y punteros de matriz, así como el marco para la verificación estática de la solidez de los límites. La charla también describe brevemente algoritmos novedosos para ampliar automáticamente los límites para las matrices nulas terminadas y para la comparación de expresiones para la equivalencia.
Estamos felices de tener la ayuda. Puede contribuir probando C Vuelto C, informando errores y dándonos comentarios. También hay otras formas de contribuir.
El software en este repositorio está cubierto por la licencia MIT. Consulte el archivo License.txt para obtener la licencia. Microsoft pone a disposición la especificación C verificada bajo el Acuerdo de Especificación Final de la Fundación OpenWeb, versión 1.0. Las contribuciones de código a los reposadores LLVM/Clang verificados están sujetas a los términos de licencia LLVM/CLANG.
Checked C es un proyecto de código abierto independiente. Comenzó como un proyecto de investigación en Microsoft en 2015. Similar a la comprobación C. estábamos buscando una manera de mejorar la seguridad del software de sistemas existente y eliminar las clases de errores.
Un enfoque es reescribir el software en un idioma más nuevo, como la óxido. Sin embargo, la reescritura del código es un desafío por varias razones: es costoso, existen diferencias sutiles incluso en características de lenguaje básico, como la aritmética en todos los idiomas, y puede pasar mucho tiempo antes de tener un sistema de trabajo. Combinado, esto hace que una reescribir sea un proyecto de desarrollo de software de alto riesgo. Es poco probable que se haga este tipo de reescrituras para mejorar la seguridad. Decidimos seguir un enfoque incremental que permite que el código C existente mejore gradualmente y a un costo mucho más bajo.
Investigadores de muchas universidades y empresas han contribuido a verificar a C. investigadores de la Universidad de Maryland, la Universidad de Rochester, la Universidad de Washington, Samsung, la Universidad de Rutgers y la Universidad de Pensilvania han contribuido a verificar a C. Apple ha propuesto una extensión CE similar a C verificada C.
Este proyecto ha adoptado un código de conducta.