Repolode
BurtonQin

BurtonQin/lockbud

Analizador estático que detecta interbloqueos, use-after-free, invalid-free y posibles ubicaciones de panic en proyectos Rust.

Estrellas
590
Forks
40
Issues abiertos
7
Último commit
hace 7 días

¿Qué es?

lockbud es una herramienta de análisis estático para Rust que busca errores de concurrencia y memoria sin ejecutar el programa. Sigue los tiempos de vida de los guards de los locks a través del grafo de llamadas de un crate para detectar dobles bloqueos y órdenes de bloqueo conflictivos que pueden causar interbloqueos, y comprueba violaciones de atomicidad y usos incorrectos de Condvar. Los detectores de memoria cubren use-after-free e invalid-free, y un modo independiente informa de posibles ubicaciones de panic.

La herramienta se basa en componentes internos de rustc y debe ejecutarse con la misma toolchain nightly para la que está compilada; actualmente, nightly-2026-02-07. Se puede invocar directamente mediante un script detect o como subcomando de cargo (cargo lockbud). También está disponible como imagen de Docker y puede ejecutarse en CI. Es compatible con los tipos Mutex y RwLock de std::sync, parking_lot y spin.

El proyecto es el artefacto de un artículo de TSE'24 sobre problemas de seguridad reales en Rust. El autor señala que los detectores de memoria y panic generan muchos falsos positivos procedentes de la biblioteca estándar y de las dependencias, por lo que recomienda filtrar los resultados para analizar solo el crate propio con -l.

Funciones clave

  • 01Detecta dobles bloqueos e interbloqueos por órdenes de bloqueo conflictivos en locks de std, parking_lot y spin.
  • 02Informa de errores de memoria use-after-free e invalid-free.
  • 03Detecta violaciones de atomicidad y usos incorrectos de Condvar.
  • 04Enumera posibles ubicaciones de panic en código Rust.
  • 05Se ejecuta como script independiente, subcomando de cargo o imagen de Docker.

Casos de uso

  • Auditar antes del lanzamiento una base de código Rust que use Mutex o RwLock para detectar posibles interbloqueos.
  • Añadir una comprobación de interbloqueos a los pipelines de CI mediante cargo lockbud o la imagen de Docker.
  • Investigar técnicas de detección estática de errores de concurrencia en Rust.

Inicio rápido

  1. 1

    Instala los componentes necesarios de la toolchain nightly

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

    Clona el repositorio

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

    Entra en el directorio del proyecto

    cd lockbud
  4. 4

    Instala lockbud desde el código fuente local

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

Antes de usarlo

  • Debe compilarse con la versión exacta de rustc nightly compatible, y debe usarse esa misma versión para analizar el proyecto.
  • La detección de interbloqueos solo cubre los tipos Mutex y RwLock de std, parking_lot y spin.
  • Los detectores de memoria y de panic generan muchos falsos positivos, y el detector de panic informa de casi todos los puntos donde se produce un panic.
  • El análisis de puntos a los que se apunta es impreciso, por lo que los resultados pueden incluir falsos positivos.

En colecciones

Temas

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

Preguntas frecuentes

¿Qué es lockbud?
Analizador estático que detecta interbloqueos, use-after-free, invalid-free y posibles ubicaciones de panic en proyectos Rust. lockbud es una herramienta de análisis estático para Rust que busca errores de concurrencia y memoria sin ejecutar el programa. Sigue los tiempos de vida de los guards de los locks a través del grafo de llamadas de un crate para detectar dobles bloqueos y órdenes de bloqueo conflictivos que pueden causar interbloqueos, y comprueba violaciones de atomicidad y usos incorrectos de Condvar. Los detectores de memoria cubren use-after-free e invalid-free, y un modo independiente informa de posibles ubicaciones de panic.
¿lockbud es gratuito? ¿Qué licencia tiene?
lockbud es open source bajo la licencia BSD-3-Clause. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿lockbud sigue mantenido?
Mantenimiento activo. El último commit de lockbud fue el 1 nov 2026.
¿Para qué puedo usar lockbud?
Auditar antes del lanzamiento una base de código Rust que use Mutex o RwLock para detectar posibles interbloqueos. Añadir una comprobación de interbloqueos a los pipelines de CI mediante cargo lockbud o la imagen de Docker. Investigar técnicas de detección estática de errores de concurrencia en Rust.
¿Cómo se instala lockbud?
Instala los componentes necesarios de la toolchain nightly: rustup +nightly-2026-02-07 component add rust-src rustc-dev llvm-tools-preview Clona el repositorio: git clone https://github.com/BurtonQin/lockbud.git Entra en el directorio del proyecto: cd lockbud Instala lockbud desde el código fuente local: cargo +nightly-2026-02-07 install --path .
¿Dónde consigo lockbud?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/BurtonQin/lockbud

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados