Many organizations are embracing SOA as a way to increase application flexibility, make integration more manageable, lower development costs, and better align technology systems to business processes. The appeal of SOA is that it divides an organization's IT infrastructure into services, each of which implements a business process consumable by users and services.
For example, a service may expose the functionality to add a new employee to the employer's payroll and benefits system.
To make services usable in multiple contexts, for both lowered cost and increased process consistency, each service provides a contract describing how it may be used and what functionality it contains.
But the SOA approach turns on its head the traditional security approach used by enterprises today. The mix-and-match nature of SOA services, and the use of messaging as the orchestration mechanism for SOA's composite applications, eliminates the ability to build clear boundaries around -- and security barriers for -- enterprise apps.
The very thing that gives SOA its flexibility also increases its security risk.
Service contracts expose your treasures
Consider how a typical service executes on a typical SOA infrastructure: Users and services communicate by passing messages between each other across the ESB (enterprise service bus). The ESB acts as a message conduit for the organization and understands the available services, their semantics, and how to get an application message from one point to another. Each service on the ESB must be addressable using the ESB's standard message-passing protocol (usually SOAP).
To make services easier to consume, each service must also have a way of describing itself and how the service is to be used. This description is called a service contract and is most commonly described via WSDL (Web Service Description Language).
Few development methodologies have embraced the principle of interoperable contracts as tightly as SOA. To ease collection and discovery of new contracts, in many SOA architectures each service possesses a method for clients to query and retrieve the contract. This method for retrieving contracts is often standardized, if not by the application framework vendor, then by SOA practitioners themselves.
Standardized contracts and contract retrieval methods make SOA systems more discoverable. And therein lies one of the new security risks of SOA.
Such freely available contracts are very helpful for developers as they build new services and reuse existing services across the enterprise. Unfortunately, what works for the developer is equally helpful for attackers looking to understand the enterprise and its services.
Attackers can collect these contracts and use them to easily create an internal treasure map of an organization. To identify high-value targets, the attacker uses the map and reviews the contracts for services that have weak authentication or are responsible for high-value services such as security management.
SOA practitioners might try to make it harder for attackers to build such a map by disabling anonymous exposure of service contracts in favor of authenticated or offline distribution. Although this is a solid security decision, it does not work for all services and all organizations.
That's because, by restricting the distribution of contracts, it becomes more difficult for legitimate users to discover services and becomes less likely that development tools can seamlessly import contracts.
Message layer security helps attackers find a route in
Ironically, the use of message layer security is another related SOA vulnerability. Message layer security enables developers to pick and choose the portions of the message to be signed and/or encrypted. To support addressing and routing on the ESB, the destination information of a message is often excluded from the encrypted portion of the message.
The selective encryption/signing approach differs from other point-to-point or transport layer security protocols, such as SSL, that protect the entire connection.
With message layer security, an attacker passively monitoring the network can gain deep information about the application layer messages being sent between senders and receivers. Selectively applied security increases complexity and the probability of developers or administrators failing to apply critical security protections to portions of a given message.
Service information disclosure may not be a high risk in some environments, but it is not to be taken lightly. The more informed the attacker, the more targeted the attack will be. Before SOA, there was a certain amount of obscurity gained by having disparate systems using a wide range of protocols.
Attackers had difficulty finding and understanding all the systems in an environment. SOA has removed this barrier and greatly improved the attacker's ability to perform thorough reconnaissance.