CodeMender hace un seguimiento de cada análisis, verificación y reintento de corrección como una sesión con estado respaldada por una base de datos SQLite local (state.db). Puedes inspeccionar las sesiones activas, reanudar las tareas pausadas y exportar informes detallados de los hallazgos.
Administración de las sesiones
La CLI de CodeMender mantiene sesiones de ejecución con estado de forma local, lo que te permite hacer un seguimiento de las tareas activas, reanudar los flujos de trabajo interrumpidos y exportar informes de seguridad.
Enumera las sesiones activas y anteriores
Ejecuta el siguiente comando para enumerar todas las sesiones, sus estados (RUNNING, WAITING_FOR_TOOL, COMPLETED, FAILED, CANCELLED) y las rutas de acceso de destino:
cm session list
Reanuda una sesión interrumpida
Si una sesión se detiene debido a una interrupción de la red o a un error en un paso, reanúdala desde la última etapa del punto de control:
cm session resume SESSION_ID
Puedes pasar --yes (-y), --sandbox, --allow-all-paths, --allow-all-commands y --bypass-warning a cm session resume para controlar las solicitudes de confirmación, la zona de pruebas y los límites de la política para la ejecución reanudada.
Cómo cancelar una sesión en curso
Para finalizar una sesión activa y detener la ejecución de procesamiento del agente de backend, haz lo siguiente:
cm session cancel SESSION_ID
Visualiza informes y exporta parches
Muestra los hallazgos de la sesión, los estados de verificación y los detalles de los parches con cm report.
Formatos de salida
Tabla de terminales (predeterminada)
Es una lista resumida de los hallazgos.
cm reportInforme HTML
Genera un informe HTML con formato. Usa --open (o -o) para iniciarlo automáticamente en tu navegador predeterminado.
cm report --format html --open
Markdown
Genera un informe de Markdown con estilo de GitHub.
cm report --format md
JSON
Exporta todos los detalles de los hallazgos de la sesión como JSON sin procesar.
cm report --format json
SARIF
Exporta los hallazgos en el formato SARIF estándar (v2.1.0) para integrarlos con otras herramientas de seguridad.
cm report --format sarif
Cómo filtrar y ordenar marcas
- Mostrar parches de código propuestos (
--patches): Incluye diferencias unificadas completas de las correcciones generadas en el informe.bash cm report --patches - Filtrar por gravedad (
--severity): Consulta los hallazgos que coinciden con un nivel (CRITICAL,HIGH,MEDIUM,LOW).bash cm report --severity HIGH - Filtrar por estado (
--status): Consulta los hallazgos que coinciden con un estado (OPEN,FIXED,DISMISSED,REOPENED).bash cm report --status OPEN - Filtrar por sesión (
--session): Consulta los hallazgos de un prefijo de ID de sesión específico.cm report --session SESSION_ID_PREFIX
- Mostrar artefactos del agente (
--artifacts): Incluye rutas de acceso a los artefactos de ejecución generados por el agente (como registros y secuencias de comandos de exploits).bash cm report --artifacts - Ordenar hallazgos (
--sort): Ordena los resultados porseverity(predeterminado) otime.bash cm report --sort time - Filtrar por ID de hallazgo: Pasa un ID de hallazgo específico (o prefijo) como un argumento posicional para ver los detalles de un solo hallazgo.
cm report FINDING_ID_PREFIX
Estados de los hallazgos de vulnerabilidades
CodeMender hace un seguimiento de los hallazgos en los siguientes estados de vulnerabilidad:
OPEN- Qué significa: La vulnerabilidad se detectó correctamente durante un análisis (o se importó desde una herramienta de terceros), pero aún no se verificó, se aplicó un parche ni se marcó como inactiva.
- Cómo se maneja: Este es el estado inicial de cualquier falla de seguridad
recién descubierta. Las vulnerabilidades en el estado
OPENse ponen en cola de forma activa para su verificación (cm verify) o aplicación de parches (cm fix).
FIXED- Qué significa: CodeMender generó un parche para la vulnerabilidad, aplicó la diferencia a tu base de código local y compiló y ejecutó correctamente las pruebas de verificación para demostrar que el exploit ya no tiene éxito.
- Cómo se maneja: Una vez que se confirma que un parche resuelve el problema
sin romper la lógica del código existente, CodeMender cambia el hallazgo
a
FIXED. Permanecerá en este estado, a menos que un análisis futuro detecte una regresión.
DISMISSED- Qué significa: La vulnerabilidad se designa como inactiva, ya sea porque se identificó como un falso positivo o ya se corrigió, o el hallazgo no tiene suficiente confianza para confirmar que se puede explotar (incluso en el modelo de amenazas de tu proyecto, si se proporcionó uno durante la incorporación).
- Cómo se maneja: Marcar un elemento como
DISMISSEDsilencia las alertas futuras y excluye el hallazgo de tu resultado activo de la CLI concm report --status OPEN. Si vuelves a ejecutarcm verifyen un hallazgo descartado, se vuelven a examinar o se restablecen los elementos descartados.
REOPENED- Qué significa: Se volvió a detectar una vulnerabilidad que se había marcado como
FIXEDoDISMISSEDen un análisis posterior de la base de código. - Cómo se maneja: Este estado indica una regresión (como una combinación de Git incorrecta que revierte el parche) o una estrategia de mitigación fallida. Marca el problema para una reevaluación inmediata y requiere que los desarrolladores revisen el proceso de aplicación de parches.
- Qué significa: Se volvió a detectar una vulnerabilidad que se había marcado como
Niveles de gravedad de las vulnerabilidades
CodeMender clasifica los hallazgos en los siguientes niveles de gravedad:
CRITICAL- Qué significa: La vulnerabilidad representa un riesgo inmediato y grave para tu aplicación o infraestructura subyacente, lo que podría provocar un compromiso total del sistema.
- Por qué se clasifica como crítica: Cumple con los umbrales de impacto de consecuencias graves (como la ejecución remota de código o las escrituras a nivel de raíz), se puede alcanzar directamente desde límites no confiables sin requisitos previos y está respaldada por un análisis de flujo de contaminación de alta confianza o una prueba de concepto (PoC) validada que se ejecuta dentro de la zona de pruebas de CodeMender.
HIGH- Qué significa: La vulnerabilidad representa una falla de seguridad grave que podría provocar el control no autorizado del sistema, la elevación de privilegios o la exposición significativa de datos, pero requiere condiciones específicas para ejecutarse.
- Por qué se clasifica como alta: Aunque el impacto de la explotación es alto (por ejemplo, lecturas arbitrarias de bases de datos o secuestro administrativo), la explotabilidad está un poco limitada. Es posible que un atacante deba tener una autenticación de usuario estándar, depender de una configuración específica del sistema o requerir una cadena de acciones muy precisa.
MEDIUM- Qué significa: La vulnerabilidad presenta un riesgo moderado, ya que suele exponer datos restringidos o permitir interrupciones localizadas, pero es de bajo riesgo para el sistema host.
- Por qué se clasifica como Media: El exploit está muy limitado por la accesibilidad o la complejidad. Por lo general, requiere la interacción activa del usuario (como hacer clic en un vínculo malicioso), privilegios profundos o condiciones complejas para omitir las capas defensivas, y su área afectada final está restringida.
LOW- Qué significa: El hallazgo representa un riesgo de seguridad menor o una falta general de higiene de defensa en profundidad que no presenta una amenaza inmediata por sí sola.
- Por qué se clasifica como baja: Presenta una capacidad de explotación extremadamente baja o un impacto mínimo. Por lo general, los atacantes usan el hallazgo para el reconocimiento o la toma de huellas digitales de configuración, en lugar de la vulneración directa, y no se puede usar para ejecutar código arbitrario ni robar datos sensibles de la aplicación.
Seguimiento del uso de tokens
CodeMender escribe registros de sesión por invocación de forma local en
~/.codemender/logs/sessions/. Usa cm stats para inspeccionar el uso de tokens sin conexión,
las tasas de acierto de caché, los recuentos de sondeos y las duraciones de ejecución en los comandos o para una
sesión individual sin realizar llamadas de backend.
- Resumir la actividad reciente (
--since): Consulta el uso de tokens agrupado por tipo de comando en un período reciente (168hpredeterminado o 7 días).bash cm stats cm stats --since 24h - Inspecciona una sesión específica (
--session): Consulta el uso de tokens por turno para un ID de sesión o un prefijo de ID de sesión único, incluidas las ejecuciones decm find --deepycm find --diffcon varios trabajadores.cm stats --session SESSION_ID_PREFIX
- Exportar JSON (
--jsony--jsonl): Emite JSON con sangría con--jsono emite JSON de una sola línea con--jsonlpara la transferencia de registros estructurados. La salida de JSON incluyemodel(omodelscuando aparecen varios modelos) yteam_id(oteam_idscuando se agregan varios equipos).cm stats --json cm stats --jsonl cm stats --session SESSION_ID_PREFIX --jsonl
- Atribuye el uso por equipo (
--team-idoCM_TEAM_ID): Establece un identificador de equipo (de 1 a 63 caracteres que coincidan con[A-Za-z0-9._-]) cuando ejecutes análisis o correcciones con la marca--team-id, la variable de entornoCM_TEAM_IDoteam_iden~/.codemender/config.yaml. Las sesiones que se ejecutaron sin un equipo configurado permanecen sin atribución en el resultado JSON decm stats. Cuando la ventana consultada no tiene registros de sesión,--team-id,CM_TEAM_IDoconfig.yamlproporcionan la etiquetateam_idde nivel superior.CM_TEAM_ID=TEAM_ID cm find . cm stats --jsonl
Para los trabajos de Cloud Run y los pasos de Cloud Build en los que los archivos de registro locales no se conservan, consulta Exporta la telemetría de tokens a Cloud Logging.
Recopila datos de diagnóstico para el equipo de asistencia
Si te comunicas con el equipo de asistencia por un problema con CodeMender, ejecuta
cm support-bundle para recopilar los datos de diagnóstico que necesita el equipo de asistencia en un
solo archivo .tar.gz. El comando lee los archivos locales y verifica tus
credenciales, configuración y conexión a CodeMender. No sube
nada: tú revisas el archivo y lo adjuntas a tu caso de asistencia.
Para recopilar datos de sesiones específicas, pasa sus IDs o prefijos de ID. Para encontrar
los IDs de sesión, ejecuta cm session list. Puedes repetir --session:
cm support-bundle --session SESSION_ID
Sin --session, el comando recopila la actividad de las últimas 72 horas. Para
cambiar la ventana, usa --since:
cm support-bundle --since 24h
El comando escribe cm-support-bundle-TIMESTAMP.tar.gz en el directorio
actual y, luego, imprime su ruta de acceso. Para elegir la ruta de acceso, usa --output (o -o).
Qué contiene el archivo
De forma predeterminada, el archivo omite el código fuente, las diferencias y las entradas y salidas de la herramienta. Contiene lo siguiente:
- La versión de la CLI, el sistema operativo y una lista de lo que se recopiló.
- Variables de entorno de
CM_*y configuración del proyecto y del proxy. - Los resultados de las verificaciones de credenciales, configuración y conectividad.
- Tu archivo de configuración y la política de comandos.
- El estado, el modelo y el destino de cada sesión seleccionada.
- Tiempos por turno, uso de tokens, y nombres y duraciones de las llamadas a herramientas.
Los datos de la sesión aún pueden contener rutas de acceso de archivos y directorios, los argumentos de cada
comando cm, los títulos de los hallazgos y los mensajes de error de la herramienta.
Si el equipo de asistencia solicita más detalles, agrega --include-content. También recopila
hallazgos, parches generados y los registros de depuración de la CLI, que registran los argumentos
de cada llamada a la herramienta. Estos archivos pueden contener código fuente de tu repositorio,
así que revisa el archivo antes de compartirlo.
cm support-bundle --session SESSION_ID --include-content
En ambos modos, el comando oculta los tokens de acceso, las claves de API, las claves privadas, los encabezados de autorización y los campos de contraseña.
Para omitir las verificaciones de credenciales, configuración y conectividad, por ejemplo, cuando ejecutas el comando sin acceso a la red, usa --skip-health.
Mantenimiento de Workspace
Para restablecer los archivos de seguimiento de estado local y limpiar las cachés de ejecución temporales, ejecuta lo siguiente:
cm clean