Skip to content

gRPC detection cannot connect to real gRPC servers — 0% detection rate against live targets #72

Description

@GovindarajanL

Summary

GrpcEndpointDetectionTestCase probes for gRPC services over the shared HttpClient, which wraps an OkHttp client configured for standard HTTP/1.1. Real gRPC servers only speak HTTP/2 (typically cleartext/h2c for internal services, as in these test labs). Because the client never negotiates HTTP/2 prior-knowledge, it cannot complete a connection to a gRPC service at all — the probe request fails at the transport layer before there's any response to inspect for content-type: application/grpc.

Location

  • src/main/java/org/owasp/astf/testcases/GrpcEndpointDetectionTestCase.java (detectGrpcEndpoint, detectServerReflection)
  • src/main/java/org/owasp/astf/core/http/HttpClient.java:63-66 (OkHttpClient builder — no Protocol.H2_PRIOR_KNOWLEDGE)

Reproduction

Built and ran gRPC Goat labs 001 (server reflection enabled) and 002 (plaintext gRPC) locally. Confirmed both were live and serving:

$ docker logs grpc-goat-001
2026/07/25 04:23:42 gRPC server starting on port 8001...

Scanning both with --test-cases ASTF-GRPC-2023 produced 0 findings on both, including lab001 which is specifically the "reflection enabled" scenario ASTF's own test case is designed to catch.

Confirmed the transport-level cause manually:

$ curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:8001/
000   # plain HTTP/1.1 — connection never completes

$ curl -s -o /dev/null -w "%{http_code}" --http2-prior-knowledge http://127.0.0.1:8001/
415   # real HTTP/2 connection succeeds — server is genuinely reachable

Suggested fix

Configure a dedicated OkHttpClient (or separate lightweight HTTP/2 client) for this test case with .protocols(List.of(Protocol.H2_PRIOR_KNOWLEDGE)) for cleartext gRPC targets, and standard ALPN-negotiated HTTP/2 for TLS gRPC targets, so the probe can actually complete a connection before checking for application/grpc response signals.

Impact

As currently implemented, ASTF-GRPC-2023 cannot detect any real gRPC service over gRPC's actual wire protocol — it will report "not gRPC" (silently, via a caught exception) against every legitimate gRPC target.

Companion to #70, #71 — found during a manual verification pass of ASTF v1.0.0 against VAmPI, crAPI, DVGA, and gRPC Goat.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions