Saltar al contenido principal

📦 bits ya está en disponibilidad general — cuatro agentes firmados que puede descargar y verificar

· 7 min de lectura
Cert-IX Team
Platform Development Team

La familia bits — los agentes que se ejecutan en sus propias máquinas — ya se puede descargar desde la página de descargas. Cuatro binarios, todos firmados con la misma clave, todos verificables antes de ejecutarlos.

AgenteVersiónQué hacePlataformas
bitcollectorv0.1.0-gaVerdad sobre los activos con valor probatorio, desde un host: procesos, paquetes, puertos, cuentas, posturaLinux amd64/arm64, macOS amd64/arm64, Windows amd64
bitscannerv0.1.3-gaEncuentra los dispositivos que su inventario no contieneLinux amd64/arm64
bitenforcerv0.1.0-gaValidación de la política de endurecimiento y comprobación previaLinux amd64/arm64
bitmapperv0.1.0-gaCaptura de conexiones en vivo — extremos, puertos, protocolo, contadores, estado de la conexión. Sin atribución por proceso en esta versiónLinux amd64
Corrección: bitmapper v0.1.0-ga no atribuye los flujos a procesos

La fila de arriba decía en un principio «Captura de conexiones en vivo con atribución por proceso», y la entrada de bitmapper en Para qué sirve cada agente afirmaba que bitmapper informa de «qué procesos están hablando realmente con qué, atribuido conexión a conexión». Ambas afirmaciones eran falsas respecto al binario que anuncia esta entrada, y lo eran en la dirección que a usted le cuesta: la atribución por proceso es lo que distingue a bitmapper de un escáner externo al host, y es la razón misma para desplegarlo.

Medido contra el 0.1.0-ga publicado — commit 64ebc64, el artefacto que hoy está en la página de descargas — 0 de 12 flujos capturados llevaban atribución de proceso alguna, incluido un flujo de 60 segundos cuyo proceso propietario estuvo vivo y consultable de principio a fin. destination_process nunca se rellenó fuera del código de prueba. En esa compilación la búsqueda se intenta una sola vez, al crear la conexión, contra una instantánea de la tabla de sockets que no puede contener el socket de una conexión saliente recién nacida; ningún paquete posterior lo reintenta, y no hay ninguna inferencia a partir de los sockets en escucha a la que recurrir, porque ese código sencillamente no está en 64ebc64.

Lo que v0.1.0-ga sí hace es captura pasiva de flujos, y esa parte es real. Cada conexión seguida se exporta como un registro de flujo: extremos de origen y destino, puertos, protocolo, estado de la conexión, sentido, interfaz, primera y última observación, duración y contadores de bytes y paquetes — sin un solo byte de carga útil, nunca. Es una respuesta útil a «con qué está hablando esta máquina». No es una respuesta a «qué proceso lo está haciendo».

La atribución por proceso está implementada y verificada — sencillamente no está en el binario que usted puede descargar. En el mismo banco de pruebas que midió 0 de 12, el reemplazo atribuye 12 de 12, anota la respuesta en el extremo que realmente posee el socket y separa una coincidencia directa de socket de una inferencia, negándose a nombrar a nadie cuando un puerto tiene varios procesos en escucha. Llegará en la próxima versión de bitmapper. Aquí no le ponemos fecha: ya le dijimos una vez que esta capacidad estaba entregada cuando no lo estaba.

Si descargó bitmapper fiándose de la frase original, el error es nuestro. Atribución de procesos expone exactamente qué resuelve el binario de hoy y qué lo reemplaza.

Por qué unos agentes listan menos plataformas que otros​

Porque un binario que se instala, se declara sano y no recopila nada es peor que no tener binario.

Cada plataforma de esa tabla es una plataforma en la que el agente hace su trabajo. Donde no lo haría, no lo hemos publicado, y preferimos decirlo antes que dejar que usted lo descubra después de un despliegue:

  • bitenforcer es solo para Linux. Toda su superficie es iptables, sysctl, systemd y SELinux. En macOS esos elementos no existen, así que el agente no validaría nada y sus primitivas de reversión no tendrían nada que restaurar.
  • bitmapper es solo para Linux amd64. Necesita una biblioteca real de captura de paquetes compilada dentro. Una compilación sin ella sigue produciendo un binario ejecutable — uno que no captura absolutamente nada — así que nuestra canalización de release se niega a firmar un artefacto que no pueda demostrar que captura.
  • bitscanner es solo para Linux por la misma clase de motivo: sus lectores de vecinos y de rutas están implementados para Linux.

Esperamos que estas listas crezcan. Cuando lo hagan, será porque el agente se ha ejercitado en esa plataforma, no porque haya compilado.

Verifique antes de ejecutar​

Cada release incluye una firma separada, un SBOM y una atestación de compilación por binario, más un SHA256SUMS firmado que cubre el conjunto completo. Las compilaciones son reproducibles: la canalización compila dos veces desde cero y se niega a publicar salvo que ambas sean idénticas byte a byte.

La clave de firma se publica en tres lugares independientes que deben coincidir: el sitio de documentación, un registro DNS TXT que lleva su huella y un segundo registro TXT que lleva la clave en sí. Contraste al menos dos. Una firma solo vale lo que valga el ancla de confianza que hay detrás, y una sola fuente es un ritual, no una comprobación.

# Obtenga la clave por DNS — funciona dentro de CI, donde la protección antibots bloquea las descargas HTTPS simples
dig +short TXT _cosign-key.cert-ix.com | tr -d '"' | sed 's/.*key=//' \
| base64 -d | openssl pkey -pubin -inform DER -out cosign.pub

# Confirme que es NUESTRA clave, frente a la huella publicada en el sitio de documentación
openssl pkey -pubin -in cosign.pub -outform DER | sha256sum
# esperado: 552839f6b1b1eb0934557e1886326c7270584fa602fbf56f84754a98be3de822

# Después, verifique la release que ha descargado
cosign verify-blob --key cosign.pub --bundle SHA256SUMS.sig \
--insecure-ignore-tlog=true SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
El DNS es el transporte, no el ancla de confianza

cert-ix.com todavía no publica un registro DS, así que las respuestas DNS no están validadas criptográficamente de extremo a extremo. Obtener la clave por DNS es cómodo y funciona donde HTTPS está bloqueado, pero lo que establece la confianza es la comparación de la huella contra el sitio de documentación — cargado por HTTPS, con un certificado validado. No se lo salte.

Las instrucciones completas, incluido para qué sirve cada fichero de una release y qué aspecto tiene una comprobación fallida, están en Verificación de sus descargas.

Para qué sirve cada agente​

  • bitcollector — qué hay en esta máquina, como evidencia y no como afirmación. Cada lote está atestado y la cadena se puede verificar sin conexión, sin ningún acceso a Cert-IX.
  • bitscanner — los dispositivos que un inventario basado en agentes no puede ver por construcción, porque no hay nada instalado en ellos. Se distribuye inerte: no pone ningún paquete en su red hasta que usted lo arma explícitamente, y la autorización no puede venir de una variable de entorno.
  • bitenforcer — qué cambiaría una política de endurecimiento, antes de que cambie nada. La v1 valida e informa; no aplica.
  • bitmapper — con qué está hablando realmente esta máquina, flujo a flujo: extremos, puertos, protocolo, contadores y estado de la conexión, capturados en vivo desde sus propias interfaces. En v0.1.0-ga esos flujos no llevan ninguna atribución por proceso — lea la corrección de arriba antes de planificar sobre ello.

Por dónde empezar​

Descargue un agente, verifíquelo y lea la página del que haya elegido. Si no sabe cuál, ¿Qué es bits? explica cómo encajan los cuatro y, igual de importante, qué es lo que cada uno deliberadamente no hace.