Most recent
navigate open esc close Corpus index built 2026-06-07 23:58 UTC

← All reference

Reference

23. AI Safety Evaluation / Red-Team Self-Hosted

Source: https://github.com/nuclide-research/AI-LLM-Infrastructure-OSINT/blob/main/shodan/queries/23-ai-safety-eval

Section created: 2026-05-09

Self-hosted AI safety evaluation, adversarial probing, and guardrails platforms. Their finding-corpus may itself be sensitive when exposed: adversarial prompt libraries, evaluator outputs, and red-team test results contain proprietary attack vectors. LLM call traces stored by LangSmith/Langfuse (see §5) often include user PII.

Survey result (2026-05-04, corrected 2026-05-05): Initial probe reported 6 confirmed hosts; tightened fingerprints invalidated all 6 as false positives (substring noise on "garak" / "confident" / "deepeval"). Corrected total: 0 confirmed AI safety eval / red-team self-host on the 3.55M-IP tier-2 cloud sample. The ecosystem is CLI-dominant (Garak, HELM, PyRIT, Inspect AI ship as CLIs with no HTTP server mode); the HTTP-serving tier (Promptfoo, LangSmith, NeMo Guardrails) deploys predominantly in managed cloud or enterprise K8s rather than cheap-VPS.

Auth posture:

  • Promptfoo: T2 — has built-in web UI on port 15500 but auth is optional; most deployments are localhost-only.
  • LangSmith self-hosted: T2 — auth on by default; enterprise tier.
  • NeMo Guardrails: T2 — /v1/rails/configs sometimes open.
  • Garak REST: T1 — no auth if HTTP server mode used, but CLI-dominant deployment makes this rare.
  • DeepEval: T1 — no auth on the self-host HTTP server endpoint.

Fingerprinting lesson from this survey: Single-word substring matching ("garak", "deepeval", "confident") on response bodies fires on anime filenames, French marketing copy, and unrelated platforms at population scale. Conjunctive matching (status_code + json_field + anchored body_contains) is required. All fingerprints below reflect this constraint.


Shodan indexing note: Port-constrained bare strings return 0 for most AI safety eval platforms. port:15500 returns 730 but the port is shared — http.html:"promptfoo" (22) and http.title:"promptfoo" (17) are the precision signals. port:1984 http.status:200 returns 3,061 (port shared). http.html:"langsmith" (96) is the LangSmith working query.

Promptfoo

Shodan QueryVerified hitsNotes
http.html:"promptfoo"22Best precision; HTML-scoped any port
http.title:"promptfoo"17Title-based
port:15500730Port-only; shared with other services — use HTML fingerprint to confirm
http.html:"/api/evals"Promptfoo eval history endpoint path
http.html:"promptfoo"22Any port (reverse-proxied Promptfoo)
hostname:"promptfoo"rDNS pattern
ssl.cert.subject.cn:"promptfoo"TLS cert CN

LangSmith (self-hosted)

Shodan QueryVerified hitsNotes
http.html:"langsmith"96Best signal; HTML-scoped any port
http.title:"LangSmith"67Title-based
"langsmith"42Bare-string any field
port:1984 http.status:2003,061Port shared; noisy — confirm with HTML fingerprint
port:1984 "langsmith"0Port-constrained bare string does not work
http.html:"/info" port:1984LangSmith info endpoint (json_field: instance_flags)
hostname:"langsmith"rDNS pattern
ssl.cert.subject.cn:"langsmith"TLS cert CN

NeMo Guardrails

Shodan QueryNotes
port:8000 "nemo" "guardrails"NeMo Guardrails on default port
port:8080 "nemo" "guardrails"Alt port
http.html:"nemo-guardrails"Package identifier in source
http.html:"/v1/rails/configs"NeMo Guardrails config endpoint path
http.html:"/v1/rails/generate"Guardrails generation endpoint
"NeMo Guardrails"Product name in any indexed field
hostname:"guardrails"rDNS pattern

DeepEval

Shodan QueryNotes
port:8000 "deepeval" http.html:"/api/health"DeepEval server on port 8000 with health endpoint; conjunctive
port:5000 "deepeval" http.html:"/api/health"DeepEval on port 5000
port:8080 "deepeval" http.html:"/api/health"DeepEval on port 8080
http.html:"deepeval" http.html:"confident"DeepEval + Confident AI co-occurrence; reduces FP vs single-word match
http.html:"/api/test-cases"DeepEval test-case endpoint path
hostname:"deepeval"rDNS pattern
ssl.cert.subject.cn:"deepeval"TLS cert CN

Garak (NVIDIA adversarial harness — REST mode)

Shodan QueryVerified hitsNotes
http.html:"garak"23High FP risk — fires on Japanese anime filenames, non-AI pages; CLI-dominant deployment means 0 confirmed REST servers at population scale. Use conjunctive match.
http.html:"garak" http.html:"nvidia"Conjunction reduces FP rate
http.html:"/api/v1/garak/version"0Endpoint path not indexed by Shodan
"garak_version"0JSON field name not indexed
hostname:"garak"rDNS; still check for false positives

Inspect AI

Shodan QueryNotes
port:7575Inspect AI default web port
port:7576Inspect AI alt port
port:7575 http.html:"inspect"Inspect on default port
http.html:"/api/logs" port:7575Inspect AI log endpoint; JSON array response
http.title:"inspect" port:7575Title-based
"inspect-ai"Package identifier

Lakera Guard (self-hosted)

Shodan QueryNotes
port:8000 "lakera"Lakera Guard on port 8000
port:8080 "lakera"Lakera Guard on port 8080
http.html:"/v1/guard" port:8000Guard endpoint path; Server: lakera header expected
"lakera" "guard"Product name conjunction
hostname:"lakera"rDNS pattern
ssl.cert.subject.cn:"lakera"TLS cert CN

Combined

Shodan QueryNotes
(port:15500 OR port:1984 OR port:7575 OR port:7576)Dedicated-port AI safety eval sweep
(http.html:"promptfoo" OR http.html:"langsmith" OR http.html:"nemo-guardrails" OR http.html:"deepeval")Full product sweep
(hostname:"promptfoo" OR hostname:"langsmith" OR hostname:"deepeval" OR hostname:"guardrails")rDNS sweep
(ssl.cert.subject.cn:"promptfoo" OR ssl.cert.subject.cn:"langsmith" OR ssl.cert.subject.cn:"deepeval")TLS cert sweep