|
Comments
Did you read today's front page stories & breaking news?
SYS-CON.TV
|
Security Securing Web Services
Securing Web Services
By: Mark O'Neill
Mar. 1, 2002 12:00 AM
Web Services and SOAP Tools such as SOAP:Lite (www.soaplite.com) written by Paul Kulchenko, or the IBM Web Services toolkit (http://alphaworks.ibm.com/tech/webservicestoolkit) allow for SOAP requests to be created simply and easily. SOAP listeners are offered in many products, including application servers such as IBM WebSphere (SOAPConnect) and databases such as Oracle 9i. Together, SOAP listeners and SOAP requesters provide a simple means of providing services to customers. Web services allow organizations to expose software services to customers, trading partners, and even the entire world, in a simple fashion. SOAP is the ubiquitous Web services protocol and is designed to be easy to use - which is why the S in SOAP stands for "Simple." But this simplicity comes with a downside - because if security is compromised, then the benefits of Web services are wasted. The need for security in Web services is not only related to the monetary value of goods or services that are being exchanged through the service. More abstract items such as brand value and reputation are at stake when security is compromised. In addition, a Web service may allow an attacker to reach into a company's internal systems, and this has the potential to be dangerous, whether the Web service is commercial or not. The value of the systems and/or data that are being exposed to the Internet therefore also has to be taken into account. In short, security is a requirement for practically all Web services. This article will look at how security applies to Web services - beginning with technologies that carry over from the browser-based Internet and then moving on to new initiatives specific to Web services, such as SAML and SOAP-SEC.
New Risks In practice, however, the vast majority of Web services rely on a Web server. If improperly configured, Web servers are vulnerable to such things as buffer overflow attacks or URL "button-pushing" attacks. Buffer overflow attacks consist of a stream of text sent maliciously to a Web server in order to load executable code into memory and effectively hijack the Web server. "Button-pushing" URL attacks are an effective way of probing for vulnerabilities in Web servers by mischievously sending bogus data to Web applications. Many best practice papers and security patches already exist for Web servers. For example, Microsoft produced a guide to securing IIS 5.0 (the Web server for .NET) at www.microsoft.com/serviceproviders/whitepapers/securing_iis_whpaper.doc. However, SOAP adds a new dimension to attacks on Web servers. In addition to buffer overflow attacks against the Web server itself, these attacks can now be directed through the Web server at the SOAP engine. For example, if a Web service expects an XML document to contain a 20-character text string as data in an XML element, what happens if a 30-character text string is sent? That's why it makes sense for an incoming document to be parsed against an XML Schema, run through a DOM or SAX parser, in order to check that it's valid. The old maxim of CGI script authors - never trust your input - is still valid for SOAP.
Past Security Measures After a number of early SSL vulnerabilities were addressed, SSL proved itself to be dependable and secure. However it still relies on careful implementation and as recently as September 2001 a vulnerability was found in the SSL implementation contained in RSA Security's BSAFE toolkit, that could allow an attacker to bypass SSL client authentication, the process of determining whether someone or something is, in fact, who or what it's declared to be. SSL provides this capability through the use of digital certificates stored "at the client" - i.e., with the Web browser. Following the success of SSL for business-to-consumer (B2C) transactions, the same technology was applied to business-to-business (B2B) transactions. Initially this was focused on "marketplaces" - in which a person manually keyed information into a Web site for product procurement. More recently, it was realized that the real value for B2B e-commerce was for "lights-out" data traffic not involving Web browsers at all. For over 15 years, electronic business documents have been sent over EDI networks that are "fenced off" from the Internet. However, these networks tend to be expensive, so it's tempting to use the public Internet instead. XML-based Web services encompass and surpass many of the capabilities of these private EDI networks, especially in the area of interoperable document types and service discovery. However, in order for Web services to truly recreate the value of private networks on the public Internet, communications confidentiality is required, along with authorization and access control, communications integrity, and an audit trail.
Digital Signatures SSL is found wanting in the area of audit trails. It's difficult to prove that an SSL session occurred, or even to prove that a piece of data has been received using SSL. This is where digital signatures come into play: digital signatures use the same underlying technology as encryption, but rather than hiding data from prying eyes, digital signatures prove that a signatory did indeed sign a piece of data (this is commonly called "non repudiation"). In addition, a digital signature protects a document from tampering. This is one key difference between a digital signature and a handwritten signature. To quote EU Directive 1999/93/EC, a digital signature is "linked to the data to which it relates in such a manner that any subsequent change of the data is detectable." A digital signature is an encrypted digest of a document. A digest is obtained by passing a document through a hashing algorithm, which produces a short string of bytes that's almost uniquely linked to that document. This digest is then encrypted with the signer's private key. Checking a digital signature involves recomputing the digest from the document, decrypting the digest in the digital signature using the signer's public key, and making sure that the two digests match.
xml-dsig An XML Signature may be "enveloped," in which case it's located in source XML, "enveloping," in which case it wraps around the source XML, or "external," in which case it's in a separate document from the source XML. External XML Signatures may point to any URI on the Internet. As mentioned above, xml-dsig isn't just for signing XML. Nonetheless, when XML in particular is being signed, certain considerations apply. It's important that, if the signing decision depends on what the user sees, then "sign what you see" is implemented. A user views an HTML page to fill out a Web form, resulting in a SOAP message being produced and digitally signed, and in this case it's important that the visual information presented to the user is signed. That's because the XML rendered as HTML may depend on fonts or inline images, which make it very different from the underlying XML. Digitally signing a SOAP message presents special requirements. Portions of the Header of a SOAP message may change when the message is routed between Web services. If these are signed, then the signature is guaranteed to break. An example of a volatile SOAP Header element is the actor element, whose data changes when a SOAP message is routed upstream to a further SOAP actor.
SOAP-SEC An example of a SOAP-SEC signed message is shown as Listing 1. Here we can see that the XML Signature in the SOAP message is referencing the signed data by using the "WhatWeAreSigning" ID. In addition, we can see that a Canonicalization algorithm is used. Canonicalization is needed for XML Signature because an XML document can change slightly but remain as valid XML. Examples of changes to an XML document include DOM processing, which may remove unnecessary white space between elements, or simply the differences between line endings between UNIX and Windows systems. Any of these seemingly minor changes to a document invalidates its digital signature. Prior to being signed, an XML document must therefore first be converted to a canonical form by removing spaces between elements and any platform-specific data.
WS-Security
SAML SAML breaks down a bottleneck in access management by allowing users to authenticate to one authentication service, and carry their credentials to another service. There's no need for users to reauthenticate in order to access further services. Similarly, there's no special requirement for all users of a Web service to authenticate in the same manner (e.g., by using only username/password or using only client certificate). Until now, access management and single sign-on products were limited to single organizations and/or administrative domains. SAML extends these products across the Internet by defining XML Schemas for assertions. These assertions are sent as SOAP messages over HTTP, and refer to decisions regarding authentication, attributes, and authorization. To put this into context, Listing 2 gives an example of each type of assertion. As the listing shows, assertion is used to indicate that the user has proven their identity (i.e., authenticated) to a given authentication authority, or security domain. In this case, a password was used to authenticate. The assertion is created by the authenticating security domain in order indicate to a second domain that the user was authenticated. In addition, information about the lifetime of the assertion is included in the "NotBefore" and "NotAfter" elements. SAML uses XML Digital Signature to ensure that this message is uniquely linked to the issuer, and so that any changes to the message can be detected. Listing 3 shows an example of an Attribute Assertion. This assertion asserts an attribute of the user - in this case their SubscriptionStatus. Again, XML Digital Signature can be used in order to ensure that this message is uniquely linked to the issuer, and cannot be changed without detection. Finally, Listing 4 shows an Authorization Decision Assertion. This is used to assert the result of a policy - in this case the permission to access a Web page. Here we can see the Web page referenced in the "Resource" element. SAML 1.0 was expected to be submitted as a recommendation to OASIS on March 1, 2002. Of the items deferred from SAML 1.0, the most notable is Microsoft Passport integration. Microsoft Passport will most likely be the most widely used authentication system on Earth. Integration with Passport will be crucial to SAML's success beyond being a system for linking access management products across enterprises. The OASIS Security Services Technical Committee has already committed to further development of SAML beyond version 1.0.
XACML
XML Encryption XML Encryption allows for the encryption only of what must be kept confidential, allowing a business systems to continue to use, as before, the unencrypted data. Element names can be encrypted alone, or with the data contained within them, or both. Sometimes it's preferable to encrypt just the data itself, not the XML element surrounding the data, because a schema or DTD contains information about the name of the XML element that has been encrypted. This gives an attacker a valuable clue to use in a brute-force decryption attack. XML Encryption and XML Signature are used together when a document is both signed and encrypted. For example, a SOAP message may be signed using SOAP-SEC and also carry an encrypted attachment. In order to check the signature of the data, the signed document must first be decrypted by means of a transform. This decryption transform is being proposed by the W3C at www.w3.org/TR/xmlenc-decrypt. The proposal notes that when a document is signed first and then encrypted, the XML Signature reveals the digest value of the signed resource. This is useful information for an attacker who implements a guessing attack on the plaintext data, especially since digest algorithms are suitably fast for guessing attacks. In addition, it's noted that a signature over encrypted data is not the same as a signature over the data prior to encryption - recall the discussion above on "Sign what you see."
XKMS
Combining Security Measures
Similarly, SAML and XACML allow the UDDI registry to determine if the service requester has authority to find the service registered by the service provider. Digital signatures and encryption can be used to protect the authenticity, integrity, and confidentiality of exchanged data. If the service requester is authorized to find the service, the UDDI registry signs the WSDL that's returned to the service requester. It may also encrypt the data if the service type is intended to be kept confidential. In addition, any alteration to a published WSDL interface is effectively a denial-of-service attack because the published service can no longer be discovered. Therefore, it's important that published WSDL interfaces are digitally signed. Note that the digital signature on the WSDL would often be that of the service provider, not the UDDI registry. The UDDI registry would sign the SOAP message containing the WSDL sent back to the service requester. This is an example of a signature over data which has already been signed.
Conclusion Reader Feedback: Page 1 of 1
SOA World Latest Stories
Subscribe to the World's Most Powerful Newsletters
Subscribe to Our Rss Feeds & Get Your SYS-CON News Live!
|
SYS-CON Featured Whitepapers
Most Read This Week |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||