The use of messaging intermediaries adds potential attack targets
SOA makes systems more dynamic by moving away from monolithic software to self-contained, reconfigurable components that can be assembled and orchestrated as needed. To manage this orchestration of components, SOA encourages the use of message routers and service registries that operate on messages as they travel across the ESB.
For message routers to be able to operate on a message, portions of the message must be unencrypted, or the message router must have access to a key to decrypt the message. This approach means you cannot use transport layer security between a service provider and a service consumer. And it means that attacker could exploit these message management and orchestration intermediaries to compromise the behavior of the end points.
At first glance, you might think that carrying routing information in the clear is not that different from the clear IP and TCP headers on packets protected using a protocol such as SSL. But they are different: SSL provides intermediaries with very little information about the contents of the messages flowing through them and does not expect intermediaries to do little more than forward messages with the guarantee that the entire message is signed and encrypted.
But SOA intermediaries are typically more invasive and often modify the message itself without invalidating signatures. This manipulation window provides a tool for attackers to use when trying to change the SOA environment.
It's true that WS-Security can provide SSL-like guarantees over message security, but the flexibility and complexity of the WS-Security standard increases the risk that sensitive information within the message will not get appropriate encryption or integrity protections.
Likewise, service registries are a risky intermediary that the SOA approach depends on to function. They are similar to a DNS for services. When a service consumer wants to find the appropriate service provider, the consumer will query the service registry to find the current address of the provider.
In many deployments, the service registry can be dynamically updated by administrators or by the providers themselves. This provides the SOA benefit of easy reconfiguration as the addresses for services change due to movement of services.
But that configuration control is what makes service registries an attractive target for attackers. For example, attackers could manipulate the registry to return addresses pointing to services hosted by the attacker.
If the attacker targets the correct service, such as the security service, the attacker may be able to craft custom responses to clients trying to use the security service. In one client's deployment, I was able to hijack the security service and issue blanket approvals for all access requests.
To deploy a secure and dynamic SOA, developers and architects must consider which portions of the system to make dynamic and which portions to keep static. The configuration elements of the SOA that enable reconfiguration must be reviewed for security issues that would let the attacker orchestrate the environment.
Communication within and among ESBs gives attackers new entry points
At the center of any significant SOA deployment is an ESB that handles message routing and provides required basic services. Often, organizations have several ESBs, connected via a bridge.
Whether you have one ESB or several, the very use of an ESB eliminates the traditional "soft" firewalls, making the ESB an attack target -- especially because it hosts critical services, such as logging and authentication. "Soft" firewalls are artificial restrictions on communication that occur when all connected parties are not speaking the same protocol.
So, even if an attacker gains access to one system, the lack of protocol compatibility limits the reach of an attack. For example, an attacker who has compromised the Web server may not be able to reach the mainframe because the mainframe uses Token Ring, but the Web server sits on a TCP/IP network with no bridge between the two.
ESBs are designed to remove communication barriers, which means an attacker can likely reach the mainframe from the Web server in a SOA deployment. The same connectivity that enables the SOA approach ends up assisting the attacker.
The high connectivity of an ESB increases the importance of having solid application security process for internal, external, and ESB services. Before connecting traditionally weakly protected systems such as mainframes to the ESB, review their security properties to make sure the systems are capable of operating in a hostile environment.
Consider the new communications environment implemented in your SOA from the perspective of an attacker and model the distance an attack could spread from a compromised server. Then design a mitigation plan to control and stop the spread.
Engineering flexible systems such as SOA is a real security challenge -- but it's not an impossible one if you take the right steps from the beginning.