
Scout es una herramienta extensible de código abierto destinada a ayudar a los desarrolladores y auditores de contratos inteligentes de Soroban Stellar a detectar problemas de seguridad comunes y desviaciones de las mejores prácticas.
Esta herramienta ayuda a los desarrolladores a escribir contratos inteligentes seguros y más robustos.
Nuestro interés en este proyecto proviene de nuestra experiencia en auditoría manual y detección de vulnerabilidades en otras cadenas de bloques (¡ver Scout for Ink!).
Instalar Auditoría de Scout:
Asegúrese de que la carga esté instalada en su computadora. Luego, instale Scout con el siguiente comando:
cargo install cargo-scout-auditEjecutar la auditoría de Scout:
Para ejecutar Scout en su proyecto, ejecute el siguiente comando:
cargo scout-auditScout admite espacios de trabajo de carga. Cuando se ejecute en un espacio de trabajo, Scout se ejecutará en todos los paquetes especificados como miembros del espacio de trabajo.
Para obtener más información sobre la instalación y el uso, consulte la sección Iniciar en nuestra sección de documentación a continuación.
Actualmente Scout incluye los siguientes detectores.
| ID de detector | Lo que detecta | Casos de prueba | Gravedad |
|---|---|---|---|
| divide antes de ser multiplicado | Realizar una operación de división antes de una multiplicación, lo que lleva a la pérdida de precisión. | 1, 2, 3 | Medio |
| no seguro | Uso inapropiado del método Unwrap, causando bloqueos inesperados del programa. | 1 | Medio |
| inseguro-expectivo | Uso inadecuado del método esperado, lo que lleva a bloqueos inesperados del programa. | 1 | Medio |
| verificar por desbordamiento | Una operación aritmética se desborda o subyace la memoria disponible asignada a la variable. | 1 | Crítico |
| insuficientemente aleatorio valores | Evite usar atributos de bloque para la generación de números aleatorios para evitar la manipulación. | 1 | Crítico |
| actualización-corriente-contrato | Si los usuarios pueden llamar update_current_contract_wasm() , pueden modificar intencionalmente el comportamiento del contrato. | 1 | Crítico |
| Evite el núcleo-mem-forget | El uso de core::mem::forget() podría conducir a fugas de memoria y errores lógicos. | 1 | Realce |
| almacenamiento de contrato de conjunto | Control de acceso insuficiente en el método env.storage() . | 1, 2, 3 | Crítico |
| Evitar a Panic-Error | El código se interpone en el error en lugar de usar enum descriptivo. | 1 | Realce |
| Evite-Unsafe-Block | Uso de bloques inseguros en la seguridad y confiabilidad del código de riesgos. | 1 | Crítico |
| DOS-Operación de Dos | DOS debido a la operación ilimitada. | 1, 2, 3 | Medio |
| versión de sorobán | Usar una versión antigua de Soroban puede ser peligroso, ya que puede tener errores o problemas de seguridad. Use la última versión disponible. | 1 | Realce |
| no utilizado | Return enum de una función no se usa por completo. | 1, 2 | Menor |
| iteradores superiores | Iterando con índices codificados es más lento que usar un iterador. Además, si el índice está fuera de los límites, entrará en pánico. | 1 | Realce |
| afirmar a violación | ¡Evite el uso de la macro afirmación!, Puede entrar en pánico. | 1 | Realce |
| Operación de mapeo sin protección | La modificación de las asignaciones con una clave arbitraria dada por los usuarios puede ser una vulnerabilidad significativa. | 1, 2 | Crítico |
| Dos-inesperado-revertir con vector | DOS debido al almacenamiento inadecuado. | 1, 2 | Medio |
| transformación sin restricciones de | Evite pasar un parámetro definido por el usuario como un from de transferencia de transferencia. | 1 | Crítico |
| mapa inseguro | Uso inapropiado del método get para Map en Soroban | 1 | Medio |
| directorio | Evite la asignación de dirección cero o de prueba para evitar la pérdida de control del contrato. | 1 | Medio |
| exponencial | Advierte contra el uso incorrecto de ´^´. | 1 | Crítico |
Puede elegir el formato de salida que mejor se adapte a sus necesidades. Scout ofrece informes HTML, Markdown, JSON, PDF y SARIF. Para especificar la salida deseada, ejecute el siguiente comando:
cargo scout-audit --output-format [html|md|pdf|json|sarif]
Informe HTML

Agregue Scout a su espacio de trabajo de desarrollo con la extensión de código VS de Scout para ejecutar Scout automáticamente al guardar su archivo.

Consejo: Para ver los errores resaltados en su código, recomendamos instalar la extensión de la lente de error.
Descargue Scout vs Code de Visual Studio Marketplace.
¡Integre Scout en su tubería CI/CD! Ejecute automáticamente la herramienta con los contratos inteligentes específicos. Este ciclo de retroalimentación inmediata permite a los desarrolladores abordar rápidamente cualquier problema antes de fusionar el código en la rama principal, reduciendo el riesgo de introducir errores o vulnerabilidades.
Salida de exploración como comentario en una solicitud de extracción

Encuentra la acción de Scout Github en Github Marketplace.
Únase a nosotros para una emocionante serie de tutoriales en video donde aprenderá a instalar y ejecutar Scout. Descubra cómo identificar y resolver problemas específicos detectados por la herramienta y mejorar sus habilidades con nuestra orientación experta.
? ¡Más videos que llegan pronto!
Para validar nuestra herramienta, proporcionamos un conjunto de ejemplos de código ubicados en la carpeta de casos de prueba.
Para ejecutar las pruebas de integración, navegue a apps/cargo-scout-audit y ejecute:
cargo test --all --all-features Para ejecutar las pruebas para un caso de prueba en particular, ejecute el mismo comando en esa carpeta de casos de prueba particular (por ejemplo, test-cases/divide-before-multiply/divide-before-multiply-1 )
¡Siga nuestros enlaces de documentación a continuación y aprenda más sobre las vulnerabilidades detectadas por Scout, cómo funciona la herramienta y cómo contribuir al proyecto!
Scout for Soroban es un analizador de vulnerabilidad de código abierto desarrollado por el equipo de investigación y desarrollo de Coinfabrik.
Recibimos apoyo a través de una subvención del Stellar Community Fund (SCF).
Nosotros - Coinfabrik - somos una empresa de investigación y desarrollo especializada en Web3, con una sólida experiencia en ciberseguridad. Fundado en 2014, hemos trabajado en más de 180 proyectos relacionados con Blockchain, con sede en EVM y también para Solana, Algorand, Stellar y Polkadot. Más allá del desarrollo, ofrecemos auditorías de seguridad a través de un equipo interno dedicado de profesionales de seguridad cibernética senior, que actualmente trabajan en código en sustrato, solidez, claridad, óxido, verde azulado y soroban estelar.
Nuestro equipo tiene experiencia académica en informática y matemáticas, con experiencia laboral centrada en la ciberseguridad y el desarrollo de software, incluidas publicaciones académicas, patentes convertidas en productos y presentaciones de conferencias. Además, tenemos una colaboración continua sobre transferencia de conocimiento y proyectos de código abierto con la Universidad de Buenos Aires.
Scout tiene licencia y se distribuye bajo una licencia MIT. Contáctenos si está buscando una excepción a los términos.