Researchers have released software that exposes private information and executes arbitrary code on sensitive websites by exploiting weaknesses in a widely used web development technology.
Short for Padding Oracle Exploitation Tool, Poet is able to decrypt secret data encrypted by the JavaServer Faces web development framework without knowing the secret key. Attackers can use the technique to access private customer data on websites operated by banks, e-commerce companies and other businesses, according to a paper (PDF) released in February by researchers Juliano Rizzo and Thai Duong. In some cases, the exploit can be used to run malicious software on the underlying server.
Released Monday, Poet exploits a well-known vulnerability in the way many websites encrypt text stored in cookies, hidden HTML fields and request parameters. The text is designed to help servers keep track of purchases, user preferences and other settings while at the same time ensuring account credentials and other sensitive data can't be intercepted. By modifying the encrypted information and sending it back to the server, the attackers can recover the plaintext for small chunks of the data, allowing them to access passwords and restricted parts of a webserver.
The fatal flaw making exploitation possible is the failure of JavaServer Faces to implement AES/DES encryption algorithms correctly. The scheme provides no way to sign the ciphertext or authenticate the block cipher mode.
“The tool exploits a very common mistake -- using encryption alone instead of encryption + authentication/integrity protection," Rizzo told The Register. "You can get information about the plaintext from the server reaction.”
The attack can be used by crawling a target website for strings of encrypted strings and then modifying the last block of the ciphertext by a random value and sending it back to the server. The resulting error messages are then used to decipher the text, allowing attackers to bypass CAPTCHAs, view customer account numbers and even create webpages that will execute malicious software on the underlying server. Attackers can also use the technique to map all ciphertexts to corresponding plaintexts, a feat that breaks a website's underlying cryptosystem.
Attackers can also use Google to find websites that are vulnerable to attack. Queries such as “Given final block not properly padded” and “javax.crypto.BadPaddingException” reveal “tons” of exposed web applications, the researchers said.
The researchers tested the attack in JavaServer Faces implemented into the Apache webserver, as well as Sun's Mojarra. They said many other implementations are also likely to be vulnerable.