El eBPF backstop es el observador non-cooperative de ground truth. Se engancha a tracepoints de syscalls del kernel y reporta I/O de ficheros y red como aristas del access map que ningún agente en userspace puede evadir, desactivar ni tergiversar. Donde la telemetria cooperativa confia en que el agente informe con honestidad, el backstop no lo hace — observa el kernel, no el agente.
Para el modelo general de fuentes y la estructura de OLIVARES_SOURCES_CONFIG,
consulta Conectar una fuente. Para la via
cooperativa que el backstop complementa, consulta
Conectar Claude Code.
Que observa
El backstop instrumenta syscalls a nivel de kernel — open, read, write,
connect, sendto, recvfrom y sus variantes — y emite una observacion por
cada evento de I/O relevante. La clasificación lectura/escritura proviene de la
propia syscall, no de lo que el agente declare, por lo que es autoritativa del
mismo modo que la clase READ/WRITE de pgAudit es autoritativa: el kernel
realizo la operación, por tanto la operación ocurrio.
El resultado es un flujo de aristas del access map que atribuyen I/O de ficheros y red a una identidad de proceso en el host. Estas aristas alimentan el mismo access map que cualquier otra fuente.
Por que existe
La telemetria cooperativa — exportaciones OpenTelemetry, payloads de hooks, introspeccion MCP — es mas rica y de mayor nivel, pero es cooperativa: es el agente quien la emite. Un agente que desactiva su exportador OTel, o un runtime que nunca tuvo uno, no produce ninguna senal cooperativa.
El eBPF backstop cierra esa brecha. Un agente que deja de exportar telemetria sigue haciendo syscalls; el kernel las sigue viendo; el backstop las sigue reportando. Este es el ground truth al que hace referencia el documento Conectar Claude Code:
El ground truth para actividad genuinamente non-cooperative es el backstop kernel/eBPF, no esta heurística.
Esa heurística — detectar una sesión que deja de emitir OTel mientras sus hooks siguen disparandose — es una senal de anomalia del lado cooperativo. El backstop hace observable el lado non-cooperative.
Nivel de cobertura
El backstop es de nivel clean en el modelo de fidelidad. Lectura vs escritura se determina a partir de la syscall, no de lo que el agente declare. El documento de fidelidad lo enumera junto a pgAudit y CloudTrail: “the kernel-level eBPF ground truth.” La cobertura clean no implica atribución clean — consulta los limites mas abajo.
Cuando usarlo frente a la observacion cooperativa
Se componen; no se sustituyen entre si.
- Cooperativo (OTel, hooks, MCP) — contexto de mayor nivel: sesiones, herramientas, modelos, coste. El mapa mas rico.
- Non-cooperative (eBPF) — la garantia anti-evasión: lo que realmente ocurrio a nivel de kernel, independientemente de lo que el agente decidiera reportar.
Ejecuta ambos. La via cooperativa construye el mapa rico contra el que gobiernas. El backstop proporciona el suelo infalsificable que captura cualquier cosa que la via cooperativa haya pasado por alto — evasión, mala configuración, o un runtime sin telemetria.
Modelo de despliegue
El backstop se ejecuta en cada host donde los agentes operan, integrado en el
serve estándar como source kind ebpf junto a pgaudit, s3cloudtrail,
runtime, mcp y claude. Dado que los programas eBPF se enganchan al kernel
del host, una sola instancia por host cubre todos los procesos de agentes. No
hay paso de instalacion por agente.
Capacidades Linux
El tracing eBPF requiere privilegios elevados de kernel. Como mínimo, el proceso
que carga los programas eBPF necesita capacidades de la familia CAP_BPF y
CAP_PERFMON (o equivalentes, dependiendo de la version del kernel — kernels
mas antiguos las engloban en CAP_SYS_ADMIN).
:::caution
El conjunto exacto de capacidades depende de tu version de kernel, distribucion
y modulo de seguridad (AppArmor, SELinux). Consulta la documentacion propia del
conector para los flags precisos requeridos — esta página no enumera un conjunto
definitivo porque varia entre entornos. Ejecutarlo en un contenedor requiere
grants de capacidades explicitos (y posiblemente un montaje del filesystem BPF);
un pod de Kubernetes con restricciones necesita overrides en securityContext.
:::
Configuración
Selecciona kind: "ebpf" en OLIVARES_SOURCES_CONFIG, usando la misma
estructura de source-entry que cualquier otro conector:
{
"sources": [
{
"name": "host-backstop",
"kind": "ebpf",
"tenant": "acme",
"config": {}
}
]
}
Las claves exactas de config pertenecen al conector; lee su descriptor en lugar
de copiar un schema no verificado. El objeto config de arriba esta
intencionalmente vacio — esta página sigue la misma regla que
Conectar una fuente: solo documentamos claves
que hemos verificado, y no hemos verificado la superficie de configuración del
conector eBPF desde estos docs web.
Propiedades anti-evasión
El backstop no depende de la cooperación del agente:
- Un agente que desactiva su exportador OTel sigue generando syscalls en el kernel — el backstop las ve.
- Un agente que miente en su telemetria cooperativa no puede mentir al kernel. El registro de syscalls es autoritativo.
- Un servidor MCP que informa incorrectamente
readOnlyHint/destructiveHintno afecta a lo que el backstop observa — son senales cooperativas que no consume.
La heurística del lado cooperativo en Conectar Claude Code — una sesión cuyo OTel se silencia mientras los hooks siguen disparandose — es una senal de deteccion. El backstop es el ground truth al que apunta esa senal.
Limites honestos
El backstop observa lo que el kernel ve, no lo que el agente pretende. Esa distincion importa:
- La atribución es a nivel de proceso. El I/O se atribuye a una identidad
de proceso (PID, UID, ruta del binario). Si multiples agentes comparten un
proceso, el backstop no puede separar sus accesos — la atribución es
approximate, nofirm. La atribución por agente requiere una senal de identidad por agente; consulta Fidelidad. - Sin contexto de sesión ni herramienta. El backstop ve syscalls, no sesiones ni nombres de herramientas. No puede indicar que tool call provoco una escritura de fichero — solo que el proceso escribio el fichero. La via cooperativa lleva ese contexto.
- Dependencia de la version de kernel. La disponibilidad de tracepoints eBPF varia entre versiones de kernel. Confirma la version mínima de kernel contra la documentacion propia del conector.
- Sin contenido de payload. Como cualquier otra fuente, el backstop emite identificadores y una clasificación lectura/escritura, nunca contenido de ficheros ni payloads de red.
Relacionado
- Conectar una fuente — el modelo general de fuentes y fichero de configuración.
- Conectar Claude Code — la via cooperativa que el backstop complementa.
- Cobertura y fidelidad de atribución — los ejes clean/lossy/opaque y firm/approximate/unknown.
- El access map — lo que estas observaciones construyen.