
Företaget Variti utvecklar skydd mot botar och DDoS-attacker samt genomför stresstest och belastningstestning. PĂ„ konferensen HighLoad++ 2018 berĂ€ttade vi om hur man skyddar resurser mot olika typer av attacker. Kort sagt: isolera delar av systemet, anvĂ€nd molntjĂ€nster och CDN och hĂ„ll er regelbundet uppdaterade. Men utan specialiserade företag för skydd klarar ni er inte sjĂ€lva đ
Innan ni lÀser texten kan ni ta del av korta punkter .
Och om ni inte gillar att lÀsa eller bara vill titta pÄ videon, finns inspelningen av vÄrt föredrag nedan under spoiler.
Videoinspelning av föredraget

MÄnga företag kan redan genomföra belastningstest, men inte alla gör stresstest. NÄgra av vÄra kunder tror att deras webbplats Àr oförsvarande eftersom de har ett highload-system, och det skyddar dem vÀl mot attacker. Vi visar dock att detta inte riktigt stÀmmer.
SjÀlvklart fÄr vi tillstÄnd frÄn kunden innan tester genomförs, med signatur och stÀmpel, och med vÄr hjÀlp kan man inte utföra DDoS-attacker mot nÄgon. Testning sker vid en tidpunkt som kunden vÀljer, nÀr besöksnivÄn för deras resurs Àr minimal, sÄ att problem med Ätkomst inte pÄverkar kunderna. Dessutom, eftersom det alltid kan gÄ fel under testprocessen, har vi stÀndig kontakt med kunden. Detta möjliggör inte bara att rapportera uppnÄdda resultat utan ocksÄ att göra Àndringar under testningen. Vid avslutningen av testningen upprÀttar vi alltid en rapport dÀr vi pÄpekar upptÀckta brister och ger rekommendationer för att ÄtgÀrda svaga punkter pÄ webbplatsen.
SÄ hÀr arbetar vi
Vid genomförande av testningen emulerar vi ett botnÀt. Eftersom vi arbetar med kunder som inte Àr lokaliserade i vÄra nÀtverk, för att testet inte ska avslutas pÄ första minuten pÄ grund av begrÀnsningar eller skydd, ger vi belastningen inte frÄn en IP, utan frÄn vÄrt eget subnet. Dessutom, för att skapa en betydande belastning har vi en kraftfull testserver.
Postulat
Mycket betyder inte bra
Ju lÀgre belastning vi kan fÄ resursen att gÄ ner pÄ, desto bÀttre. Om vi kan fÄ sidan att sluta fungera vid en begÀran per sekund, eller till och med en begÀran per minut, Àr det fantastiskt. För enligt Murphy's lag kommer anvÀndare eller angripare av en slump att utnyttja just denna sÄrbarhet.
Delvis fel Àr bÀttre Àn totalt fel
Vi rekommenderar alltid att göra systemen heterogena. Det Àr viktigt att separera dem pÄ fysisk nivÄ, inte bara genom containerisering. Vid fysisk separation, Àven om nÄgot gÄr fel pÄ sidan, Àr det troligt att det inte helt slutar fungera, och anvÀndare fortfarande har tillgÄng till Ätminstone en del av funktionaliteten.
RÀtt arkitektur Àr grundlÀggande för motstÄndskraft
Resursens redundans och dess förmÄga att hantera attacker och belastningar bör beaktas redan under designsteget, praktiskt taget i skedet av att rita de första blockdiagrammen i anteckningsboken. För om fatala fel slinker in kan de vara svÄra att rÀtta till senare.
Inte bara koden, utan Àven konfigurationen bör vara bra
MÄnga tror att ett bra utvecklingsteam garanterar tjÀnstens redundans. Ett bra utvecklingsteam Àr verkligen nödvÀndigt, men det mÄste ocksÄ finnas god drift, bra DevOps. Det innebÀr att det behövs specialister som korrekt konfigurerar Linux och nÀtverket, korrekt skriver konfigurationer i nginx, stÀller in grÀnser och sÄ vidare. Annars kommer resursen att fungera bra under tester, men i produktion kommer det att gÄ fel vid nÄgot tillfÀlle.
Skillnader mellan belastningstest och stresstest
Belastningstestning lÄter oss identifiera systemets funktionsgrÀnser. Stresstestning syftar till att hitta svaga punkter i systemet och anvÀnds för att bryta ner systemet och se hur det beter sig nÀr vissa delar misslyckas. Den typ av belastning Àr vanligtvis okÀnd för kunden fram till början av stresstestningen.
UtmÀrkande drag för L7-attacker
Vi delar vanligtvis in belastningarna i belastningar pÄ nivÄ L7 och L3&4. L7 Àr belastning pÄ applikationsnivÄ, oftast tolkas den endast som HTTP, men vi menar all belastning pÄ protokollnivÄ TCP.
L7-attacker har vissa utmÀrkande drag. För det första riktar de sig direkt mot applikationen, vilket gör att det Àr svÄrt att avvÀrja dem med nÀtverksmetoder. Dessa attacker utnyttjar logik och, tack vare detta, förbrukar de CPU, minne, disk, databas och andra resurser mycket effektivt Àven vid liten trafik.
HTTP Flood
Vid varje attack Àr det lÀttare att skapa belastning Àn att hantera den, och det gÀller ocksÄ för L7. Attacktrafik Àr inte alltid lÀtt att sÀrskilja frÄn legitim trafik, och oftast kan detta göras utifrÄn frekvens, men om allt Àr vÀlplanerat Àr det omöjligt att förstÄ genom loggarna var attacken Àr och var de legitima förfrÄgningarna Àr.
Som ett första exempel kan vi titta pÄ HTTP Flood-attacken. Diagrammet visar att sÄdana attacker vanligtvis Àr vÀldigt kraftfulla, i exemplet nedan översteg det toppantalet förfrÄgningar 600 000 per minut.

HTTP Flood Àr det enklaste sÀttet att skapa belastning. Vanligtvis anvÀnds nÄgot verktyg för belastningstestning, till exempel ApacheBench, och en förfrÄgan och ett mÄl stÀlls in. Med denna enkla metod Àr det stor risk att stöta pÄ servernas caching, men detta kan enkelt kringgÄs. Till exempel, genom att lÀgga till slumpmÀssiga strÀngar i förfrÄgan, vilket tvingar servern att stÀndigt leverera en fÀrsk sida.
Kom ihÄg anvÀndaragenten under belastningen. MÄnga anvÀndaragent för populÀra testverktyg filtreras av systemadministratörer, och i sÄdana fall kan belastningen helt enkelt missa att nÄ backend. Resultatet kan avsevÀrt förbÀttras genom att infoga en mer eller mindre giltig rubrik frÄn en webblÀsare i förfrÄgan.
Trots enkelheten har HTTP Flood-attacker sina nackdelar. För det första krÀver belastningen stora resurser. För det andra Àr sÄdana attacker vÀldigt lÀtta att upptÀcka, sÀrskilt om de kommer frÄn en enda adress. Resultatet blir att förfrÄgningarna omedelbart börjar filtreras av antingen systemadministratörerna eller till och med pÄ leverantörsnivÄ.
Vad man ska leta efter
För att minska antalet förfrÄgningar per sekund utan att förlora i effektivitet, behöver man anvÀnda lite fantasi och undersöka webbplatsen. Man kan belasta inte bara kanalen eller servern, utan Àven specifika delar av applikationen, som till exempel databaser eller filsystem. Dessutom kan man leta efter stÀllen pÄ webbplatsen som gör stora berÀkningar: kalkylatorer, sidor med produktval och liknande. Slutligen hÀnder det ofta att webbplatsen har ett php-skript som genererar sidor frÄn flera hundratusen rader. Ett sÄdant skript belastar ocksÄ servern avsevÀrt och kan bli ett mÄl för attacker.
Var man ska söka
NĂ€r vi skannar resursen innan testning, tittar vi naturligtvis först och frĂ€mst pĂ„ sjĂ€lva webbplatsen. Vi letar efter alla möjliga inmatningsfĂ€lt, tunga filer â helt enkelt allt som kan skapa problem för resursen och sakta ner dess arbete. HĂ€r hjĂ€lper de banala utvecklingsverktygen i Google Chrome och Firefox som visar sidans responstider.
Vi skannar ocksÄ underdomÀner. Till exempel, det finns en viss onlinebutik, abc.com, och den har en underdomÀn admin.abc.com. Det Àr troligen en administrationssida med autentisering, men om vi belastar den, kan den skapa problem för huvudresursen.
Webbplatsen kan ha en underdomÀn api.abc.com. Det Àr troligen en resurs för mobilapplikationer. Applikationen kan hittas i App Store eller Google Play, sÀtta upp en speciell Ätkomstpunkt, analysera API:et och registrera testkonton. Problemet Àr att mÀnniskor ofta tror att allt som skyddas av autentisering Àr oförlÄtligt för attacker av tjÀnsteavbrott. Man anser att autentisering Àr den bÀsta CAPTCHA:n, men sÄ Àr det inte. Att skapa 10-20 testkonton Àr enkelt, och nÀr vi gjort det fÄr vi tillgÄng till komplex och exponerad funktionalitet.
SjÀlvklart ser vi pÄ historiken, pÄ robots.txt och WebArchive, ViewDNS, söker efter gamla versioner av resursen. Ibland hÀnder det att utvecklarna har lanserat, sÀg, mail2.yandex.net, medan den gamla versionen, mail.yandex.net, fortfarande finns kvar. Den hÀr mail.yandex.net slutar att stödjas, avsÀtts inte resurser till utvecklingen av den, men den fortsÀtter att konsumera databasen. DÀrför kan man effektivt anvÀnda resurserna i backend och allt som stÄr bakom markup med hjÀlp av den gamla versionen. SjÀlvklart hÀnder det inte alltid, men vi stöter ÀndÄ pÄ liknande situationer ganska ofta.
SjÀlvklart analyserar vi alla förfrÄgningsparametrar och cookie-strukturen. Man kan till exempel skicka ett vÀrde i en JSON-array inuti en cookie, skapa stor inbÀddning och fÄ resursen att fungera onödigt lÀnge.
Belastning i sökningen
Det första som kommer att tĂ€nka pĂ„ vid en webbplatsundersökning Ă€r att belasta databasen, eftersom nĂ€stan alla har sökfunktioner, och tyvĂ€rr Ă€r de flesta av dessa dĂ„ligt skyddade. Av nĂ„gon anledning Ă€gnar utvecklarna inte tillrĂ€cklig uppmĂ€rksamhet Ă„t sökningen. Men hĂ€r finns ett tips â undvik att göra likartade frĂ„gor, eftersom du kan stöta pĂ„ caching, precis som vid HTTP-flod.
Att göra slumpmĂ€ssiga förfrĂ„gningar till databasen Ă€r inte alltid effektivt. Det Ă€r mycket bĂ€ttre att skapa en lista över nyckelord som relaterar till sökningen. Ă
terigen, om vi tar exemplet med en webbshop: anta att webbplatsen sÀljer dÀck och gör det möjligt att ange dÀcks radie, typ av bil och andra parametrar. Kombinationerna av relevanta ord fÄr databasen att arbeta under betydligt mer komplexa förhÄllanden.
Dessutom bör man anvÀnda pagination: det Àr mycket svÄrare för sökningen att ge den nÀst sista sidan av resultatet Àn den första. Det innebÀr att man kan diversifiera belastningen nÄgot med hjÀlp av pagination.
Exemplet nedan visar belastningen vid sökningen. Det syns att frÄn första sekunden av testet pÄ hastighet med tio förfrÄgningar per sekund lÄg sajten ner och svarade inte.

Finns det ingen sökning?
Om det inte finns nÄgon sökning, betyder det inte att webbplatsen inte innehÄller andra sÄrbara inmatningsfÀlt. Ett sÄdant fÀlt kan vara autentisering. Utvecklarna Àlskar nu att göra komplexa hashar för att skydda databasen med anvÀndarnamn frÄn attacker med regnbÄgsdiagram. Det Àr bra, men sÄdana hashar krÀver stora CPU-resurser. En stor ström av falska autentiseringar orsakar processoravbrott, vilket gör att webbplatsen slutar fungera.
NÀrvaron av olika formulÀr för kommentarer och feedback pÄ webbplatsen ger anledning att skicka mycket stora texter dÀr, eller helt enkelt skapa massivt spam. Ibland accepterar webbplatser inbÀddade filer, inklusive i gzip-format. I sÄ fall tar vi en fil som Àr 1TB stor, komprimerar den med gzip till nÄgra byte eller kilobyte och skickar till webbplatsen. DÀrefter avzippar den sig och fÄr en mycket intressant effekt.
Rest API
Det Àr viktigt att uppmÀrksamma de populÀra tjÀnsterna som Rest API. Att skydda ett Rest API Àr mycket svÄrare Àn att skydda en vanlig webbplats. Vanliga metoder för att skydda mot lösenordsÄterstÀllningar och annan olaglig aktivitet fungerar inte ens för Rest API.
Rest API Àr mycket lÀtt att bryta sig in i eftersom det kommunicerar direkt med databasen. Att sabotera en sÄdan tjÀnst fÄr allvarliga konsekvenser för företaget. Problemet Àr att Rest API ofta Àr kopplat till inte bara huvudwebbplatsen utan Àven mobilapplikationen och interna affÀrsresurser. Om allt detta gÄr ner blir effekten mycket starkare Àn vid en enkel webbplats krascher.
Belastning pÄ tungt innehÄll
Om vi ombeds att testa en vanlig landningssida eller en webbplats utan komplex funktionalitet letar vi efter tungt innehĂ„ll. Till exempel stora bilder som servern levererar, binĂ€ra filer, pdf-dokumentation â vi försöker ladda ner allt detta. SĂ„dana tester belastar filsystemet bra och blockerar kanalerna, vilket gör dem effektiva. Det vill sĂ€ga, Ă€ven om du inte lyckas krascha servern genom att ladda ner en stor fil i lĂ„g hastighet, kommer du helt enkelt att blockera kanalen till den avsedda servern, vilket leder till driftstopp.
Exemplet visar att vid en hastighet av 30 RPS slutade webbplatsen att svara eller gav 500-fel.

Glöm inte att konfigurera servrarna. Man stöter ofta pÄ att nÄgon köpt en virtuell server, installerat Apache, stÀllt in allt som standard, placerat php-applikationen, och nedan kan man se resultatet.

HÀr var belastningen riktad mot roten och var endast 10 RPS. Vi vÀntade 5 minuter, och servern kraschade. Det Àr dock oklart varför den kraschade, men man tror att den helt enkelt blev överbelastad av minne, vilket fick den att sluta svara.
Wave based
Under de senaste Äret eller tvÄ har vÄgattacker blivit ganska populÀra. Detta beror pÄ att mÄnga organisationer köper olika produkter för att skydda sig mot DDoS-attacker, vilka krÀver viss tid för att samla statistik innan de kan börja filtrera attacken. Det vill sÀga, de filtrerar inte attacken under de första 30-40 sekunderna, eftersom de samlar in data och lÀr sig. DÀrför kan man under dessa 30-40 sekunder skicka sÄ mycket trafik till sajten att resurserna blir överbelastade under en lÄng tid innan alla förfrÄgningar har hanterats.
I fallet med attacken nedan fanns det en period pÄ 10 minuter, varefter en ny, modifierad attack kom.

Det vill sÀga, skyddet lÀrde sig, underkastade filtrering, men en ny, helt annan attack kom, och skyddet började lÀra sig igen. Faktiskt slutar filtreringen att fungera, skyddet blir ineffektivt och sajten blir otillgÀnglig.
För vÄgattacker kÀnnetecknas av mycket höga vÀrden pÄ toppen, den kan nÄ upp till hundratusen eller en miljon förfrÄgningar per sekund, i fallet med L7. Om vi pratar om L3 & 4, kan det vara hundratals gigabit trafik, eller flera hundra mpps om vi rÀknar i paket.
Problemet med sÄdana attacker ligger i synkroniseringen. Attacken kommer frÄn ett botnÀt, och för att skapa en vÀldigt stor engÄngstopp krÀvs en hög grad av synkronisering. Och denna koordination uppnÄs inte alltid: ibland resulterar det i en parabolisk topp som ser ganska bedrövlig ut.
Inte bara HTTP
Förutom HTTP pÄ L7, Àlskar vi att utnyttja andra protokoll. Normalt har vanliga webbplatser, sÀrskilt pÄ vanlig hosting, öppna e-postprotokoll och MySQL. E-postprotokoll Àr mindre utsatta för belastning Àn databaser, men de kan ocksÄ belastas ganska effektivt och fÄ en överbelastad CPU pÄ servern.
Vi har faktiskt lyckats utnyttja en SSH-sÄrbarhet frÄn 2016. Denna sÄrbarhet har nu nÀstan ÄtgÀrdats av alla, men det betyder inte att man inte kan belasta SSH. Det gÄr. Man skickar helt enkelt en enorm belastning av autentiseringar, SSH tar upp nÀstan hela CPU:n pÄ servern och sajten kraschar redan vid en till tvÄ förfrÄgningar per sekund. DÀrför gÄr dessa en eller tvÄ förfrÄgningar i loggarna inte att sÀrskilja frÄn legitim belastning.
Det finns fortfarande mÄnga anslutningar som vi öppnar pÄ servrar. Tidigare var det ett problem med Apache, och nu drabbar det faktiskt Àven nginx, eftersom det ofta Àr felkonfigurerat som standard. Antalet anslutningar som nginx kan hÄlla öppna Àr begrÀnsat, vilket innebÀr att nÀr vi nÄr detta antal tar nginx inte emot nya anslutningar, och resultatet Àr att webbplatsen slutar fungera.
VĂ„rt testkluster har tillrĂ€ckligt med CPU för att attackera SSL-handshake. I praktiken Ă€r det tydligt att botnĂ€t ibland ocksĂ„ gillar att göra detta. Ă
ena sidan Ă€r det sjĂ€lvklart att SSL Ă€r nödvĂ€ndigt, eftersom det Ă€r viktigt för Googles resultat, rankning och sĂ€kerhet. Ă
andra sidan har SSL tyvÀrr problem med CPU.
L3&4
NÀr vi pratar om attacker pÄ nivÄer L3&4 talar vi oftast om attacker pÄ kanalsnivÄ. SÄdan belastning Àr nÀstan alltid tydligt Ätskiljbar frÄn legitim trafik, om det inte Àr en SYN-flood attack. SYN-flood problem för sÀkerhetsmedel bestÄr i det stora trafikvolymen. Den maximala storleken för L3&4 har varit 1,5-2 Tbit/s. En sÄdan trafik Àr mycket svÄr att hantera Àven för stora företag, inklusive Oracle och Google.
SYN och SYN-ACK Àr paket som anvÀnds vid anslutningsupprÀttande. DÀrför Àr det svÄrt att skilja SYN-flood frÄn legitim belastning: det Àr oklart om det Àr SYN-paketet som kom för att etablera en anslutning, eller en del av floden.
UDP-flood
Vanligtvis har angripare inte den kraft som vi har, sÄ de kan anvÀnda amplification för att genomföra attacker. Det vill sÀga, angriparen skannar internet och hittar antingen sÄrbara eller felkonfigurerade servrar, som till exempel svarar med tre SYN-ACK-paket pÄ ett enda SYN-paket. Genom att förfalska kÀlladressen frÄn mÄltjÀnstens adress kan man öka kraften, sÀg tre gÄnger, med ett enda paket och omdirigera trafiken till mÄlet.

Problemet med amplification ligger i deras svÄra upptÀckbarhet. Ett av de senaste exemplen Àr den uppmÀrksammade sÄrbarheten med memcached. Dessutom har det nu dykt upp mÄnga IoT-enheter, IP-kameror, som ocksÄ oftast Àr felkonfigurerade som standard, vilket gör att angripare ofta utnyttjar dessa enheter för sina attacker.

Nyckfull SYN-flood
SYN-flood Àr kanske den mest intressanta typen av attacker sett ur utvecklarens perspektiv. Problemet Àr att systemadministratörer ofta anvÀnder IP-blockering som skydd. DÄ drabbas inte bara administratörer som arbetar med skript utan tyvÀrr Àven vissa skyddssystem som köps för stora pengar.
En sÄdan metod kan bli katastrofal, för om angriparna byter ut IP-adresser, sÄ kommer företaget att blockera sitt eget nÀtverk. NÀr brandvÀggen blockerar sin egen kluster kommer externa interaktioner att kollapsa och resursen att gÄ sönder.
Dessutom Ă€r det inte svĂ„rt att uppnĂ„ blockering av sitt eget nĂ€tverk. Om klientens kontor har ett Wi-Fi-nĂ€tverk, eller om resursernas funktionalitet mĂ€ts med hjĂ€lp av olika övervakningssystem, sĂ„ tar vi IP-adressen för detta övervakningssystem eller kontorets Wi-Fi-klient och anvĂ€nder den som kĂ€lla. UtgĂ„ngen ser ut att vara tillgĂ€nglig, men de mĂ„linriktade IP-adresserna Ă€r blockerade. PĂ„ sĂ„ sĂ€tt kan Wi-Fi-nĂ€tverket för konferensen HighLoad blockeras, dĂ€r företagets nya produkt presenteras â och detta medför vissa affĂ€rs- och ekonomiska kostnader.
Under testningen kan vi inte anvÀnda förstÀrkning via memcached med externa resurser, eftersom det finns avtal om att trafik endast fÄr skickas till tillÄtna IP-adresser. DÀrför anvÀnder vi förstÀrkning via SYN och SYN-ACK, dÀr för varje skickad SYN svarar systemet med tvÄ till tre SYN-ACK, vilket gör att attacken multipliceras med tvÄ till tre gÄnger.
Verktyg
Ett av de huvudsakliga verktygen vi anvÀnder för belastning pÄ L7-nivÄ Àr Yandex-tank. I synnerhet anvÀnds Phantom som kanon, plus nÄgra skript för att generera kulor och för att analysera resultaten.
För att analysera nÀtverkstrafik anvÀnds Tcpdump, för att analysera servern anvÀnds Nmap. För att skapa belastning pÄ L3&4-nivÄ anvÀnds OpenSSL och lite egen magi med DPDK-biblioteket. DPDK Àr ett bibliotek frÄn Intel som möjliggör arbete med nÀtverksgrÀnssnittet, förbi Linux-stacken, vilket ökar effektiviteten. SjÀlvklart anvÀnder vi DPDK inte bara pÄ L3&4-nivÄ utan ocksÄ pÄ L7-nivÄ, eftersom det möjliggör att skapa en mycket hög belastning av flera miljoner begÀrningar per sekund frÄn en maskin.
Vi anvÀnder ocksÄ specifika trafikgenererare och verktyg som vi skriver för specifika tester. Om vi minns sÄrbarheten under SSH, kan den ovan nÀmnda uppsÀttningen inte utnyttjas. Om vi attackerar postprotokollet tar vi postverktyg eller skriver bara skript för dem.
Slutsatser
Som avslutning vill jag sÀga:
- Förutom klassisk belastningstestning mĂ„ste man ocksĂ„ genomföra stresstestning. Vi har ett verkligt exempel dĂ€r en underleverantör till en partner endast genomförde belastningstestning. Det visade att resurserna klarar den normala belastningen. Men sedan kom en ovanlig belastning, besökarna pĂ„ webbplatsen började anvĂ€nda resursen pĂ„ ett nĂ„got annat sĂ€tt, â och i slutĂ€ndan kraschade underleverantören. SĂ„ det Ă€r viktigt att leta efter sĂ„rbarheter, Ă€ven om ni redan Ă€r skyddade mot DDoS-attacker.
- Det Àr nödvÀndigt att isolera vissa delar av systemet frÄn andra. Om ni har en sökfunktion ska den flyttas till separata maskiner, alltsÄ inte ens i Docker. För om sökningen eller autentiseringen misslyckas kommer Ätminstone nÄgot fortsatt att fungera. I fallet med en webbutik kommer anvÀndarna att fortsÀtta hitta produkter via katalogen, gÄ in via aggregatorer, köpa om de redan Àr inloggade, eller logga in via OAuth2.
- Man ska inte försumma alla möjliga molntjÀnster.
- AnvÀnd CDN inte bara för att optimera nÀtverksfördröjningar, utan ocksÄ som ett skydd mot attacker som utarmar kanalen och rent av mot floder av statisk trafik.
- Det Àr nödvÀndigt att anvÀnda specialiserade skyddstjÀnster. Mot L3&4-attacker pÄ kanalnivÄ kommer ni inte att klara er sjÀlva, eftersom ni troligtvis helt enkelt inte har tillrÀcklig kapacitet. Mot L7-attacker kommer ni knappast att klara er, eftersom de kan vara mycket stora. Dessutom Àr det fortfarande specialiserade tjÀnster och algoritmer som ansvarar för att upptÀcka smÄ attacker.
- Uppdatera regelbundet. Detta gÀller inte bara kÀrnan utan Àven SSH-daemon, sÀrskilt om de Àr öppna mot omvÀrlden. I princip bör ni uppdatera allt, eftersom ni knappast kan övervaka vissa sÄrbarheter pÄ egen hand.
KĂ€lla: habr.com
