Skip to content

Detecting Taint-Style Vulnerabilities in Microservice-Structured Web Apps

Fengyu LiuYouKun ShiTian ChenBocheng XiangJunyao HeQi LiGuangliang YangYuan ZhangMin Yang

Microservice architecture has become increasingly popular for building scalable and maintainable applications.

Summary

Overview: The presenters introduce an automated program analysis framework designed to identify taint-style vulnerabilities across distributed, microservice-structured web applications. As modern enterprise architectures transition from monolithic codebases to decoupled microservices communicating via REST APIs, gRPC, and asynchronous message brokers, traditional static and dynamic taint analysis tools fail because data flow tracking stops at network boundaries. The authors present a cross-service static taint analysis system that reconstructs inter-service communication contracts, propagates taint across service boundaries, and accurately uncovers vulnerabilities like SQL injection, SSRF, and command injection.

Key Topics: - Architectural limitations of monolithic Static Application Security Testing (SAST) in microservice environments - Taint-style vulnerability classes: SQL injection, Server-Side Request Forgery (SSRF), and remote code execution - Modeling inter-service communication contracts across HTTP REST, gRPC Protobufs, and message queues - Cross-service call graph construction and end-to-end source-to-sink taint propagation

Technical Details: Modern web applications are increasingly architected as distributed networks of independent microservices, where each service encapsulates a specific business function and exchanges data over lightweight network protocols like HTTP/JSON, Protocol Buffers over gRPC, or message queues such as Kafka and RabbitMQ. Conventional taint analysis operates on monolithic codebases by constructing an interprocedural control-flow graph (ICFG) to trace untrusted input from an entry point (the source) to an internal execution function (the sink), ensuring malicious data cannot trigger memory corruption, command execution, or injection vulnerabilities.

In microservice environments, this contiguous data propagation chain is broken. An untrusted user payload entering Service A (such as an API gateway) is deserialized, processed, and transmitted via an internal REST or RPC call to Service B, which may forward it through a message queue to Service C, where it is finally passed into an unparameterized database query. When traditional SAST tools audit these microservices individually, they fail completely: Service A appears benign because the untrusted input terminates in an outbound HTTP client request, while Service C appears secure because its inputs arrive from what seems to be a trusted internal RPC interface, creating critical visibility gaps across the organization.

To overcome this structural limitation, the researchers developed a multi-stage static analysis engine capable of spanning service boundaries. The framework first analyzes deployment manifests, routing configurations, and interface definitions (such as OpenAPI specs and Protobuf definitions) to map the global topology of the microservice cluster. Next, it performs local static analysis on each service, generating concise taint summaries that define how input parameters influence outbound network requests. Finally, the framework stitches these local summaries into a unified cross-service data-flow graph. By tracking taint across intermediate network hops, the system successfully detects complex, multi-service injection chains without requiring runtime instrumentation.

Key Takeaways: Evaluating microservices with isolated static analysis tools creates severe blind spots because taint chains are severed at network communication boundaries. Application security programs must adopt cross-service taint analysis capable of parsing API specifications, RPC schemas, and message queues to evaluate end-to-end data flows. Development teams should enforce rigorous input validation, strict parameterization, and zero-trust mutual authentication across internal service boundaries rather than treating inter-service network traffic as implicitly trusted.

(AI summary — Gemini Flash)

Related talks