Veiligheid

10 soorten beveiligingsproblemen

10 soorten beveiligingsproblemen
Een onbedoelde of onopzettelijke fout in de softwarecode of een systeem waardoor deze mogelijk misbruikt kan worden in termen van toegang tot onwettige gebruikers, kwaadaardig gedrag zoals virussen, trojans, wormen of andere malware, wordt een beveiligingskwetsbaarheid genoemd. Het gebruik van software die al is misbruikt of het gebruik van zwakke en standaardwachtwoorden leidt er ook toe dat het systeem kwetsbaar wordt voor de buitenwereld. Voor dit soort beveiligingsproblemen is patching vereist om te voorkomen dat hackers eerder gebruikte exploits opnieuw gebruiken om ongeautoriseerde toegang tot het systeem te krijgen. Een beveiligingskwetsbaarheid, ook wel beveiligingslek of zwakte genoemd, is een fout, een bug of een fout in de implementatie van code, ontwerp en architectuur van een webtoepassing en servers, die, wanneer deze niet wordt aangepakt, kan leiden tot compromittering van het systeem en de hele netwerk kwetsbaar voor de aanval. De mensen die geïnfecteerd worden, zijn onder meer de eigenaar van de applicatie, gebruikers van de applicatie en elke andere persoon die op die applicatie vertrouwt. Laten we eens kijken naar de gevaarlijkste en meest voorkomende beveiligingsrisico's voor webtoepassingen.

Inhoudsopgave

  1. Database-injectie
  2. Verbroken authenticatie
  3. Gevoelige gegevensblootstelling
  4. XML externe entiteiten (XEE)
  5. Gebroken toegangscontrole
  6. Verkeerde configuratie van beveiliging
  7. Cross-site scripting (XSS)
  8. Onveilige deserialisatie
  9. Componenten met bekende kwetsbaarheden gebruiken
  10. Onvoldoende logging en monitoring

Database-injectie:

In het geval van het verzenden van niet-vertrouwde stukjes gegevens naar de interpreter als onderdeel van een opdracht via een gebied dat invoer van de gebruiker vereist i.e formulierinvoer of een ander gebied voor het indienen van gegevens, er treden injectiefouten op. De kwaadaardige zoekopdrachten van de aanvaller kunnen de tolk misleiden tot het uitvoeren van opdrachten die vertrouwelijke gegevens kunnen tonen waar de gebruiker geen toestemming voor heeft om naar te kijken. Bij een SQL-injectie-aanval kan de aanvaller, wanneer de formulierinvoer bijvoorbeeld niet goed is opgeschoond, de SQL-database binnendringen en zonder toestemming toegang krijgen tot de inhoud ervan, gewoon door kwaadaardige SQL-databasecode in te voeren in een vorm die een leesbare tekst verwacht. Elk type veld dat de invoer van de gebruiker nodig heeft, is injecteerbaar i.e parameters, omgevingsvariabelen, alle webservices, etc.

De applicatie is kwetsbaar voor de injectie-aanval wanneer door de gebruiker aangeleverde gegevens niet worden opgeschoond en gevalideerd, door het gebruik van dynamische zoekopdrachten zonder contextbewuste ontsnapping en het direct gebruik van vijandige gegevens. Injectiefouten kunnen gemakkelijk worden ontdekt door het onderzoeken van code en door het gebruik van geautomatiseerde tools zoals scanners en fuzzers. Om injectie-aanvallen te voorkomen, is er een maatregel die kan worden genomen, zoals het scheiden van de gegevens van opdrachten en query's, het gebruik van een veilige API die een geparametriseerde interface biedt, het gebruik van "witte lijst" invoervalidatie aan de serverzijde via tools zoals Snort, ontsnappen van speciale tekens met behulp van specifieke escape-syntaxis, enz.

Een injectie-aanval kan leiden tot massaal gegevensverlies, openbaarmaking van vertrouwelijke informatie, weigering van toegang en het kan zelfs leiden tot een volledige overname van de applicatie. Sommige SQL-besturingselementen zoals LIMIT kunnen worden gebruikt om enorme hoeveelheden gegevensverlies te beheersen in geval van een aanval. Sommige soorten injectieaanvallen zijn SQL-, OS-, NoSQL-, LDAP-injectieaanvallen.

Verbroken authenticatie:

Aanvallers hebben toegang tot gebruikersaccounts en kunnen zelfs het hele hostsysteem binnendringen via beheerdersaccounts, gebruikmakend van de kwetsbaarheden in authenticatiesystemen. Authenticatiefouten stellen de aanvaller in staat om wachtwoorden, sessietokens en authenticatiesleutels te compromitteren en kunnen worden gekoppeld aan andere aanvallen die kunnen leiden tot ongeautoriseerde toegang tot een ander gebruikersaccount of sessie, tijdelijk en in sommige gevallen permanent. Stel dat een gebruiker een woordenlijst of een woordenboek heeft met miljoenen geldige gebruikersnamen en wachtwoorden die zijn verkregen tijdens een inbreuk a. Hij kan ze een voor een gebruiken in een extreem korte tijd met behulp van geautomatiseerde tools en scripts op het inlogsysteem om te zien of iemand werkt. Slechte implementatie van identiteitsbeheer en toegangscontrole leidt tot kwetsbaarheden zoals verbroken authenticatie.

De applicatie is kwetsbaar voor authenticatie-aanvallen wanneer het het proberen van verschillende gebruikersnamen en wachtwoorden toestaat, woordenboekaanvallen of brute force-aanvallen toestaat zonder enige verdedigingsstrategie, eenvoudige standaardwachtwoorden of wachtwoorden gebruikt die bij een inbreuk zijn gelekt, sessie-ID's in URL blootlegt, slecht schema voor wachtwoordherstel, gebruikt een patroon van cookies. Verbroken authenticatie kan gemakkelijk worden misbruikt met behulp van eenvoudige tools voor brute-force en woordenboekaanvallen met een goed woordenboek. Dit soort aanvallen kan worden voorkomen met behulp van multi-factor authenticatiesystemen, door zwakke wachtwoordcontroles uit te voeren door een wachtwoord door een database met slechte wachtwoorden te laten lopen, door geen standaardreferenties te gebruiken, door het beleid voor wachtwoordcomplexiteit op elkaar af te stemmen, door het gebruik van goede server-side sessiemanager die een nieuwe willekeurige sessie-id genereert na inloggen, enz.

Een kwetsbaarheid voor gebroken authenticatie kan ertoe leiden dat een paar gebruikersaccounts en een beheerdersaccount worden gehackt, dat is alles wat een aanvaller nodig heeft om een ​​systeem in gevaar te brengen. Dit soort aanvallen leidt tot identiteitsdiefstal, socialezekerheidsfraude, witwassen van geld en openbaarmaking van zeer geheime informatie. De aanvallen omvatten woordenboekaanvallen, brute-forcing, sessiekaping en sessiebeheeraanvallen.

Blootstelling aan gevoelige gegevens:

Soms beschermen webapplicaties geen gevoelige gegevens en informatie zoals wachtwoorden, databasereferenties, enz. Een aanvaller kan deze zwak beveiligde inloggegevens gemakkelijk stelen of wijzigen en deze voor onwettige doeleinden gebruiken. Gevoelige gegevens moeten worden versleuteld terwijl ze in rust of onderweg zijn en een extra beveiligingslaag hebben, anders kunnen aanvallers ze stelen. Aanvallers kunnen gevoelige blootgestelde gegevens in handen krijgen en gehashte of gewiste tekstgebruikers en databasereferenties van de server of een webbrowser stelen. Als een wachtwoorddatabase bijvoorbeeld ongezouten of eenvoudige hashes gebruikt om wachtwoorden op te slaan, kan een aanvaller door een fout bij het uploaden van bestanden de wachtwoorddatabase ophalen, wat zal leiden tot blootstelling van alle wachtwoorden met een regenboogtabel van vooraf berekende hashes.

De belangrijkste fout is niet alleen dat de gegevens niet zijn versleuteld, zelfs als deze zijn versleuteld, maar zwakke sleutelgeneratie, zwakke hash-algoritmen en zwak cijfergebruik kunnen ook leiden tot dit soort van een van de meest voorkomende aanvallen. Om dit soort aanvallen te voorkomen, classificeert u eerst welk soort gegevens als gevoelig kunnen worden beschouwd volgens de privacywetten en past u controles toe volgens de classificatie. Probeer geen geclassificeerde gegevens op te slaan die u niet nodig hebt, was ze zodra u ze gebruikt. Versleutel de gegevens die onderweg zijn met veilige protocollen i.e TLS met PFS-coderingen, enz.

Dit soort kwetsbaarheden kan leiden tot de blootstelling van zeer gevoelige informatie zoals creditcardgegevens, medische dossiers, wachtwoorden en andere persoonlijke gegevens die kunnen leiden tot identiteitsdiefstal en bankfraude, enz.

XML externe entiteiten (XEE):

Slecht geconfigureerde XML-processors verwerken externe entiteitsreferenties in XML-documenten. Deze externe entiteiten kunnen worden gebruikt om de gegevens van interne bestanden op te halen, zoals: /etc/passwd bestand of om andere kwaadaardige taken uit te voeren.  Kwetsbare XML-processors kunnen gemakkelijk worden misbruikt als een aanvaller een XML-document kan uploaden of XML kan toevoegen, enz. Deze kwetsbare XML-entiteiten kunnen worden ontdekt met behulp van SAST- en DAST-tools of handmatig door afhankelijkheden en configuraties te inspecteren.

Een webtoepassing is om vele redenen kwetsbaar voor de XEE-aanval, bijvoorbeeld als de toepassing directe XML-invoer van niet-vertrouwde bronnen accepteert, Document Type Definitions (DTD's) op de toepassing zijn ingeschakeld, de toepassing SAML gebruikt voor identiteitsverwerking, terwijl SAML XML gebruikt voor identiteit invoegingen, enz. XEE-aanvallen kunnen worden beperkt door serialisatie van gevoelige gegevens te vermijden en minder gecompliceerde gegevensformaten te gebruiken.e JSON, patchen van XML-processors die de applicatie momenteel gebruikt en zelfs de bibliotheken, DTD's uitschakelen in alle XML-parsers, validatie van XML-bestandsuploadfunctionaliteit met behulp van XSD-verificatie, enz.

De applicatie die kwetsbaar is voor dit soort aanvallen kan leiden tot een DOS-aanval, een aanval van Billion Laughs, het scannen van interne systemen, het scannen van interne poorten, het uitvoeren van een opdracht op afstand die gevolgen heeft voor alle applicatiegegevens.

Gebroken toegangscontrole:

Toegangscontrole geeft gebruikers privileges om specifieke taken uit te voeren. Kwetsbaarheid met gebroken toegangscontrole vindt plaats wanneer de gebruikers niet op de juiste manier worden beperkt in de taken die ze kunnen uitvoeren. Aanvallers kunnen misbruik maken van dit beveiligingslek dat kan leiden tot toegang tot ongeautoriseerde functionaliteit of informatie. Laten we zeggen dat een webtoepassing de gebruiker in staat stelt om het account vanwaar hij is aangemeld te wijzigen door de URL te wijzigen in het account van een andere gebruiker zonder verdere verificatie.  Het misbruiken van de kwetsbaarheid voor toegangscontrole is een aanval die elke aanvaller kan gebruiken. Deze kwetsbaarheid kan zowel handmatig als met behulp van SAFT- en DAFT-tools worden gevonden. Deze kwetsbaarheden bestaan ​​vanwege een gebrek aan tests en geautomatiseerde detectie van webapplicaties, hoewel de beste manier om ze te vinden is om dit handmatig te doen.

Kwetsbaarheden bevatten escalatie van bevoegdheden i.e optreden als gebruiker die u niet bent of optreden als beheerder terwijl u een gebruiker bent, toegangscontroles omzeilen door alleen de URL te wijzigen of de status van de applicatie te wijzigen, manipulatie van metagegevens, waardoor de primaire sleutel kan worden gewijzigd als de primaire sleutel van een andere gebruiker, enz. Om dit soort aanvallen te voorkomen, moeten toegangscontrolemechanismen worden geïmplementeerd in server-side code waar aanvallers de toegangscontroles niet kunnen wijzigen. Handhaving van unieke bedrijfslimieten voor applicaties door domeinmodellen, het uitschakelen van serverdirectory's, waarschuw de beheerder bij herhaalde mislukte inlogpogingen, ongeldigverklaring van JWT-tokens na het uitloggen moet worden gegarandeerd om dit soort aanvallen te verminderen.

Aanvallers kunnen optreden als een andere gebruiker of beheerder die dit beveiligingslek gebruikt om kwaadaardige taken uit te voeren, zoals het maken, verwijderen en wijzigen van records, enz. Er kan enorm gegevensverlies optreden als de gegevens niet zijn beveiligd, zelfs niet na een inbreuk.

Verkeerde configuratie van de beveiliging:

De meest voorkomende kwetsbaarheid is een verkeerde configuratie van de beveiliging. De belangrijkste reden voor de kwetsbaarheid is het gebruik van standaardconfiguratie, onvolledige configuratie, Adhoc-configuraties, slecht geconfigureerde HTTP-headers en uitgebreide foutmeldingen die meer informatie bevatten dan de gebruiker eigenlijk had moeten weten. Op elk niveau van een webtoepassing kunnen misconfiguraties van de beveiliging optreden i.e database, webserver, applicatieserver, netwerkdiensten, enz. Aanvallers kunnen niet-gepatchte systemen misbruiken of toegang krijgen tot onbeveiligde bestanden en mappen om een ​​ongeautoriseerde greep op het systeem te krijgen. Bijvoorbeeld een applicatie die overdreven uitgebreide foutmeldingen geeft die de aanvaller helpen om kwetsbaarheden in het applicatiesysteem en de manier waarop het werkt te kennen. Geautomatiseerde tools en scanners kunnen worden gebruikt om dit soort beveiligingsfouten te detecteren.

Een webapplicatie bevat dit type kwetsbaarheid als het de beveiligingsmaatregelen in elk deel van de applicatie mist, onnodige poorten open zijn of onnodige functies mogelijk maken, standaardwachtwoorden worden gebruikt, foutafhandeling informatieve fouten aan de aanvaller onthult, het gebruikt niet-gepatchte of verouderde beveiligingssoftware, enz. Het kan worden voorkomen door onnodige functies van de code te verwijderen, i.een minimaal platform zonder onnodige functies, documentatie, enz., waardoor een taak mogelijk is om de beveiligingslekken bij te werken en te patchen als onderdeel van patchbeheerprocessen, het gebruik van een proces om de effectiviteit van genomen beveiligingsmaatregelen te verifiëren, het gebruik van herhaalbaar hardeningsproces om het gemakkelijk is om een ​​andere omgeving te implementeren die goed is vergrendeld.

Dit soort kwetsbaarheden of gebreken stellen de aanvaller in staat om ongeautoriseerde toegang te krijgen tot systeemgegevens, wat leidt tot volledige inbreuk op het systeem.

Cross-site scripting (XSS):

XSS-kwetsbaarheden treden op op het moment dat een webtoepassing niet-vertrouwde gegevens in een nieuwe websitepagina opneemt zonder legitieme goedkeuring of escape, of een huidige sitepagina vernieuwt met door de klant verstrekte gegevens, met behulp van een browser-API die HTML of JavaScript kan maken.  XSS-fouten treden op als de website een gebruiker toestaat om aangepaste code toe te voegen aan een URL-pad dat door andere gebruikers kan worden gezien. Deze fouten worden gebruikt om kwaadaardige JavaScript-code uit te voeren in de browser van het doelwit. Stel dat een aanvaller een link naar het slachtoffer kan sturen met een link naar de website van een bedrijf. Deze verbinding kan een kwaadaardige JavaScript-code bevatten. In het geval dat de webpagina van de bank niet goed beveiligd is tegen XSS-aanvallen, wordt door op de link te klikken de kwaadaardige code uitgevoerd in de browser van het slachtoffer.

Cross-Site Scripting is een beveiligingsprobleem dat aanwezig is in bijna ⅔ van de webapplicaties. Een applicatie is kwetsbaar voor XSS als de applicatie niet-opgeschoonde gebruikersinvoer opslaat die kan worden gezien door een andere gebruiker, door het gebruik van JavaScript-structuren, applicaties met één pagina en API's die krachtig door aanvallers bestuurbare informatie op een pagina bevatten, zijn hulpeloos tegen DOM XSS. XSS-aanvallen kunnen worden beperkt door het gebruik van frameworks die ontsnappen en XSS-invoer van nature zuiveren, zoals React JS enz., de beperkingen van frameworks leren kennen en deze afdekken met behulp van je eigen gevallen, waardoor onnodige en niet-vertrouwde HTML-gegevens overal worden vermeden i.e in HTML-attributen, URI, Javascript, enz., Gebruik van contextgevoelige codering in geval van wijziging van het document aan de clientzijde, enz.

Op XSS gebaseerde aanvallen zijn van drie soorten i.e Gereflecteerde XSS, DOM XSS en opgeslagen XSS. Al deze soorten aanvallen hebben een aanzienlijke impact, maar in het geval van Stored XSS is de impact nog groter i.e stelen van inloggegevens, verzenden van malware naar het slachtoffer, enz.

Onveilige deserialisatie:

De serialisatie van gegevens betekent het nemen van objecten en deze converteren naar elk formaat, zodat deze gegevens later voor andere doeleinden kunnen worden gebruikt, terwijl deserialisatie van gegevens het tegenovergestelde betekent. Deserialisatie is het uitpakken van deze geserialiseerde gegevens voor het gebruik van applicaties. Onveilige deserialisatie betekent het temperen van gegevens die zijn geserialiseerd net voordat ze op het punt staan ​​te worden uitgepakt of gedeserialiseerd.  Onveilige deserialisatie leidt tot de uitvoering van externe code en wordt gebruikt om andere taken uit te voeren voor kwaadaardige doeleinden, zoals escalatie van privileges, injectie-aanvallen, replay-aanvallen, enz. Er zijn enkele hulpmiddelen beschikbaar om dit soort fouten te ontdekken, maar er is vaak menselijke hulp nodig om het probleem te valideren. Het exploiteren van deserialisatie is een beetje moeilijk omdat de exploits niet werken zonder enkele handmatige wijzigingen.

Wanneer de toepassing kwaadaardige objecten deserialiseert die door de aanvallende entiteit zijn geleverd. Dit kan leiden tot twee soorten aanvallen i.e aanvallen met betrekking tot datastructuur en objecten waarbij de aanvaller applicatielogica wijzigt of externe code uitvoert en typische datamanipulatieaanvallen waarbij bestaande datastructuren worden gebruikt met gewijzigde inhoud, bijvoorbeeld aanvallen met betrekking tot toegangscontrole.  Serialisatie kan worden gebruikt in externe procescommunicatie (RPC) of een interprocescommunicatie (IPC), gegevenscaching, webservices, databasecacheserver, bestandssystemen, API-authenticatietokens, HTML-cookies, HTML-formulierparameters, enz. Deserialisatie-aanvallen kunnen worden beperkt door geen gebruik te maken van geserialiseerde objecten van niet-vertrouwde bronnen, integriteitscontroles te implementeren, de code te isoleren die wordt uitgevoerd in een omgeving met weinig privileges, inkomende en uitgaande netwerkverbindingen te bewaken van servers die vaak deserialiseren.

Componenten met bekende kwetsbaarheden gebruiken:

Verschillende componenten zoals bibliotheken, frameworks en softwaremodules worden door de meeste ontwikkelaars in de webtoepassing gebruikt. Deze bibliotheken helpen de ontwikkelaar onnodig werk te voorkomen en de benodigde functionaliteit te bieden. Aanvallers zoeken naar fouten en kwetsbaarheden in deze componenten om een ​​aanval te coördineren. In het geval dat een beveiligingslek in een component wordt gevonden, kunnen alle sites die dezelfde component gebruiken, kwetsbaar maken. Exploits van deze kwetsbaarheden zijn al beschikbaar, terwijl het schrijven van een aangepaste exploit vanuit het niets veel moeite kost. Dit is een veel voorkomend en wijdverbreid probleem, het gebruik van grote hoeveelheden componenten bij het ontwikkelen van een webtoepassing kan ertoe leiden dat u niet eens alle gebruikte componenten kent en begrijpt, het patchen en bijwerken van alle componenten duurt lang.

Een applicatie is kwetsbaar als de ontwikkelaar de versie van een gebruikt onderdeel niet kent, de software verouderd is i.e het besturingssysteem, DBMS, draaiende software, runtime-omgevingen en de bibliotheken, het scannen op kwetsbaarheden wordt niet regelmatig uitgevoerd, de compatibiliteit van gepatchte software wordt niet getest door de ontwikkelaars. Dit kan worden voorkomen door ongebruikte afhankelijkheden, bestanden, documentatie en bibliotheken te verwijderen, de versie van de client- en servercomponenten regelmatig te controleren, componenten en bibliotheken te verkrijgen van officiële en vertrouwde veilige bronnen, de niet-gepatchte bibliotheken en componenten te controleren en een plan te maken voor het regelmatig bijwerken en patchen van kwetsbare componenten.

Deze kwetsbaarheden leiden tot kleine gevolgen, maar kunnen ook leiden tot compromittering van de server en het systeem. Veel grote inbreuken waren gebaseerd op bekende kwetsbaarheden van componenten. Het gebruik van kwetsbare componenten ondermijnt de verdediging van applicaties en kan een startpunt zijn voor een grote aanval.

Onvoldoende logging en monitoring:

De meeste systemen nemen onvoldoende maatregelen en stappen om datalekken te detecteren. De gemiddelde reactietijd van een incident is 200 dagen nadat het is gebeurd, dit is veel tijd om alle vervelende dingen te doen voor een aanvallende entiteit. Onvoldoende logboekregistratie en monitoring stellen de aanvaller in staat om het systeem verder aan te vallen, zijn greep op het systeem te behouden, te knoeien, vast te houden en gegevens te extraheren naar behoefte. Aanvallers gebruiken het gebrek aan monitoring en respons in hun voordeel om de webapplicatie aan te vallen.
Onvoldoende logging en monitoring vindt op elk moment plaats i.e logboeken van applicaties die niet worden gecontroleerd op ongebruikelijke activiteiten, controleerbare gebeurtenissen zoals mislukte inlogpogingen en hoge transactiewaarden worden niet correct gelogd, waarschuwingen en fouten genereren onduidelijke foutmeldingen, geen triggerwaarschuwing in geval van pentesting met geautomatiseerde DAST-tools, niet kunnen detecteren of snel actieve aanvallen waarschuwen, enz. Deze kunnen worden beperkt door ervoor te zorgen dat alle aanmeldingen, mislukte toegangscontroles en invoervalidatie aan de serverzijde kunnen worden vastgelegd om een ​​kwaadwillend gebruikersaccount te identificeren en lang genoeg worden bewaard voor vertraagd forensisch onderzoek, door ervoor te zorgen dat de gegenereerde logboeken een indeling hebben compatibel met gecentraliseerde oplossingen voor logbeheer, door te zorgen voor integriteitscontroles bij hoogwaardige transacties, door een systeem op te zetten voor tijdige waarschuwingen van verdachte activiteiten, enz.

De meeste van de succesvolle aanvallen beginnen met het controleren en onderzoeken op kwetsbaarheden in een systeem, waardoor deze kwetsbaarheden kunnen leiden tot het in gevaar brengen van het hele systeem.

Conclusie:

De beveiligingsproblemen in een webapplicatie zijn van invloed op alle entiteiten die verband houden met die applicatie. Deze kwetsbaarheden moeten worden aangepakt om een ​​veilige en beveiligde omgeving voor de gebruikers te bieden. Aanvallers kunnen deze kwetsbaarheden gebruiken om een ​​systeem te compromitteren, het in handen te krijgen en privileges te verhogen. De impact van een gecompromitteerde webtoepassing kan worden gevisualiseerd van gestolen creditcardgegevens en identiteitsdiefstal tot het lekken van zeer vertrouwelijke informatie enz. afhankelijk van de behoeften en aanvalsvectoren van kwaadwillende entiteiten.

Beste spellen om te spelen met handtracking
Oculus Quest introduceerde onlangs het geweldige idee van handtracking zonder controllers. Met een steeds toenemend aantal games en activiteiten die f...
OSD-overlay tonen in Linux-apps en -games op volledig scherm
Het spelen van games op volledig scherm of het gebruik van apps in de modus volledig scherm zonder afleiding kan u afsnijden van relevante systeeminfo...
Top 5 Game Capture-kaarten
We hebben allemaal gezien en genoten van streaming gameplays op YouTube. PewDiePie, Jakesepticye en Markiplier zijn slechts enkele van de beste gamers...