See SECURITY.md for the full threat model, including:
Modern Axis2/Java deployments serve JSON-RPC over HTTP/HTTPS as the primary protocol, with REST/OpenAPI and MCP as additional interfaces. The scan should weight accordingly: JSON processing, JSON-RPC dispatch, and the OpenAPI/MCP modules are the primary attack surface. SOAP/XML and WSDL processing are secondary.
JSON-RPC is the primary protocol for production deployments. The JSON module provides two serialization backends (Gson, Moshi) with enhanced HTTP/2 variants, JSON-RPC message receivers that dispatch method calls to service operations, field filtering, pagination, streaming formatters, and structured error responses. Scan for:
FieldFilteringMessageFormatter)Key files:
modules/json/src/org/apache/axis2/json/gson/rpc/JsonRpcMessageReceiver.java (Gson JSON-RPC dispatch)modules/json/src/org/apache/axis2/json/moshi/rpc/JsonRpcMessageReceiver.java (Moshi JSON-RPC dispatch)modules/json/src/org/apache/axis2/json/gson/rpc/JsonUtils.java (Gson JSON-RPC utilities)modules/json/src/org/apache/axis2/json/moshi/rpc/JsonUtils.java (Moshi JSON-RPC utilities)modules/json/src/org/apache/axis2/json/streaming/FieldFilteringMessageFormatter.java (field selection)modules/json/src/org/apache/axis2/json/rpc/JsonRpcFaultException.java (error responses)modules/json/src/org/apache/axis2/json/gsonh2/ (enhanced Gson for HTTP/2)modules/json/src/org/apache/axis2/json/moshih2/ (enhanced Moshi for HTTP/2)modules/kernel/src/org/apache/axis2/dispatchers/JSONBasedDefaultDispatcher.javaThe OpenAPI module auto-generates API schemas and Swagger UI from deployed services. The MCP module generates tool catalogs for AI agents. Both expose service metadata and accept configuration that could be manipulated. Scan for:
Key files:
modules/openapi/src/main/java/org/apache/axis2/openapi/OpenApiSpecGenerator.javamodules/openapi/src/main/java/org/apache/axis2/openapi/SwaggerUIHandler.javamodules/openapi/src/main/java/org/apache/axis2/openapi/OpenApiModule.javamodules/mcp-bridge/src/main/java/org/apache/axis2/mcp/bridge/McpStdioServer.javamodules/mcp-bridge/src/main/java/org/apache/axis2/mcp/bridge/ToolRegistry.javaThe clustering module was removed due to unvalidated ObjectInputStream deserialization on network input. Scan for any remaining paths where ObjectInputStream.readObject() processes data reachable from untrusted input, ensuring all network transports (HTTP, JMS, TCP, etc.) are considered as sources.
The remaining use of Java serialization is SafeObjectInputStream (whitelist-based) in the context externalization code — readExternal() methods on MessageContext, OperationContext, ServiceContext, SessionContext, Options, EndpointReference, and related classes. This externalization code is vestigial from the removed clustering feature and has no remaining untrusted input path in current deployments. Verify that no new code path feeds untrusted data into these readExternal() methods.
Key files:
modules/kernel/src/org/apache/axis2/context/externalize/SafeObjectInputStream.javamodules/kernel/src/org/apache/axis2/context/MessageContext.java (readExternal)modules/kernel/src/org/apache/axis2/util/ObjectStateUtils.javaThe HTTP transport is the network entry point for all protocols (JSON-RPC, REST, SOAP). Scan for header injection, request smuggling, and URI parsing issues.
Key files (HTTP/1.1 — primary inbound path):
modules/transport/http/src/main/java/org/apache/axis2/transport/http/AxisServlet.javamodules/transport/http/src/main/java/org/apache/axis2/transport/http/HTTPWorker.javaKey files (HTTP/2 — outbound sender via HttpClient5):
modules/transport-h2/src/main/java/org/apache/axis2/transport/h2/impl/httpclient5/H2TransportSender.javamodules/transport-h2/src/main/java/org/apache/axis2/transport/h2/impl/httpclient5/H2FlowControlManager.javamodules/transport-h2/src/main/java/org/apache/axis2/transport/h2/impl/httpclient5/H2StreamingRequestImpl.javamodules/transport-h2/src/main/java/org/apache/axis2/transport/h2/impl/httpclient5/H2ErrorHandler.javamodules/transport-h2/src/main/java/org/apache/axis2/transport/h2/impl/httpclient5/ALPNProtocolSelector.javawsdl4j and xmlschema-core create their own XML parser factories without XXE hardening. Axis2 wraps these with SecureWSDLLocator and hardened URI resolvers. Scan for any XML parsing path — especially through transitive dependencies — that bypasses this wrapping. Note: modern deployments primarily use JSON-RPC, making WSDL processing a secondary concern triggered mainly by ?wsdl metadata requests.
Key files:
modules/kernel/src/org/apache/axis2/util/SecureWSDLLocator.javamodules/kernel/src/org/apache/axis2/util/XMLUtils.javamodules/kernel/src/org/apache/axis2/util/DefaultEntityResolver.javamodules/kernel/src/org/apache/axis2/deployment/resolver/AARFileBasedURIResolver.javamodules/kernel/src/org/apache/axis2/deployment/resolver/WarFileBasedURIResolver.javamodules/kernel/src/org/apache/axis2/deployment/resolver/AARBasedWSDLLocator.javamodules/kernel/src/org/apache/axis2/deployment/resolver/WarBasedWSDLLocator.javaMigrated from commons-fileupload 1.x to commons-fileupload2 for CVE-2023-24998. Verify the migration is complete and no legacy code paths remain.
Key files:
modules/kernel/src/org/apache/axis2/builder/MultipartFormDataBuilder.javamodules/webapp/src/main/java/org/apache/axis2/webapp/AdminActions.javaThe admin console has a history of web vulnerabilities (CVE-2010-3981: CSRF/XSS). Scan for common web security issues including authentication, authorization, session management, and input validation.
Key files:
modules/webapp/src/main/java/org/apache/axis2/webapp/modules/webapp/src/main/webapp/axis2-web/modules/
json/ JSON processing: Gson, Moshi, HTTP/2 enhanced variants,
JSON-RPC receivers, field filtering, pagination, streaming
kernel/ Core engine: message pipeline, handlers, deployment,
XML parsing, dispatchers, context
transport/ Pluggable transports: HTTP, local, JMS, TCP, UDP, mail
transport-h2/ HTTP/2 transport sender (HttpClient5, ALPN, flow control, streaming)
openapi/ OpenAPI schema generation, Swagger UI, MCP catalog
mcp-bridge/ MCP stdio bridge for AI agent integration
webapp/ Admin console WAR
addressing/ WS-Addressing module
fuzz/ Jazzer fuzz targets (XML, JSON, HTTP headers, URLs)
samples/ Sample services including Spring Boot deployments
systests/ Integration tests
Fuzz targets exist in modules/fuzz/ covering XML, JSON, HTTP header, and URL parsers. See src/site/xdoc/docs/OSS-FUZZ.md for details.
Security vulnerabilities: security@apache.org