Vad är OWASP?
Open Web Application Security Project, eller OWASP, är en internationell ideell organisation dedikerad till webbapplikationssäkerhet. En av OWASPS kärnprinciper är att allt material är fritt tillgängligt och lättillgängligt på deras hemsida, vilket gör det möjligt för alla att förbättra sin egen webbapplikationssäkerhet. De material som de erbjuder inkluderar dokumentation, verktyg, videor och forum. Kanske är deras mest kända projekt OWASP Top 10.
Vad är OWASP Top 10?,
OWASP Top 10 är en regelbundet uppdaterad rapport som beskriver säkerhetsproblem för webbapplikationssäkerhet, med fokus på de 10 mest kritiska riskerna. Rapporten sammanställs av ett team av säkerhetsexperter från hela världen. OWASP hänvisar till topp 10 som ett ”medvetenhetsdokument” och de rekommenderar att alla företag införlivar rapporten i sina processer för att minimera och/eller mildra säkerhetsrisker.
nedan är de säkerhetsrisker som rapporteras i OWASP Top 10 2017-rapporten:
1., Injektion
Injiceringsattacker inträffar när opålitliga data skickas till en kod tolk genom en formulärinmatning eller någon annan datainmatning till en webbapplikation. Till exempel kan en angripare ange SQL-databaskod i ett formulär som förväntar sig ett vanligt användarnamn. Om formulärinmatningen inte är ordentligt säkrad skulle detta leda till att SQL-koden körs. Detta är känt som en SQL injection attack.
Injiceringsattacker kan förhindras genom validering och / eller sanering av användarinskickade data., (Validering innebär att man avvisar misstänkta uppgifter, medan sanering avser att städa upp de misstänkta delarna av data.) Dessutom kan en Databasadministratör ställa in kontroller för att minimera mängden information som en injektionsattack kan exponera.
2. Bruten autentisering
sårbarheter i autentiseringssystem (inloggning) kan ge angripare tillgång till användarkonton och till och med möjligheten att äventyra ett helt system med ett administratörskonto., Till exempel kan en angripare ta en lista som innehåller tusentals kända användarnamn/lösenord kombinationer som erhållits under ett databrott och använda ett skript för att prova alla dessa kombinationer på ett inloggningssystem för att se om det finns något som fungerar.
vissa strategier för att mildra autentiseringssårbarheter kräver tvåfaktorsautentisering (2FA) samt att begränsa eller fördröja upprepade inloggningsförsök med hjälp av hastighetsbegränsning.
3., Känslig Dataexponering
om webbapplikationer inte skyddar känsliga data som finansiell information och lösenord, kan angripare få tillgång till dessa data och sellor använda den för skändliga ändamål. En populär metod för att stjäla känslig information är att använda en väg attack.
risken för dataexponering kan minimeras genom att kryptera alla känsliga data samt inaktivera cachning* av känslig information. Dessutom bör webbapplikationsutvecklare se till att de inte i onödan lagrar känsliga data.,
*Caching är praxis att tillfälligt lagra data för återanvändning. Till exempel, webbläsare kommer ofta cache webbsidor så att om en användare återbesök demsidor inom en fast tidsperiod, webbläsaren behöver inte hämta sidorna från webben.
4. XML External Entities (XEE)
detta är en attack mot ett webbprogram som tolkar XML * – inmatning. Denna inmatning kan referera till en extern enhet som försöker utnyttja en sårbarhet i tolken. En ”extern enhet” i detta sammanhang avser en lagringsenhet, till exempel en hårddisk., En XML-tolk kan luras att skicka data till en obehörig extern enhet, som kan skicka känsliga data direkt till en angripare.
de bästa sätten att förhindra Xee-attacker är att få webbapplikationer att acceptera en mindre komplex typ av data, såsom JSON**, eller åtminstone att lappa XML-parsers och inaktivera användningen av externa enheter i en XML-applikation.
*XML eller Extensible Markup Language är ett markeringsspråk som är avsett att vara både läsbart och maskinläsbart. På grund av dess komplexitet och säkerhetsproblem, är det nu fasas ur bruk i många webbapplikationer.,
**JavaScript Object Notation (JSON) är en typ av enkel, läsbar notation som ofta används för att överföra data via internet. Även om det ursprungligen skapades för JavaScript, JSON är språk-agnostiska och kan tolkas av många olika programmeringsspråk.
5. Trasig åtkomstkontroll
åtkomstkontroll avser ett system som kontrollerar åtkomst till information eller funktionalitet. Brutna åtkomstkontroller tillåter angripare att kringgå auktorisering och utföra uppgifter som om de var privilegierade användare som administratörer., Till exempel en webbapplikation kan tillåta en användare att ändra vilket konto de är inloggade som helt enkelt genom att ändra en del av en url, utan någon annan verifiering.
åtkomstkontroller kan säkras genom att säkerställa att en webbapplikation använder auktoriseringstoken* och ställer snäva kontroller på dem.
*många tjänster utfärdar auktoriseringstoken när användare loggar in. Varje privilegierad begäran som en användare gör kommer att kräva att auktoriseringstoken är närvarande. Detta är ett säkert sätt att se till att användaren är den de säger att de är, utan att ständigt behöva ange sina inloggningsuppgifter.
6., Säkerhetsfelkonfiguration
säkerhetsfelkonfiguration är den vanligaste sårbarheten i listan, och är ofta resultatet av att använda standardkonfigurationer eller visa alltför utförliga fel. Till exempel kan ett program visa en användare alltför beskrivande fel som kan avslöja sårbarheter i programmet. Detta kan mildras genom att ta bort oanvända funktioner i koden och se till att felmeddelanden är mer allmänna.
7., Serveröverskridande skript
serveröverskridande skriptsårbarheter uppstår när webbapplikationer tillåter användare att lägga till anpassad kod i en url-sökväg eller på en webbplats som kommer att ses av andra användare. Denna sårbarhet kan utnyttjas för att köra skadlig JavaScript-kod på ett offrets webbläsare. Till exempel kan en angripare skicka ett e-postmeddelande till ett offer som verkar vara från en betrodd bank, med en länk till bankens webbplats. Den här länken kan ha någon skadlig JavaScript-kod taggad till slutet av webbadressen., Om bankens webbplats inte är ordentligt skyddad mot webbplatsskript, kommer den skadliga koden att köras i offrets webbläsare när de klickar på länken.
begränsningsstrategier för cross-site scripting inkluderar flyr opålitliga HTTP-förfrågningar samt validera och / eller sanera användargenererat innehåll. Med hjälp av moderna webbutveckling ramar som ReactJS och Ruby on Rails ger också några inbyggda cross-site skriptskydd.
8. Osäker deserialisering
detta hot riktar sig till de många webbapplikationer som ofta serialiserar och deserialiserar data., Serialisering innebär att ta objekt från applikationskoden och konvertera dem till ett format som kan användas för ett annat ändamål, till exempel att lagra data till disk eller Strömma den. Deserialisering är precis tvärtom: konvertera serialiserade data tillbaka till objekt som programmet kan använda. Serialisering är ungefär som att packa möbler bort i lådor innan ett drag, och deserialisering är som att packa upp lådorna och montera möblerna efter flytten. En osäker deserialisering attack är som att ha movers manipulera innehållet i rutorna innan de packas upp.,
ett osäkert deserialiseringsutnyttjande är resultatet av deserialisering av data från otillförlitliga källor och kan leda till allvarliga konsekvenser som DDoS-attacker och fjärrkodattacker. Medan åtgärder kan vidtas för att försöka fånga angripare, till exempel övervakning deserialisering och genomförande av typkontroller, är det enda säkra sättet att skydda mot osäkra deserialiseringsattacker att förbjuda deserialisering av data från opålitliga källor.
9., Använda komponenter med kända sårbarheter
många moderna webbutvecklare använder komponenter som bibliotek och ramar i sina webbapplikationer. Dessa komponenter är bitar av programvara som hjälper utvecklare att undvika redundant arbete och ge behövs funktionalitet; vanligt exempel inkluderar front-end ramar som React och mindre bibliotek som används för att lägga till share ikoner eller A/B testning. Vissa angripare letar efter sårbarheter i dessa komponenter som de sedan kan använda för att orkestrera attacker., Några av de mer populära komponenterna används på hundratusentals webbplatser; en angripare som hittar ett säkerhetshål i en av dessa komponenter kan lämna hundratusentals webbplatser sårbara för att utnyttja.
Komponentutvecklare erbjuder ofta säkerhetsuppdateringar och uppdateringar för att ansluta kända sårbarheter, men webbapplikationsutvecklare har inte alltid de patchade eller senaste versionerna av komponenter som körs på sina applikationer., För att minimera risken att köra komponenter med kända sårbarheter bör utvecklare ta bort oanvända komponenter från sina projekt, samt se till att de tar emot komponenter från en betrodd källa och ser till att de är uppdaterade.
10. Otillräcklig loggning och övervakning
många webbapplikationer tar inte tillräckligt många steg för att upptäcka dataöverträdelser. Den genomsnittliga upptäckten tid för ett brott är runt 200 dagar efter det har hänt. Detta ger angripare mycket tid att orsaka skada innan det finns något svar., OWASP rekommenderar att webbutvecklare ska genomföra loggning och övervakning samt incidentsvarsplaner för att säkerställa att de görs medvetna om attacker på sina applikationer.
för en mer teknisk och djupgående titt på OWASP Top 10, se den officiella rapporten .