Researchers today revealed two new security vulnerabilities in the Spring Framework -- a commonly used, open-source environment for developing Java applications.
The vulnerabilities could affect "countless" enterprises and applications that use Spring, according to researchers at Ounce Labs , which makes source-code-analysis tools. The design flaws may eventually be found in other Java development environments as well, the Ounce researchers say.
"If you are using Spring and you haven't done anything to address these issues, then you are vulnerable," says Ryan Berg, co-founder and chief scientist at Ounce Labs.
"[Spring] is a fairly commonly used framework, and I would suspect that Websites will be vulnerable to one or both of these vulnerabilities until they patch up," says Robert Hansen (aka RSnake), CEO of SecTheory, a consultancy that specializes in Web application security.
The first vulnerability allows an attacker to append queries or other data to user input in a database field, which could make it possible to take action on behalf of the user or break into and modify the application itself, Berg says. "For example, you could go in and modify the state and transaction history of a stock trade," he says.
"It allows the attacker to bypass client-side security and potentially overwrite database fields using an HTTP proxy," Hansen observes. "Its not SQL injection, since you cant read the fields, but it would allow you to potentially jump into other peoples accounts, raise privileges, change data that you had already previously written and [previously] validated, and so on."
The flaw, dubbed "ModelView Injection" takes advantage of a design flaw in Spring, which doesn't provide sufficient default safeguards in the link between the application "model" -- the actual data that the user is trying to reach -- and the "view," which is the graphical presentation that the Web application uses."Most Spring applications automatically bind the model and the view in a one-to-one match, so that you can send more data in the request, and Spring will automatically append that data," Berg explains. A savvy attacker could use this flaw to query the application for more information or actually make changes in data fields, he says.
The second vulnerability would require more knowledge and effort on the attacker's part, but is potentially more dangerous, Ounce Labs says. Called "Data Submission to Non-Editable Fields," the flaw allows attackers to query the application for information.
"It would allow an attacker to read any of the Java source code of a vulnerable Website, which could reveal all sorts of sensitive information that wouldnt normally be visible to an attacker," Hansen says.
Ounce emphasizes that the new class of vulnerabilities are not comprised of security flaws within the framework, but are actually design issues which, if not implemented properly, could expose business-critical applications to attacks. Since the flaws are a part of the development process, rather than specific Spring code, it's likely that other Java environments that use this process -- including the open-source STRUTS, Ruby on Rails, or even Microsoft's .Net -- might also be vulnerable.
Ounce recommends making changes in applications that use the "Model View" approach, essentially eliminating the automatic bind when sensitive data is involved. But making this fix won't be easy, because it requires fixing the way the application was designed, rather than just replacing vulnerable code.
"In some cases, you may be better off replacing the controller [which acts as a traffic cop between the model and the view], rather than trying to retrofit it," Berg says.
In addition to the vulnerability report, Ounce has published a white paper that offers recommendations on how to fix vulnerable applications and improve development processes in the future. To get the white paper, users have to register on the Ounce Labs site.
Have a comment on this story? Please click "Discuss" below. If you'd like to contact Dark Reading's editors directly, send us a message.