Checked C
Checked C — язык программирования, разработанный в Microsoft Research и ориентированный на максимальную совместимость с C, но обеспечивающий большую безопасность при работе с памятью и, вследствие этого — большую защиту от уязвимостей написанных на нём приложений[1][2][3][4].
Спецификация языка, примеры и тесты распространяются на условиях MIT license и Open Web Foundation[англ.] Final Specification Agreement (обеспечивающего свободу от патентных и копирайтных исков в рамках данного соглашения)[5].
Нововведения языка
В язык введено ряд новых типов указателей, таких, как:
array_ptr<T>
— указатель на массив фиксированного размера. Проверка выхода за его границы во время исполнения программы может быть обеспечена автоматически;array_ptr_nt<T>
— указатель на элемент массива типаТ
, ограниченного символом null.ptr<T>
— указатель не требующий проверки выхода за границы, поскольку не используется для вычисления новых адресов. Соответственно, адресная арифметика для указателей такого типа запрещена.
Реализация
Компилятор Checked C доступен в виде модифицированных с целью поддержки CheckedC LLVM/Clang[6]. Компилятор поддерживает 32-х и 64-х разрядные версии Windows, UNIX/Linux и MacOS[7].
См. также
Примечания
- ↑ Олег Парамонов. В Microsoft придумали вариант языка Си, на котором труднее писать уязвимые программы. . Хакер № 248 (17 июня 2016). Дата обращения: 18 января 2020. Архивировано 18 мая 2021 года.
- ↑ David Ramel. Microsoft Research Modernizes C for Security, Reliability - (англ.). ADTmag (06-16-2016). Дата обращения: 18 января 2020. Архивировано 13 августа 2020 года.
- ↑ Abel Avram. Checked C - A Safer C/C++ from Microsoft . InfoQ[англ.] (июнь 2016). Дата обращения: 18 января 2020. Архивировано 28 октября 2020 года.
- ↑ A. S. Elliott, A. Ruef, M. Hicks, D. Tarditi. Checked C: Making C Safe by Extension // 2018 IEEE Cybersecurity Development (SecDev). — 2018-09. — С. 53–60. — doi:10.1109/SecDev.2018.00015. Архивировано 24 сентября 2020 года.
- ↑ Проект Checked C на сайте GitHub
- ↑ Проект CheckedC Clang на сайте GitHub
- ↑ Готовые бинарные сборки доступны Архивная копия от 13 ноября 2020 на Wayback Machine только для Windows, инструкции по сборке исходных текстов для различных платформ являются частью документации компилятора
Литература
- Andrew Ruef, Leonidas Lampropoulos, Ian Sweet, David Tarditi and Michael Hicks. Achieving Safety Incrementally with Checked C // International Conference on Principles of Security and Trust. — Springer, Cham, 2019. — С. 76—98.
Ссылки
- microsoft.com/en-us/rese… — официальный сайт Checked C
- Проект Checked C на сайте GitHub
- Проект CheckedC Clang на сайте GitHub
На эту статью не ссылаются другие статьи Руниверсалис. |