Опубликованы сведения об уязвимости CVE-2026-50643, затрагивающей компилятор языка C 8cc. Проблема классифицирована как чтение за пределами выделенной области памяти (Out‑of‑Bounds Read) и получила средний уровень опасности по шкале CVSS 4.0 - 5,1 балла. Уязвимость была подтверждена в версии, соответствующей коммиту b480958, однако разработчик проекта не предоставил информации о точном диапазоне версий, которые могут быть подвержены проблеме.
Детали уязвимости
Суть уязвимости связана с некорректной обработкой директив #line и GNU‑стилей маркеров строк. Компилятор принимает от пользователя метаданные о путях к файлам и номерах строк, а затем использует их без должной проверки при доступе к массиву строк исходного кода. Если злоумышленник передаёт в компилятор недопустимое или завышенное значение номера строки, возникает обращение к памяти за границами выделенного буфера, что приводит к аварийному завершению работы процесса - краху. В некоторых сценариях эксплуатация уязвимости может быть использована для нарушения стабильности среды разработки, однако для осуществления атаки требуется локальный доступ к системе (вектор AV:L).
Компилятор 8cc представляет собой open‑source реализацию, написанную в образовательных целях и используемую в качестве основы для экспериментов с компиляторной инфраструктурой. Несмотря на то что проект не является массовым промышленным инструментом, его применяют в некоторых средах для изучения компиляции и тестирования небольших фрагментов кода. Наличие уязвимости означает, что при обработке вредоносного исходного кода (например, в рамках автоматизированного тестирования или при компиляции сторонних файлов) возможен сбой компилятора.
Автор уязвимости уведомил мейнтейнера проекта заранее, однако ответа с описанием проблемы или указанием затронутых версий получено не было. В связи с этим степень распространённости уязвимости остаётся неопределённой. Исследователи отмечают, что другие версии компилятора, помимо зафиксированной, также могут содержать эту ошибку, поскольку в коде, вероятно, не были внесены исправления, предотвращающие некорректное использование входных данных.
Для пользователей и разработчиков, применяющих 8cc в своих рабочих процессах, рекомендуется временно отказаться от компиляции исходных файлов из недоверенных источников до тех пор, пока не появится официальное обновление. В качестве альтернативы можно переключиться на более стабильные и активно поддерживаемые компиляторы, такие как GCC или Clang, в которых подобные проблемы давно закрыты на уровне обработки директив препроцессора.
Ситуация с уязвимостью в 8cc в очередной раз демонстрирует важность валидации входных данных даже в учебных и экспериментальных проектах. Компиляторы, работающие с метаданными из исходного кода, должны проверять границы значений перед их использованием, чтобы исключить возможность чтения произвольных участков памяти. Пока проект не получит патча, загрузка скомпилированных материалов из внешних источников остаётся рискованной для систем, где стабильность рабочего окружения критична.
На момент публикации новости официальной информации об исправлении или выпуске новой версии 8cc нет. Рекомендуется отслеживать репозиторий проекта на GitHub и обновлять утилиту сразу после выхода соответствующего коммита, закрывающего CVE-2026-50643.
Ссылки