AJAX is an increasingly popular programming technique that allows Web designers to make their Web sites more responsive to user input compared to traditional pages. Google, Yahoo and many other sites have embraced AJAX, which enables new content to be added to a Web page in response to user input without needing the entire page to be reloaded.
Among the biggest of these threats, says Hoffman, is the opening that poorly coded AJAX sites can provide for malicious attackers to change the order in which a program executes functions. Poorly designed AJAX implementations often push program code that used to be stored and executed only on the server out to client browsers. This allows attackers to access the code and to manipulate the order in which a program’s functions are executed, Hoffman said in an interview with Computerworld.
The availability of too much program code on the client side also allows attackers to perform actions such as changing the value of certain parameters, or deleting certain program calls entirely. AJAX environments can also present more opportunities for hackers to inject malformed SQL queries and compromise applications if proper validation measures are not taken.
To illustrate the threat, Hoffman and Sullivan demonstrated a series of attacks against a fictitious AJAX-enabled travel reservation site at a Black Hat presentation. The AJAX functionality in the site was completely built using tools and information sources that are commonly used by most AJAX developers today.
Hoffman and Sullivan showed how it was possible via the client browser to change the flow of the reservation program so that it would be possible for an attacker to book a ticket and not pay for it, or pay less than the quoted price for it.
The fundamental mistake that many AJAX developers make is to assume that code available on the client side will be treated in the same manner as server-side code, Sullivan said, speaking with Computerworld after the presentation. He says that such developers fail to realize is that when code that was originally intended to run on a server behind the firewall is presented on a client browser, it becomes possible to manipulate and change that code.
“When you publicly expose server methods for your Ajax applications, you are essentially creating an API for anyone to call,” the two researchers wrote in their white paper. As a result care should be taken to expose only the required server-side methods, they said, adding that tt also becomes vital to validate all user input for correct format and length to mitigate threats.