O verificado C estende C com a verificação dos limites e a segurança do tipo aprimorada. Ajuda os programadores a modernizar o código C existente para ser mais seguro. Este repo contém a especificação C verificada, o código de amostra e o código de teste.
Ponteiros gordos para a segurança da memória temporal de C de Jie Zhou, John Criswell e Michael Hicks. Isso apareceu em Oopsla 2023. Descreve uma extensão para o CHECTED C que adiciona novos ponteiros que fornecem segurança temporal da memória.
C a Cheched C por 3C, por Aravind Machiry, John Kastner, Matt McCutchen, Aaron Eriine, Kyle Headley e Michael Hicks. Este artigo descreve a ferramenta 3C semi-automatizada para converter C em verificada C. Ganhou um prêmio Sigplan Distinguished Paper em Oopsla 2022.
Um modelo formal de Cheched C, por Liyi Li, Deena Postol, Leonida Lampropoulos, David Van Horn e Michael Hicks. Isso foi publicado no Simposlio de Fundamentos de Segurança de Computadores de 2022 IEEE. Ele descreve um modelo formal de verificado C. O modelo foi formalizado usando o provrover do teorema de Coq.
Alcançando a segurança de forma incremental com o verificado C. Isso foi apresentado na conferência de 2019 Principles of Security and Trust:. Este artigo descreve uma versão inicial do 3C que converte o código C existente para usar os tipos de PTR. Ele também prova uma propriedade da culpa sobre regiões verificadas que mostram que as regiões verificadas não são culpadas para qualquer corrupção de memória. Essa prova é formalizada para um subconjunto central da extensão do idioma.
Verificado C: Tornando C seguro por extensão de David Tarditi, Samuel Elliott, Andrew Ruef e Michael Hicks. Isso apareceu na conferência de desenvolvimento de segurança cibernética do IEEE 2018. Ele descreve as principais idéias dos limites de C verificados na verificação em 8 páginas. Adicionamos recursos para verificados C desde então. O wiki e a especificação fornecem descrições atualizadas de C.
Houve um pôster apresentado na reunião do LLVM Dev 2019: "Os transbordamentos se foram: verificado C para segurança da memória". O pôster fornece uma introdução ao C verificado, descreve a implementação do compilador e apresenta uma avaliação experimental de C.
Houve uma palestra (slides) na reunião de desenvolvimento virtual de 2020 LLVM: "Verificado C: Adicionando suporte à segurança da memória ao LLVM". A palestra descreve o design das anotações dos limites para indicadores e ponteiros de matriz verificados, bem como a estrutura para a verificação estática da solidez dos limites. A palestra também descreve brevemente novos algoritmos para ampliar automaticamente os limites para matrizes de terminação nula e para comparação de expressões para equivalência.
Estamos felizes em ter a ajuda. Você pode contribuir experimentando C verificado, relatando bugs e dando -nos feedback. Existem outras maneiras de contribuir também.
O software neste repositório é coberto pela licença do MIT. Consulte o arquivo License.txt para a licença. A especificação C verificada é disponibilizada pela Microsoft sob o Contrato de Especificação Final da OpenWeb Foundation, versão 1.0. As contribuições do Código para os repositórios de LLVM/CLANG verificados estão sujeitos aos termos de licenciamento LLVM/CLANG.
Verificado C é um projeto independente de código aberto. Tudo começou como um projeto de pesquisa na Microsoft em 2015. Semelhante ao verificado C. Estávamos procurando uma maneira de melhorar a segurança do software de sistemas existentes e eliminar classes de bugs.
Uma abordagem é reescrever o software em um idioma mais recente, como a ferrugem. No entanto, o código de reescrita é um desafio por vários motivos: é caro, existem diferenças sutis nos recursos básicos de linguagem, como aritmética entre os idiomas, e pode levar muito tempo até que você tenha um sistema de trabalho. Combinado, isso faz de uma reescrita um projeto de desenvolvimento de software de alto risco. É improvável que esses tipos de reescritas sejam feitos apenas para melhorar a segurança. Decidimos seguir uma abordagem incremental que permita que o código C existente seja melhorado gradualmente e a um custo muito menor.
Pesquisadores de muitas universidades e empresas contribuíram para checar os pesquisadores da Universidade de Maryland, da Universidade de Rochester, da Universidade de Washington, Samsung, Rutgers University e da Universidade da Pensilvânia, contribuíram para verificação de C. Apple propôs uma extensão C semelhante a Celed C, que depende mais de verificação dinâmica.
Este projeto adotou um código de conduta.