Repolode
BurtonQin

BurtonQin/lockbud

Статический анализатор, который выявляет дедлоки, use-after-free, invalid-free и возможные места паники в проектах на Rust.

Звёзды
590
Форки
40
Открытые issues
7
Последний коммит
7 дней назад

Что это?

lockbud — инструмент статического анализа Rust, который ищет ошибки конкурентности и работы с памятью, не запуская программу. Он отслеживает время жизни блокировок по графу вызовов crate, чтобы находить повторные захваты блокировок и конфликтующий порядок их захвата, способные привести к дедлокам, а также проверяет нарушения атомарности и неправильное использование Condvar. Детекторы ошибок памяти выявляют use-after-free и invalid-free, а отдельный режим сообщает о возможных местах паники.

Инструмент построен на внутренних компонентах rustc, поэтому его нужно запускать с той же nightly-версией toolchain, для которой он предназначен; сейчас это nightly-2026-02-07. Его можно вызвать напрямую через скрипт detect или как подкоманду cargo (cargo lockbud). Также доступен Docker-образ, и инструмент можно запускать в CI. Поддерживаются Mutex и RwLock из std::sync, parking_lot и spin.

Проект представляет собой артефакт статьи TSE'24 о проблемах безопасности в реальных проектах на Rust. Автор отмечает, что детекторы ошибок памяти и паники дают много ложных срабатываний из-за стандартной библиотеки и зависимостей, поэтому рекомендуется ограничивать анализ собственным crate с помощью -l.

Ключевые возможности

  • 01Выявляет повторные захваты блокировок и дедлоки из-за конфликтующего порядка их захвата для блокировок std, parking_lot и spin.
  • 02Сообщает об ошибках памяти use-after-free и invalid-free.
  • 03Выявляет нарушения атомарности и неправильное использование Condvar.
  • 04Показывает возможные места паники в коде на Rust.
  • 05Запускается как отдельный скрипт, подкоманда cargo или Docker-образ.

Сценарии использования

  • Проверка кодовой базы на Rust, использующей Mutex или RwLock, на возможные дедлоки перед выпуском.
  • Добавление проверки на дедлоки в CI-пайплайны с помощью cargo lockbud или Docker-образа.
  • Изучение методов статического выявления ошибок конкурентности в Rust.

Быстрый старт

  1. 1

    Установите необходимые компоненты nightly-тулчейна

    rustup +nightly-2026-02-07 component add rust-src rustc-dev llvm-tools-preview
  2. 2

    Клонируйте репозиторий

    git clone https://github.com/BurtonQin/lockbud.git
  3. 3

    Перейдите в каталог проекта

    cd lockbud
  4. 4

    Установите lockbud из локального исходного кода

    cargo +nightly-2026-02-07 install --path .

Что важно знать

  • Сборку необходимо выполнять с точной поддерживаемой версией rustc nightly, и для анализа проекта нужно использовать ту же версию.
  • Обнаружение взаимоблокировок охватывает только типы Mutex и RwLock из std, parking_lot и spin.
  • Детекторы проблем с памятью и panic дают много ложных срабатываний, а детектор panic сообщает почти обо всех местах возникновения panic.
  • Анализ указателей неточен, поэтому результаты могут содержать ложные срабатывания.

В подборках

Темы

#rust#static-analysis#deadlock#concurrency#memory-safety#bug-detection#security#static-analyzer

Частые вопросы

Что такое lockbud?
Статический анализатор, который выявляет дедлоки, use-after-free, invalid-free и возможные места паники в проектах на Rust. lockbud — инструмент статического анализа Rust, который ищет ошибки конкурентности и работы с памятью, не запуская программу. Он отслеживает время жизни блокировок по графу вызовов crate, чтобы находить повторные захваты блокировок и конфликтующий порядок их захвата, способные привести к дедлокам, а также проверяет нарушения атомарности и неправильное использование Condvar. Детекторы ошибок памяти выявляют use-after-free и invalid-free, а отдельный режим сообщает о возможных местах паники.
lockbud можно использовать бесплатно? Какая у него лицензия?
lockbud распространяется с открытым исходным кодом под лицензией BSD-3-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
lockbud всё ещё поддерживается?
Активно поддерживается. Последний коммит в lockbud — 1 нояб. 2026 г..
Для чего можно использовать lockbud?
Проверка кодовой базы на Rust, использующей Mutex или RwLock, на возможные дедлоки перед выпуском. Добавление проверки на дедлоки в CI-пайплайны с помощью cargo lockbud или Docker-образа. Изучение методов статического выявления ошибок конкурентности в Rust.
Как установить lockbud?
Установите необходимые компоненты nightly-тулчейна: rustup +nightly-2026-02-07 component add rust-src rustc-dev llvm-tools-preview Клонируйте репозиторий: git clone https://github.com/BurtonQin/lockbud.git Перейдите в каталог проекта: cd lockbud Установите lockbud из локального исходного кода: cargo +nightly-2026-02-07 install --path .
Где скачать lockbud?
Исходный код и инструкции по установке — на GitHub: https://github.com/BurtonQin/lockbud

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Сканер безопасности на Rust для аудита MCP-серверов и файлов навыков AI-агентов на предмет prompt injection, отравления инструментов, утечки секретов и рисков цепочки поставок.

99+1 за неделю20RustApache-2.0Активно поддерживаетсяОбновлён в прошлом месяце

Инструмент статического анализа, который проверяет исходный код на Go на распространённые уязвимости и небезопасные практики программирования.

9 тыс.+7 за неделю731GoApache-2.0Активно поддерживаетсяОбновлён 4 дня назад