Webbapplikationsbrandvägg ( engelsk Web application firewall , WAF) är en uppsättning monitorer och filter utformade för att upptäcka och blockera nätverksattacker på en webbapplikation . WAF tillhör OSI-modellens applikationslager [1] .
En webbapplikation kan skyddas av utvecklarna av själva applikationen utan användning av WAF. Detta kräver ytterligare utvecklingskostnader. Till exempel innehållet i informationssäkerhetsavdelningen . WAF har absorberat förmågan att skydda mot alla kända informationsattacker, vilket gör att du kan delegera skyddsfunktionen till den. Detta gör att utvecklare kan fokusera på att implementera applikationens affärslogik , vilket ger dem mer tid att åtgärda sårbarheter [2] .
Webbapplikationsbrandväggen används som ett överlagringsskydd. Det betyder att den sitter framför huvudwebbapplikationen och analyserar inkommande och utgående trafik. I realtid bestämmer han sig för att bevilja eller neka tillgång [1] .
Alla säkerhetsmodeller kan stödjas i en WAF: positiv, negativ eller kombinationer därav. Moderna WAF:er är föremål för kraven som beskrivs i PCI DSS . De inspekterar också HTTP/HTTPS-förfrågningar och svar från dataöverföringsprotokollet i enlighet med säkerhetspolicyn [3] . Dessutom samlar det öppna OWASP- projektet in data om kompromisser från hela världen och bildar en klassificering av attackvektorer för webbapplikationer - OWASP Top Ten [4] . WAF:er är utformade för att framgångsrikt svara på de hot som beskrivs i denna klassificering [3] .
Det bör noteras att WAF inte är ett absolut sätt att skydda information. De ingår vanligtvis i det övergripande säkerhetssystemet för webbapplikationer i kombination med andra element, till exempel med element som löser problemen med andra protokoll än HTTP/HTTPS, incidentkontrollsystem, antibedrägeritjänster [5] .
SQL-injektioner har länge varit huvudvektorn för framgångsrika attacker [6] . För att arbeta med olika data - radering, ändring, tillägg, använder applikationen en databas . När du kommer åt databasen skapar programmet en frågetext som kan förfalskas av en angripare [7] . Som ett resultat kan till exempel data läcka, raderas eller skrivas. För skydd kontrolleras data som tas emot från användaren noggrant, svarta eller vita listor med teckensekvenser används, begäranstexten escapes [8] .
För att skilja på användare, när en användare är auktoriserad på sajten, sätts en sessionscookie eller utfärdas en auktoriseringstoken, som webbläsaren sparar och skickar till servern varje gång för att bekräfta att detta är rätt användare. Denna nyckel kan erhållas av en angripare och användas för att komma åt kontot [9] . För skydd, tillsammans med nyckeln, kontrolleras relaterad information, såsom IP-adress, webbläsare. Sessionsnyckeln ges också en relativt kort livslängd [10] .
Denna typ av attack består i att angriparen skickar Java-Script eller HTML- kod till användarens webbläsare, där denna kod exekveras [7] . Således kan en angripare få cookies eller data in i form av en infekterad sida. För skydd escapes in- och utdata. Reguljära uttryck används för att validera fält [11] .
Denna typ av attack är utformad för att stjäla känslig data. Oftast sker detta vid tidpunkten för överföringen från klienten till servern via ett osäkert HTTP- eller FTP-protokoll. På väg till servern, på någon nod, efter att ha fått tillgång till den, kan en angripare läsa en öppen, oskyddad begäran med konfidentiell användarinformation [12] . För att överföra sådan information används säkra överföringsprotokoll HTTPS, TLS. Dessutom, om det finns ett behov av att lagra sådana uppgifter, lagras de i krypterad form [12] .
Sårbarheter i åtkomstkontroll är förknippade med otillräcklig noggrannhet vid kontroll av åtkomsträttigheter till viss data. Om du har vissa rättigheter kan en angripare få tillgång till data som är stängda för dessa rättigheter [13] .
Till exempel, om en angripare har ett id lika med 1 och kan se en lista över hans meddelanden med hjälp av länken
mysite.com/messages?id=1
sedan med otillräcklig kontroll av rättigheter, ersätt id-värdet med 2
mysite.com/messages?id=2
servern kommer att skicka meddelanden från användaren med id = 2. Vitlistor används som skydd för att kontrollera åtkomst. Även om vissa WAF:er tar på sig sådana valideringsfunktioner, utförs dessa åtgärder övervägande på servern [14] .
I OWASP-rapporten för 2017 var en sådan attackvektor som XML External Entities (XXE) [15] bland de största möjliga riskerna för webbapplikationer . Möjligheten för sådana attacker uppstår när en applikation tillåter användaren att använda XML-dokument för dataöverföring, vars innehåll tolkas av en dåligt konfigurerad parser. Som ett resultat kan en angripare skicka i XML en referens till en extern enhet, vilket kan leda till dataförlust eller andra oönskade effekter på servern [16] [17] . För skydd används en noggrant konfigurerad XML-serializer, eller så ersätts den med en annan, till exempel JSON. Eller så är stöd för externa XML-enheter inaktiverat [18] .
Brute-force-attacker är en typ av attack mot en webbapplikation där en angripare försöker få tillgång till en webbapplikation eller data med brute force (konton, lösenord, sessionsdata).
Till exempel, genom att sortera igenom värdet på lösenordsparametern, kan en angripare avgöra framgångsrik auktorisering genom svarskoden [19] :
GET /vulnerabilities/brute/?username=admin&password=123456&Login=Logga in
Det bör noteras att vissa standardattacker kan motverkas genom att inkludera lämpliga rubriker och flaggor inbyggda i alla moderna webbläsare. Till exempel X-XSS-Protection-huvudet eller HTTPonly-flaggan i Set-Cookie-huvudet [20] [21] .
WAF:er använder signaturanalys aktivt för att filtrera trafik. Signaturmetoden i sin implementering använder en ordbok över skadlig trafik för jämförelse [22] . Om en del av begäran (signaturen) hittades i den inkommande trafiken, vilket motsvarar skadlig trafik, blockerar WAF:er denna begäran. Ett exempel på signaturer [23] .
Metoden bygger på vita och svarta listor med IP-adresser och domäner. Med hänvisning till dessa listor utvärderar WAF:er inkommande förfrågningar [2] .
Några populära blockeringslistor:
Beteendeanalys bygger på maskininlärning. Detta gör att du kan upptäcka anomalier i beteende på djupa nivåer av förståelse. En sådan mekanism kan tränas både med en lärare och utan en lärare på åtkomstidentifierare. Inkommande parametrar kan vara åtkomstidentifierare som HTTP-parametrar, resursidentifierare (URL, URN), sessionsidentifierare [1] . Således tilldelas en matematisk referensmodell av giltiga åtkomstidentifierare. Om denna modell inte matchar kommer nästa begäran att blockeras [5] . Detta gör att du kan reflektera både kända attacker och nolldagsattacker [2] .
Förutom att skydda information kan WAF:er tillhandahålla funktioner för dess tillgänglighet och bekämpa DoS-attacker. När en attack upptäcks begränsas eller blockeras användare som deltar i trafikbelastningen. WAF:er kan också implementera captcha i serversvaret, och därigenom skära av automatiska förfrågningar och tillåta riktiga användare [5] .
Medföljande WAF kan ha sin egen sårbarhetsskanner. Skannern uppmärksammar applikationsutvecklare på brister som senare kan åtgärdas, eller så kan ansvaret för dem delegeras till WAF. Under denna analys kan skannern generera förfrågningar med specifika parametervärden som gör det möjligt att utnyttja den hittade sårbarheten. Genom att känna till de svaga punkterna i en webbapplikation genererar WAF:er virtuella patchar som stänger sådana platser [24] .
WAF tillhandahåller flera typer av förnödenheter.
I vilket som helst av dessa fall kan WAF:er distribueras i ett av alternativen: transparent brygga , transparent eller omvänd proxyserver [25] .
Med ökningen av antalet webbapplikationer på Internet växer behovet av deras kvalificerade skydd [26] . Detta är en faktor för företagens utveckling i denna riktning. Många företag är involverade i utvecklingen av branschen. Genomför öppen analys av marknaden, teknologier och hot. Eftersom säkerhetsprinciper och standarder har utvecklats under utvecklingen av webbskydd, är WAF-produkter från olika företag lika i sin funktionalitet och skiljer sig endast i det grafiska skalet [3] .
De mest populära lösningarna:
WAF öppen källkod: