Skip to main content
Glama
evidiq

EVIDIQ Bastion

Official
by evidiq

코드형 인프라(IaC) 및 배포 구성은 자율 에이전트 서비스의 보안 경계를 정의합니다. 컨테이너 워크로드를 root로 실행하거나, 0.0.0.0/0 인그레스 규칙을 노출하거나, 고정되지 않은 GitHub Actions를 사용하거나, 호스트 네트워크 경로를 마운트하도록 구성된 에이전트 서비스는 코드가 실행되기 전에 즉각적인 클러스터 손상 위험을 초래합니다.

EVIDIQ Bastion은 인프라 구성을 위한 배포 전 보안 게이트입니다.
Dockerfile, GitHub Actions CI 워크플로, Kubernetes 매니페스트, Terraform HCL/Compose 파일을 전달하세요. 비-root 실행, 자격 증명 격리, 공급망 무결성, 리소스 상한, 서명된 증명을 적용하는 14가지 결정적 보안 규칙을 평가합니다.

Bastion은 인프라를 절대 배포하지 않으며, 입력 매니페스트를 절대 실행하지 않고, 개인 키를 절대 받지 않습니다.

제공 기능

  • 비-root 실행 강제 — 컨테이너 빌드에서 루트 사용자 실행(USER root 또는 non-root USER 지시문 누락)을 탐지합니다.

  • 공급망 액션 고정 — GitHub Actions에 대해 전체 40자 커밋 SHA 고정(변경 가능한 @v3/@main 태그 차단)을 적용하고 Docker 기본 이미지에는 변경 불가능한 SHA-256 다이제스트를 적용합니다.

  • 자격 증명 격리 — 빌드 ARG/ENV 지시문, 평문 IaC 변수 기본값, Kubernetes 시크릿 환경 변수에서 하드코딩된 시크릿, API 키 또는 개인 키를 탐지합니다.

  • Kubernetes 워크로드 강화 — 권한 있는 컨테이너(privileged: true), hostPath 볼륨 마운트, hostNetwork 노출, 누락된 CPU/메모리 리소스 상한을 식별합니다.

  • IaC 노출 감사 — Terraform HCL 및 Docker Compose에서 개방형 월드 인그레스(0.0.0.0/0), 공개 S3 버킷, 제한되지 않은 컨테이너 역량을 감사합니다.

  • CI/CD 파이프라인 공격 벡터pull_request_target 트리거의 신뢰할 수 없는 코드 체크아웃 위험, run 단계의 이스케이프되지 않은 github.event 표현식 삽입, 과도하게 넓은 permissions: write-all을 탐지합니다.

  • 서명된 증명attest_deployment는 구성 다이제스트, 평가 결과, 판정을 EIP-191 서명 증명에 바인딩하고 0G 스토리지에 앵커링합니다.

  • 결정적 판정 — 실패한 blocker가 있으면 BLOCK; 그 외 실패한 high가 있으면 REVIEW; 깨끗한 평가는 PASS입니다.

  • 건별 결제 — 5개의 유료 분석 도구는 0.005–0.03 USDT0; 5개의 사전 점검 및 검증 도구는 무료입니다.

Related MCP server: supership-scan

Bastion을 사용해야 하는 경우

인프라 코드를 적용하거나 배포하기 전에 Bastion을 사용하세요: 컨테이너 이미지를 빌드하기 전, CI/CD 워크플로 풀 리퀘스트를 병합하기 전, Kubernetes 매니페스트를 적용하기 전(kubectl apply), 또는 Terraform을 실행하기 전(terraform apply).

개인 키를 보내지 마세요 — 절대. 스마트 컨트랙트 calldata를 여기로 보내지 마세요(그것은 Assay), 소스 코드는 Warden, 엔드포인트 도달 가능성은 Sentinel, 의존성 매니페스트는 Lineage, 영구 작업 로깅은 Vault입니다.

자연스러운 흐름: validate_configscan_dockerfile / scan_workflowattest_deploymentappend_record (Vault).

모든 에이전트에서 사용

# 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

공개 엔드포인트:

엔드포인트

용도

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

원격 Streamable HTTP MCP 전송

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

에이전트가 읽을 수 있는 사용 및 안전 가이드

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

x402 v2 가격 및 결제 정보

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

서비스 상태 및 결제 게이트 상태

https://evidiq.dev/docs/bastion

기술 문서

MCP 도구

유료 분석 및 증명

도구

비용

원자 단위

설명

scan_dockerfile

0.005 USDT0

5000

루트 사용자, 고정되지 않은 기본 이미지, 빌드 스테이지 시크릿, ADD URL을 감사합니다.

scan_workflow

0.01 USDT0

10000

고정되지 않은 액션, pull_request_target 위험, 스크립트 삽입에 대해 GitHub Actions 워크플로 YAML을 감사합니다.

scan_manifest

0.015 USDT0

15000

권한 모드, hostPath/hostNetwork, 누락된 리소스 상한에 대해 Kubernetes 매니페스트를 감사합니다.

scan_iac

0.02 USDT0

20000

0.0.0.0/0 인그레스, 공개 스토리지 버킷, 평문 시크릿에 대해 Terraform HCL 및 Docker Compose를 감사합니다.

attest_deployment

0.03 USDT0

30000

배포 구성 다이제스트와 판정을 0G 스토리지에 앵커링된 EIP-191 서명 증명에 바인딩합니다.

무료 사전 점검 및 검증

도구

비용

설명

bastion_capabilities

무료

심각도, 지원 구성 종류, 제한, 전체 가격, 도구 목록을 포함한 규칙 카탈로그

validate_config

무료

무료 사전 점검 파싱: 구성 유형 자동 감지, SHA-256 다이제스트 계산, 입력 시크릿 검사, 심각도 수 보고

estimate_cost

무료

가격 견적 조회 도구; 인수 없이 전체 가격표 제공

verify_bastion_report

무료

오프라인 SHA-256 콘텐츠 다이제스트 및 EIP-191 서명 검증기

get_artifact

무료

artifactId로 저장된 보고서 또는 증명을 검색합니다(10분 TTL).

테스트 검증 및 자동화 하네스 출력

EVIDIQ Bastion의 모든 규칙과 결제 게이트는 VPS에서 자동화된 테스트 하네스(tester/harness.mjs)를 통해 검증됩니다.

1. 자동화 하네스 픽스처 매트릭스 (14/14 PASS)

픽스처

도구

예상 판정

실제 판정

집합 동일성 일치

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 (깨끗함)

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 (깨끗함)

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 (깨끗한 템플릿)

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 (깨끗함)

2. 검증 하네스 로그 (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. OpenClaw 자율 에이전트 실행 추적

에이전트 실행 1 — 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

에이전트 실행 2 — 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

권장 워크플로

결제는 유료 도구가 실행되기 전에 이루어지므로, 잘못된 인수도 유료 호출로 처리됩니다. 먼저 무료로 사전 점검하세요:

  1. bastion_capabilities — 규칙 집합 카탈로그, 지원 구성 유형, 제한, 가격.

  2. validate_config — 구성 유형을 확인하고 입력 시크릿을 탐지하며 요금을 부과하지 않고 심각도 수를 반환합니다.

  3. estimate_cost — 실행하려는 작업의 정확한 가격.

  4. 요청당 유료 호출 1회(scan_dockerfile, scan_workflow, scan_manifest, scan_iac, 또는 attest_deployment).

  5. verify_bastion_report — 서명 및 보고서 다이제스트의 무료 오프라인 검증.

규칙 패밀리 및 판정 엔진

Bastion은 6개 패밀리에 걸쳐 14가지 결정적 보안 규칙을 적용합니다:

  • 권한: BASTION_ROOT_USER, BASTION_PRIVILEGED

  • 노출: BASTION_WORLD_INGRESS, BASTION_PUBLIC_STORAGE, BASTION_HOST_NETWORK

  • 시크릿: BASTION_SECRET_IN_BUILD_ARG, BASTION_PLAINTEXT_SECRET, BASTION_SECRET_ENV

  • 공급망: BASTION_UNPINNED_BASE, BASTION_ACTION_NOT_PINNED, BASTION_PR_TARGET_UNTRUSTED, BASTION_EXPR_INJECTION

  • 리소스: BASTION_NO_RESOURCE_LIMITS

  • 위생: BASTION_ADD_URL, BASTION_UNPINNED_PKG_INSTALL

판정 로직:

  • blocker 규칙 중 하나라도 실패하면 → BLOCK

  • high 규칙 중 하나라도 실패하면(blocker 0개) → REVIEW

  • 평가가 깨끗하면(blocker 0개, high 발견 0개) → PASS

보고서가 입증하는 것과 입증하지 못하는 것

  • 이 보고서는 이 정확한 배포 구성이 결정론적 14-규칙 엔진 버전으로 평가되었을 때 이 콘텐츠 다이제스트, 발견 항목 집합, 판정을 산출했음을 입증합니다.

  • Bastion의 신뢰된 키로 서명되고 0G 스토리지에 앵커링할 수 있는 EIP-191 서명을 생성합니다.

  • 정적 구성을 넘어서는 런타임 애플리케이션 보안을 보장하지는 않습니다. IaC 정의 외부의 동적 애플리케이션 버그나 실시간 네트워크 공격은 정적 범위를 벗어납니다.


아키텍처

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;

TypeScript SDK

실시간 엔드포인트용 타입 클라이언트는 sdk/index.ts에 있습니다 — 도구 10개(무료 5개, 유료 5개). 무료 도구는 단순 호출에 응답하고, 유료 도구는 x402 흐름을 자동으로 실행합니다(402 챌린지 → pay 훅 → x-payment 헤더로 재전송). 파일에는 어떤 키도 저장되어 있지 않습니다.

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" });

pay 훅은 디코딩된 x402 v2 챌린지({ x402Version, resource, accepts[] } — payTo, asset, amount)를 받아 x-payment 헤더의 값을 반환합니다(예: 공식 OKX SDK를 통해 정산되는 EIP-3009 transferWithAuthorization). 훅이 없으면 유료 호출은 PaymentRequiredError를 던지므로 호출자가 원하는 방식으로 정산할 수 있습니다.

라이선스

EVIDIQ는 자체 Bastion 코드를 MIT 라이선스로 소유하고 라이선스를 부여합니다. 타사 종속성은 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