¿Qué hace c-review?
Realiza una revisión de seguridad exhaustiva de código C/C++ para detectar corrupción de memoria, desbordamientos de enteros, condiciones de carrera y vulnerabilidades específicas de la plataforma. Útil al auditar aplicaciones nativas en C/C++, revisar demonios o servicios para seguridad de memoria, o buscar desbordamientos de enteros, use-after-free o condiciones de carrera en código de espacio de usuario.
Uso
Proporciona el código fuente C/C++ que deseas revisar. El skill analizará el código en busca de vulnerabilidades comunes y proporcionará recomendaciones de mitigación.
Ejemplo
// Código de ejemplo propenso a desbordamiento de búfer
void vulnerable(char *input) {
char buffer[10];
strcpy(buffer, input); // Peligroso: sin verificación de límites
}
¿Qué revisa?
- Corrupción de memoria: desbordamientos de búfer, desbordamientos de pila, use-after-free, doble liberación, fugas de memoria.
- Desbordamientos de enteros: wraparound, truncamiento, desbordamiento en operaciones aritméticas.
- Condiciones de carrera: TOCTOU (time-of-check time-of-use), carreras de datos en hilos.
- Vulnerabilidades de plataforma: diferencias de comportamiento entre sistemas (por ejemplo, punteros de 32 vs 64 bits, endianness, alineación).
Buenas prácticas
- Usa funciones seguras como
strncpy,snprintfen lugar destrcpy,sprintf. - Valida siempre la entrada del usuario.
- Utiliza herramientas como AddressSanitizer, Valgrind o Clang Static Analyzer durante el desarrollo.
- Para condiciones de carrera, usa mecanismos de sincronización como mutex o semáforos.
Plataformas soportadas
- Linux, macOS, Windows (espacio de usuario y kernel).
- Compiladores: GCC, Clang, MSVC.