Skip to main content
idego
Cybersäkerhet

Säkerhetssårbarheter vid filuppladdning

Av Idego Group

Säkerhetssårbarheter vid filuppladdning

Att ladda upp filer är en vanlig funktion i webbapplikationer. Många utvecklare tror dock felaktigt att uppgiften är avslutad när en fil väl nått servern. Denna försummelse skapar säkerhetsluckor som hotaktörer utnyttjar. Verklig slutförande kräver två villkor: uppladdningen lyckas OCH sker säkert.

Kringgående baserat på filändelse

Utvecklare validerar vanligtvis filtyper genom ändelsekontroll med hjälp av vitlistor eller svartlistor. Dessa tillvägagångssätt har dock svagheter. Skiftlägeskänsliga regex-mönster tillåter uppladdningar som shell.pHp att kringgå begränsningar. Felaktigt förankrade mönster tillåter filer som shell.php.jpg att accepteras. Filnamnsförkortning kan resultera i en fil som slutar på .php istället för .jpg.

Null-byteinjektion

Att byta namn på filer till shell.php%00.jpg utnyttjar hur vissa språk behandlar null-bytes som terminatorer, vilket möjliggör PHP-körning trots att det verkar sluta på .jpg.

SVG- och XML-hot

SVG-filer är XML-data som är sårbara för lagrade cross-site scripting-attacker. Skadligt JavaScript inbäddat i SVG-filer körs när användare laddar ner dem.

Katalogtraversering

Filnamn som ../../../etc/passwd kan skriva över kritiska serverfiler. Åtgärden kräver användning av slumpmässigt genererade filnamn med originalnamnen lagrade separat som metadata.

Denial of Service

Samtidiga uppladdningar av stora filer tömmer serverresurser eller diskutrymme. Validering av filstorlek ger väsentligt skydd.

Content-Type-förfalskning

Content-Type-headern manipuleras enkelt via interceptionsverktyg. Servertolkning förlitar sig på faktiskt filinnehåll, inte headers.

Kringgående av magiska nummer

Angripare lägger till giltiga filsignaturer som GIF89a till skadliga filer för att lura magiska nummer-valideringssystem.

Kommandoinjektion

När filnamn skickas till systembinärer möjliggör namn som file;whoami;pwd.jpg kommandokörning. Slumpmässiga filnamn eliminerar denna risk.

Säkerhetsrekommendationer

Utvecklare bör undvika att lita helt på användarindata. Implementering av specialiserad valideringsprogramvara, underhåll av uppdaterade beroenden och utvärdering av flera valideringsfaktorer stärker försvarsmekanismerna.

Relaterade artiklar