Skip to main content
Glama
evidiq

EVIDIQ Bastion

Official
by evidiq

Las configuraciones de Infraestructura como Código y las de despliegue definen el perímetro de seguridad de los servicios de agentes autónomos. Un servicio de agente configurado para ejecutar cargas de trabajo de contenedores como root, exponer reglas de acceso entrante 0.0.0.0/0, usar GitHub Actions sin fijar, o montar rutas de red del host introduce riesgos inmediatos de compromiso del clúster antes de que se ejecute cualquier código.

EVIDIQ Bastion es la puerta de seguridad previa al despliegue para las configuraciones de infraestructura.
Pásale Dockerfiles, flujos de trabajo CI de GitHub Actions, manifiestos de Kubernetes o archivos Terraform HCL / Compose. Evalúa 14 reglas de seguridad deterministas — que imponen la ejecución no root, el aislamiento de credenciales, la integridad de la cadena de suministro, los límites de recursos y las atestaciones firmadas.

Bastion nunca despliega infraestructura, nunca ejecuta los manifiestos de entrada y nunca acepta claves privadas.

Qué hace

  • Aplicación de ejecución no root — Detecta la ejecución como usuario root (USER root o la ausencia de una directiva USER no root) en las construcciones de contenedores.

  • Fijación de acciones de la cadena de suministro — Aplica el fijado completo del SHA de commit de 40 caracteres para GitHub Actions (bloqueando etiquetas mutables @v3 / @main) y resúmenes SHA-256 inmutables para las imágenes base de Docker.

  • Aislamiento de credenciales — Detecta secretos codificados, claves de API o claves privadas en directivas ARG/ENV de construcción, valores predeterminados de variables IaC en texto plano y variables de entorno de secretos de Kubernetes.

  • Endurecimiento de cargas de trabajo de Kubernetes — Identifica contenedores privilegiados (privileged: true), montajes de volúmenes hostPath, exposición de hostNetwork y ausencia de límites de recursos de CPU/memoria.

  • Auditoría de exposición de IaC — Audita Terraform HCL y Docker Compose para detectar acceso entrante mundial abierto (0.0.0.0/0), cubos S3 públicos y capacidades de contenedor sin restricciones.

  • Vectores de ataque en tuberías CI/CD — Detecta riesgos de checkout de código no confiable en activadores pull_request_target, inyección de expresiones github.event sin escapar en pasos run y permisos excesivamente amplios permissions: write-all.

  • Atestaciones firmadasattest_deployment vincula el resumen de la configuración, los hallazgos de la evaluación y el veredicto en una atestación firmada EIP-191 y la ancla en el almacenamiento 0G.

  • Veredictos deterministas — Cualquier blocker fallido produce BLOCK; de lo contrario, cualquier high fallido produce REVIEW; las evaluaciones limpias producen PASS.

  • Pago por verificación — Cinco herramientas de análisis de pago a 0.005–0.03 USDT0; cinco herramientas de preflight y verificación son gratuitas.

Related MCP server: supership-scan

Cuándo acudir a Bastion

Usa Bastion antes de aplicar o desplegar código de infraestructura: antes de construir imágenes de contenedores, antes de fusionar solicitudes de extracción de flujos de trabajo CI/CD, antes de aplicar manifiestos de Kubernetes (kubectl apply) o antes de ejecutar Terraform (terraform apply).

No le envíes claves privadas — nunca. No enrutes calldata de contratos inteligentes aquí (eso es Assay), el código fuente es Warden, la accesibilidad de endpoints es Sentinel, los manifiestos de dependencias son Lineage y el registro de acciones duradero es Vault.

Una cadena natural: validate_configscan_dockerfile / scan_workflowattest_deploymentappend_record (Vault).

Úsalo desde cualquier agente

# Read the public Skill document
curl -s https://mcp.evidiq.dev/bastion/skill.md

# Inspect current x402 pricing discovery
curl -s https://mcp.evidiq.dev/bastion/x402

# Connect the remote MCP server (OpenClaw)
openclaw mcp add evidiq-bastion --transport streamable-http --url https://mcp.evidiq.dev/bastion/mcp

# Connect the remote MCP server (Claude Code)
claude mcp add --transport http evidiq-bastion https://mcp.evidiq.dev/bastion/mcp

Endpoints públicos:

Endpoint

Propósito

https://mcp.evidiq.dev/bastion/mcp

Transporte MCP HTTP Streamable remoto

https://mcp.evidiq.dev/bastion/skill.md

Guía de uso y seguridad legible por agentes

https://mcp.evidiq.dev/bastion/x402

Descubrimiento de precios y pagos x402 v2

https://mcp.evidiq.dev/bastion/health

Estado del servicio y del portal de pagos

https://evidiq.dev/docs/bastion

Documentación técnica

Herramientas MCP

Análisis de pago y atestaciones

Herramienta

Costo

Atómico

Descripción

scan_dockerfile

0.005 USDT0

5000

Audita Dockerfiles en busca de usuario root, imágenes base sin fijar, secretos en etapas de construcción y URLs ADD

scan_workflow

0.01 USDT0

10000

Audita el YAML de flujos de trabajo de GitHub Actions en busca de acciones sin fijar, riesgos de pull_request_target e inyección de scripts

scan_manifest

0.015 USDT0

15000

Audita manifiestos de Kubernetes en busca de modo privilegiado, hostPath/hostNetwork y falta de límites de recursos

scan_iac

0.02 USDT0

20000

Audita Terraform HCL y Docker Compose en busca de acceso entrante 0.0.0.0/0, cubos de almacenamiento públicos y secretos en texto plano

attest_deployment

0.03 USDT0

30000

Vincula el resumen de la configuración de despliegue y el veredicto en una atestación firmada EIP-191 anclada en el almacenamiento 0G

Preflight y verificación gratuitos

Herramienta

Costo

Descripción

bastion_capabilities

Gratis

Catálogo de reglas con severidades, tipos de configuración compatibles, límites, precios completos y lista de herramientas

validate_config

Gratis

Verificación de preflight gratuita: detecta automáticamente el tipo de configuración, calcula el resumen SHA-256, comprueba si hay secretos en la entrada e informa recuentos de severidad

estimate_cost

Gratis

Herramienta de consulta de precios; sin argumento, muestra la tabla de precios completa

verify_bastion_report

Gratis

Validador de resumen de contenido SHA-256 fuera de línea y de firma EIP-191

get_artifact

Gratis

Recupera el informe o la atestación almacenados por artifactId (TTL de 10 minutos)

Verificación de pruebas y salida del arnés automatizado

Cada regla y portal de pago en EVIDIQ Bastion se valida mediante un arnés de pruebas automatizado (tester/harness.mjs) en VPS.

1. Matriz de casos de prueba del arnés automatizado (14/14 PASS)

Caso de prueba

Herramienta

Veredicto esperado

Veredicto real

Coincidencia de igualdad de conjuntos

dockerfile/root-user.Dockerfile

scan_dockerfile

BLOCK

BLOCK

true (BASTION_ROOT_USER)

dockerfile/latest-tag.Dockerfile

scan_dockerfile

REVIEW

REVIEW

true (BASTION_UNPINNED_BASE)

dockerfile/secret-in-arg.Dockerfile

scan_dockerfile

BLOCK

BLOCK

true (BASTION_SECRET_IN_BUILD_ARG)

dockerfile/clean.Dockerfile

scan_dockerfile

PASS

PASS

true (Limpio)

workflow/pr-target-checkout.yml

scan_workflow

BLOCK

BLOCK

true (BASTION_PR_TARGET_UNTRUSTED)

workflow/unpinned-action.yml

scan_workflow

REVIEW

REVIEW

true (BASTION_ACTION_NOT_PINNED)

workflow/script-injection.yml

scan_workflow

BLOCK

BLOCK

true (BASTION_EXPR_INJECTION)

workflow/clean.yml

scan_workflow

PASS

PASS

true (Limpio)

manifest/privileged.yaml

scan_manifest

BLOCK

BLOCK

true (BASTION_PRIVILEGED)

manifest/no-limits.yaml

scan_manifest

REVIEW

REVIEW

true (BASTION_NO_RESOURCE_LIMITS)

manifest/helm-templated.yaml

scan_manifest

REVIEW

REVIEW

true (Plantilla limpia)

iac/open-ingress.tf

scan_iac

BLOCK

BLOCK

true (BASTION_WORLD_INGRESS)

iac/plaintext-secret.tf

scan_iac

BLOCK

BLOCK

true (BASTION_PLAINTEXT_SECRET)

iac/clean.tf

scan_iac

PASS

PASS

true (Limpio)

2. Registros del arnés de verificación (node tester/harness.mjs)

=== Starting EVIDIQ Bastion MCP Test Harness ===
Test Container Endpoint: http://127.0.0.1:4012/mcp
Production Endpoint:     http://127.0.0.1:3012/mcp

--- Step 1: Verify Test Container Health & Bypass ---
  PASS: Test container health is 200 OK
  PASS: Test container carries bypass header 'x-x402-bypass: true'
  PASS: Test container response includes 'x402Bypass: true' in body

--- Step 2 & 3: Bare Call Sweep & Fixture Verification (14 Fixtures) ---
  PASS: 14/14 Fixture Assertions Passed with Exact Set-Equality Match

--- Step 4: Determinism & Digest Stability ---
  PASS: Repeated scan yields byte-identical SHA-256 digest: 274cd946dd164d373f6472ef66ab9d85450733f3c167dc4a066d25238a3eeeea

--- Step 5: Test Build Markers Check ---
  PASS: Response carries 'testBuild: true' marker

--- Step 6: Production Unpaid 402 Probes ---
  PASS: Production /health is 200 OK
  PASS: Production paymentGate is 'enforced'
  PASS: Production HEAD /mcp returns 402 Payment Required
  PASS: Production unpaid scan_dockerfile returns HTTP 402

=================================================
 SUCCESS: All EVIDIQ Bastion MCP test harness assertions PASSED!

3. Trazas de ejecución del agente autónomo OpenClaw

Ejecución del Agente 1 — Auditoría de Dockerfile (scan_dockerfile):

openclaw@evidiq-vps:~$ openclaw agent --session-id bastion-dockerfile-audit \
  --message "Use tool scan_dockerfile from evidiq-bastion MCP to audit: 'FROM node:22-alpine\nCMD [\"node\"]'" --local

[provider-transport-fetch] start provider=zerog model=glm-5.2 method=POST url=https://router-api.0g.ai/v1/chat/completions
[evidiq-bastion] Executing tool scan_dockerfile (content-length: 32 bytes)

## Dockerfile Audit Results
Verdict: 🚫 BLOCK (1 blocker finding)

Finding:
• [BASTION_ROOT_USER] Blocker (Line 2)
  Why: Container runs as root by default. A container escape gives root access on the host node.
  Remediation: Add 'USER node' instruction (node:22-alpine ships with UID 1000).

Report Integrity:
  Digest: 86e0124f52a23e277f9864190fcbff9
  Signer: 0x131E4A54aB221929834815c99195dAec316aC270
  Artifact ID: art_86e0124f52a23e27

Ejecución del Agente 2 — Auditoría de flujo de trabajo de GitHub Actions (scan_workflow):

openclaw@evidiq-vps:~$ openclaw agent --session-id bastion-workflow-audit \
  --message "Use tool scan_workflow from evidiq-bastion MCP to audit GitHub Actions workflow" --local

[provider-transport-fetch] start provider=zerog model=glm-5.2 method=POST url=https://router-api.0g.ai/v1/chat/completions
[evidiq-bastion] Executing tool scan_workflow (content-length: 88 bytes)

## GitHub Actions Workflow Audit
Verdict: ⚠️ REVIEW (0 Blocker, 1 High, 0 Medium)

Finding:
• [BASTION_ACTION_NOT_PINNED] High Severity
  Detail: actions/checkout@v3 is pinned to a mutable tag instead of commit SHA.
  Why: Mutable tags can be hijacked. Pinning to a SHA prevents untrusted action code updates.
  Remediation: Pin action to immutable 40-character commit SHA (e.g., actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11).

Integrity:
  Signature: EIP-191 signed by 0x131E4A54aB221929834815c99195dAec316aC270
  Artifact ID: art_960389b236d8cb9f

Flujo de trabajo recomendado

El cobro se produce antes de que se ejecute una herramienta de pago, por lo que un argumento mal formado sigue siendo una llamada de pago. Haz primero el preflight gratuito:

  1. bastion_capabilities — catálogo de reglas, tipos de configuración compatibles, límites y precios.

  2. validate_config — confirma el tipo de configuración, detecta secretos en la entrada y devuelve recuentos de severidad sin cobrar.

  3. estimate_cost — precio exacto de la operación que pretendes ejecutar.

  4. Una llamada de pago por solicitud (scan_dockerfile, scan_workflow, scan_manifest, scan_iac o attest_deployment).

  5. verify_bastion_report — verificación gratuita fuera de línea de la firma y del resumen del informe.

Familias de reglas y motor de veredictos

Bastion impone 14 reglas de seguridad deterministas en 6 familias:

  • Privilegio: BASTION_ROOT_USER, BASTION_PRIVILEGED

  • Exposición: BASTION_WORLD_INGRESS, BASTION_PUBLIC_STORAGE, BASTION_HOST_NETWORK

  • Secretos: BASTION_SECRET_IN_BUILD_ARG, BASTION_PLAINTEXT_SECRET, BASTION_SECRET_ENV

  • Cadena de suministro: BASTION_UNPINNED_BASE, BASTION_ACTION_NOT_PINNED, BASTION_PR_TARGET_UNTRUSTED, BASTION_EXPR_INJECTION

  • Recurso: BASTION_NO_RESOURCE_LIMITS

  • Higiene: BASTION_ADD_URL, BASTION_UNPINNED_PKG_INSTALL

Lógica de veredicto:

  • Si falla cualquier regla blockerBLOCK

  • Si falla cualquier regla high (con 0 bloqueantes) → REVIEW

  • Evaluación limpia (0 bloqueantes, 0 hallazgos de severidad alta) → PASS

Lo que un informe demuestra, y lo que no

  • demuestra que esta configuración de despliegue exacta, evaluada bajo la versión determinista del motor de 14 reglas, produjo este resumen de contenido, conjunto de hallazgos y veredicto.

  • produce una firma EIP-191 firmada por la clave de confianza de Bastion, anclable en el almacenamiento de 0G.

  • No garantiza la seguridad de la aplicación en tiempo de ejecución más allá de la configuración estática. Los errores dinámicos de la aplicación o los ataques a la red en vivo fuera de la definición de IaC quedan fuera del alcance estático.


Arquitectura

flowchart TB
    agent["<b>AI agent</b><br/>MCP client"]
    request{"Tool call<br/>free or paid?"}
    agent -->|POST /bastion/mcp| request

    free["Free preflight<br/>capabilities · validate_config<br/>estimate · verify · get_artifact"]
    gate["x402 v2 gate<br/>EIP-3009 exact · pay per config scan"]
    xlayer[("X Layer<br/>USD₮0 · eip155:196")]
    request -->|free helper| free
    request -->|paid config scan| gate
    gate -. verify and settle .-> xlayer

    subgraph bastion["EVIDIQ Bastion trust boundary"]
        direction TB
        parse["1. Config parser<br/>Dockerfile · YAML · HCL · manifest"]
        rules["2. 14-rule engine<br/>privilege · exposure · secrets · supply chain · resources"]
        report["3. Canonical report<br/>SHA-256 digest · EIP-191 signature"]
        artifacts["4. Content-addressed artifacts<br/>scan reports & attestations"]
        parse --> rules --> report --> artifacts
    end

    free --> parse
    gate --> parse

    response["<b>MCP response</b><br/>verdict + findings + attestation"]
    artifacts --> response

    classDef client fill:#312e81,stroke:#a78bfa,color:#ffffff,stroke-width:2px;
    classDef payment fill:#052e16,stroke:#4ade80,color:#ffffff,stroke-width:2px;
    classDef core fill:#0f172a,stroke:#38bdf8,color:#ffffff,stroke-width:2px;
    classDef output fill:#4c1d95,stroke:#c4b5fd,color:#ffffff,stroke-width:2px;
    class agent,request client;
    class free,gate,xlayer payment;
    class parse,rules,report,artifacts core;
    class response output;
    style bastion fill:#0f172a,stroke:#38bdf8,color:#e0f2fe,stroke-width:2px;

SDK de TypeScript

Un cliente tipado para el endpoint en vivo se encuentra en sdk/index.ts: 10 herramientas (5 gratuitas, 5 de pago). Las herramientas gratuitas responden a una llamada simple; las de pago ejecutan el flujo x402 automáticamente (desafío 402 → hook pay → reintento con la cabecera x-payment). Ninguna clave reside en el archivo.

import { BastionClient } from "./sdk/index.js";

const client = new BastionClient(); // endpoint defaults to https://mcp.evidiq.dev/bastion/mcp

// free
const caps = await client.callTool("bastion_capabilities", {});

// paid — settle the 402 challenge via the constructor's pay hook, or omit it
// to receive a PaymentRequiredError carrying the full x402 v2 challenge
const result = await client.callTool("some_paid_tool", { arg: "value" });

El hook pay recibe el desafío x402 v2 decodificado ({ x402Version, resource, accepts[] } — payTo, asset, amount) y devuelve el valor para la cabecera x-payment, p. ej., un transferWithAuthorization EIP-3009 liquidado mediante el SDK oficial de OKX. Sin un hook, las llamadas de pago lanzan PaymentRequiredError para que el llamante pueda liquidarlo como quiera.

Licencia

EVIDIQ es propietaria del código original de Bastion y lo licencia bajo MIT. Las dependencias de terceros conservan sus propias licencias de código abierto en THIRD_PARTY_NOTICES.md.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Security co-pilot for AI agents. Scans for vulnerabilities like prompt injection, infinite loops, and token bombing in AI Agents, audits MCP servers, verifies AGENTS.md governance, and generates EU AI Act compliance reports.
    10
    63
    3
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Predeploy security scanner for AI-generated code. 80+ vulnerability patterns across secrets, auth, injection, config, Supabase, and logging. Runs locally, code never leaves your machine. Optional x402 witnessed attestation.
    136
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Security auditor for CI ecosystems that detects supply-chain and injection flaws in CI/CD configuration files across seven CI platforms, providing taint analysis, remediation, and compliance scoring.
    2
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Local-first security check for AI coding agents — finds hardcoded secrets, exposed .env files, git-history leaks and vulnerable dependencies (OSV), entirely on your machine. Ask your agent "is this safe to ship?" and get a Launch Readiness score with a fix for every finding.
    MIT

View all related MCP servers

Related MCP Connectors

  • Four IaC audits in one call: Compose, Dockerfile, GitHub Actions, Kubernetes. 131 checks.

  • Hadolint-grade Dockerfile audit — 19 checks: secrets, privileges, supply chain, hygiene.

  • Multi-CI security scanner with a live threat-intel feed of compromised CI components

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/evidiq/evidiq-bastion-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server