Kwetsbare en verouderde componenten: uitleg, voorbeelden, preventie

In het moderne digitale tijdperk is technologie onlosmakelijk verbonden met ons dagelijks leven. Er zijn echter serieuze bedreigingen verbonden aan het gebruik van webapplicaties. Software risico’s kunnen uit verschillende bronnen komen, maar een van de meest voorkomende is het gebruik van kwetsbare open-source of componenten van derden.

Hoewel publieke open-source bibliotheken, pakketten en frameworks het moderne softwareontwikkelingsproces hebben verbeterd, hebben de beveiligingslacunes in componenten de deur geopend voor potentieel kwaadaardige activiteiten. Elke dag ontdekken hackers nieuwe verwoestende methoden om kwetsbaarheden te exploiteren voor persoonlijk gewin.

Als softwareontwikkelaars niet-ondersteunde en verouderde componenten gebruiken, wordt de software vatbaar voor beveiligingskwetsbaarheden. Zodra u een kwetsbaarheid detecteert, hebben de criminelen deze mogelijk al ontdekt – en werken ze actief om de fout te benutten. Hoe kunnen hackers deze kwetsbaarheid uitbuiten, vraagt u zich misschien af? Dit is precies wat we hier onder andere gaan bespreken. Dus, laten we beginnen!

Wat zijn kwetsbare en verouderde componenten?

Als een softwarecomponent niet langer wordt onderhouden, wordt deze beschouwd als een kwetsbare en verouderde component die ernstige beveiligingsproblemen kan veroorzaken. Of u nu bezig bent met app-design of webontwikkeling, u kunt 100% veilige code schrijven en toch kwetsbaarheden blootstellen. De vraag rijst: hoe is dat mogelijk? Het antwoord is simpel – door het gebruik van kwetsbare componenten.

Als de componenten die u gebruikt in het softwarebouwproces verouderd, niet gepatched zijn of ernstige fouten bevatten, worden uw organisatie, klanten en applicatiegebruikers zachte doelwitten voor hackers. Dreigingsactoren kunnen deze fouten benutten om de server over te nemen, toegang te krijgen tot de gegevens van de applicatie of het systeem volledig te compromitteren. Naarmate softwareoplossingen veranderen en evolueren, ontstaat er een dringende behoefte voor ontwikkelingsteams om componenten bij te werken of te vervangen om een mogelijke beveiligingsinbreuk te voorkomen.

In 2017 stond het gebruik van componenten met bekende kwetsbaarheden op de negende plaats van de OWASP Top 10 meest kritieke beveiligingsrisico’s voor webapplicaties. Dit probleem verhuisde van de 9e naar de 6e plaats in de huidige OWASP Top 10 lijst.

Aanvallen met kwetsbare en verouderde componenten

Vanwege het groeiende aantal kwetsbaarheden is er een hoog risico op het onopzettelijk gebruiken van niet-ondersteunde of verouderde componenten. Hier zijn enkele praktijkvoorbeelden van hoe het gebruik van niet-ondersteunde componenten de beveiliging van uw code kan beïnvloeden. Klaar om te ontdekken? Laten we beginnen!

Verouderde of kwetsbare afhankelijkheden

Het hergebruiken van onbekende of onbetrouwbare componenten kan leiden tot beveiligingskwetsbaarheden. Bijvoorbeeld, OWASP WebGoat maakt gebruik van een kwetsbare Xstream open-source bibliotheekversie om een XML-document te converteren naar een Java-object.

Let op de bibliotheekversie – 1.4.5. Deze is gevoelig voor een deserialisatiefout met hoge ernst, die Remote Code Execution (RCE) mogelijk maakt – een van de ernstigste aanvallen die mogelijk zijn.

Kwetsbare en verouderde componenten: uitleg, voorbeelden, preventie

De onderstaande code maakt het /tmp/here-bestand aan op de Docker-container:

<sorted-set>
<string>foo</string>
  <dynamic-proxy>
    <interface>java.lang.Comparable</interface>
    <handler class='java.beans.EventHandler'>
      <target class='java.lang.ProcessBuilder'>
        <command>
          <string>touch</string><string>/tmp/here</string>
        </command>
      </target>
      <action>start</action>
    </handler>
  </dynamic-proxy>
</sorted-set>

 

Kwaadaardige componenten en typosquatting

Er zijn gevallen waarin softwareontwikkelaars onbedoeld een kwaadaardige component gebruiken die lijkt op de legitieme. Dit concept wordt typosquatting genoemd – de praktijk van het bewust verkeerd spellen van een bekende naam voor kwaadaardige doeleinden. Het is een wijdverbreide techniek die dreigingsactoren gebruiken om nietsvermoedende ontwikkelaars te lokken om de kwaadaardige component te downloaden.

Voorbeelden zijn “maratlib”, “maratlib1”, “matplatlib-plus”, “mllearnlib”, “mplatlib” en “learninglib” in PyPI (verkeerde spelling van de legitieme Python-plotsoftware matplotlib). De andere malafide componenten gebruikten het “maratlib”-pakket als een directe afhankelijkheid. In totaal bereikten de kwaadaardige pakketten bijna 5.000 downloads.

Hier is het geval van de eerder genoemde “learninglib”:

Kwetsbare en verouderde componenten: uitleg, voorbeelden, preventie

Kwaadaardige actoren richten zich voortdurend op online code repositories zoals PyPI (Python), NPM (JavaScript) en RubyGems, wat een grote cybersecurity-dreiging vormt, aangezien ontwikkelaars de kwaadaardige code zonder het te weten in hun projecten kunnen trekken. Met typosquatting-technieken kunnen de boosdoeners overtuigende pakketten creëren die zelfs deskundige ontwikkelaars kunnen misleiden.

Voorbeelden van echte kwetsbaarheden

Kwetsbare en verouderde componenten hebben ernstige gevolgen gehad voor app-gebruikers en ernstige reputatieschade voor bedrijven. Deze kwetsbaarheid is een wijd open deur waardoor indringers gemakkelijk het systeem kunnen binnendringen en toegang kunnen krijgen tot gevoelige gegevens. Hier zijn voorbeelden van de meest verwoestende inbreuken veroorzaakt door OWASP A6:

Panama Papers

The Panama Papers wordt beschouwd als de grootste datalek ooit wat betreft het pure volume aan gelekte gegevens. Hackers stalen de bestanden uit de computersystemen van het Panamese advocatenkantoor en corporate serviceprovider Mossack Fonseca. In 2016 was het het op drie na grootste bedrijf ter wereld dat offshore financiële diensten verleende.

Het lekken van meer dan 11 miljoen vertrouwelijke documenten, waaronder 2,6 terabyte aan informatie die toebehoorde aan hooggeplaatste politici en publieke figuren uit meer dan 50 landen, werd veroorzaakt door de exploitatie van verouderde, niet-gepatchte versies van Drupal CMS en WordPress.

Ubuntu Forums

In 2016 hackten daders een database van de Ubuntu Forums website. De kwaadwillenden maakten gebruik van een SQL-injectiefout in de Forum Runner add-on voor vBulletin, die nog niet was gepatcht. Door de kwetsbaarheid te exploiteren, kregen ze toegang tot de “user”-tabel van het forum met gebruikersnamen, e-mailadressen en internetprotocoladressen van 2 miljoen geregistreerde gebruikers. Gelukkig ontvingen kwaadwillende actoren geen geldige gebruikerswachtwoorden.

Het Canonical IT-team heeft de ModSecurity web application firewall (WAF) geïnstalleerd om soortgelijke cyberaanvallen te voorkomen en heeft de kwetsbaarheden van de vBulletin-component bijgewerkt naar het nieuwste patchniveau.

Equifax datalek

Het Equifax datalek is een van de beroemdste hacker-aanvallen gerelateerd aan het gebruik van verouderde en kwetsbare componenten. In 2017 maakten aanvallers misbruik van beveiligingslekken in de systemen van Equifax. Ze compromitteerden de persoonlijke informatie van 148 miljoen Amerikaanse consumenten, zoals voor- en achternamen, telefoonnummers, huisadressen, geboortedatums, rijbewijsnummers en burgerservicenummers.

Equifax heeft nagelaten zijn publieke website bij te werken met de nieuwste versie van Apache Struts. Het bedrijf heeft de juiste beveiligingspatches niet toegepast om een wijdverbreide kwetsbaarheid te verwijderen die het lek mogelijk maakte.

Kwetsbare en verouderde componenten detecteren

Om het gebruik van verouderde componenten met potentiële kwetsbaarheden te detecteren, moet u de technologieën ‘fingerprinten’ – de namen, versies en andere specificaties verzamelen van de technologieën die de software gebruikt. De technieken omvatten:

  • Analyse van HTML-elementen. Doorgaans bevat HTTP-verkeer cookies, doorverwijzings-URL’s, headerwaarden, HTTP-statuscode-informatie en meer. U kunt echter ongeautoriseerde activiteiten voorkomen of ongebruikte netwerkbronnen identificeren, alleen als u weet hoe u deze informatie moet analyseren. Zo kunt u browserextensietools gebruiken om de technologieën te zien die op websites worden gebruikt die u bezoekt, gebaseerd op HTML-pagina-componenten en headers.
  • Fouten triggeren. De praktijk van het belasten van de applicatie en het triggeren van uitgebreide foutmeldingen kan u een hint geven over de gebruikte technologieën. Met behulp van een geautomatiseerde softwaretesttechniek, bekend als fuzzing, kunt u programmeerfouten en beveiligingslekken vinden door willekeurig ongeldige, onverwachte of willekeurige gegevens als input in een applicatie te voeren.
  • Geforceerd browsen. Deze methode is gericht op het verkrijgen van toegang tot bronnen die niet aan de applicatie zijn gekoppeld, maar nog wel op de server aanwezig zijn. Hiermee kunt u de domeinmap doorzoeken naar oude configuratiebestanden, typische inlogportals en README-bestanden die informatie bevatten over het archief van computer software en mogelijk de naam en versie van de componenten.
  • Broncode. Als u geautoriseerd bent om toegang te krijgen tot de broncode van de applicatie, controleer dan de lijst met afhankelijkheden om de pakketten te zien die in het project worden gebruikt.

 

Preventie & Mitigatie

Het is cruciaal dat organisaties zich bewust zijn van de risico’s van het gebruik van kwetsbare componenten en relevante richtlijnen volgen om deze te elimineren. Als het op cyberbeveiliging aankomt, is bewustzijn uw beste verdediging. Laten we enkele van de meest effectieve preventiemechanismen verkennen. Hier gaan we!

Software Composition Analysis inschakelen

Software Composition Analysis (SCA) is een geautomatiseerd proces dat open-sourcepakketten die in de software zijn opgenomen, grondig analyseert. Met SCA kunnen beveiligingsexperts de risico’s en kwetsbaarheden identificeren die gepaard gaan met het gebruik van componenten van derden die in een project zijn opgenomen.

SCA-tools bieden een volledige inventaris van de software-assets van een project: alle componenten, hun ondersteunende bibliotheken, evenals directe en indirecte afhankelijkheden. SCA vergroot het bewustzijn van ontwikkelaars over beveiligingszorgen en potentiële zwakheden, waardoor ze mitigerende plannen kunnen opstellen en de nodige stappen kunnen ondernemen om illegale activiteiten te voorkomen.

Web Application Firewalls installeren

Web Application Firewalls (WAF’s) helpen websites en webapplicaties te beschermen door een beschermend schild te plaatsen tussen het systeem en het internet dat HTTP-verkeer monitort.

WAF’s zijn een kritieke beveiligingsverdediging tegen diverse aanvalsvectoren, waaronder SQL-injectie, remote file inclusion (RFI) en cross-site scripting (XSS). Met de juiste WAF in plaats kunnen ontwikkelingsteams inkomend verkeer inspecteren en kwaadaardige HTTP-verzoeken blokkeren voordat ze de webapplicatie of de gebruiker bereiken.

Zelfs als uw applicatie, service of server kwetsbaar is, zal de WAF-oplossing geen “kwaadaardige verzoeken” doorlaten.

Implementeer een patchbeheerproces

IT-professionals moeten hun aanpak voor patchbeheer formaliseren om bij te blijven met nieuw uitgebrachte beveiligingspatches en de algehele softwareprestaties te verbeteren. Goed patchbeheer omvat het identificeren en prioriteren van patchbehoeften, het verkrijgen, testen en installeren van patches om bestaande code bij te werken of te repareren.

Softwareprogramma’s, applicaties en ingebedde systemen hebben vaak technische problemen die tijdige oplossingen vereisen. Patches kunnen worden gebruikt om kwetsbaarheden te verhelpen, fouten te corrigeren en beveiligingslekken te dichten.

Het niet tijdig bijwerken van componenten vormt een aanzienlijk beveiligingsrisico en laat uw besturingssystemen kwetsbaar voor kwaadaardige aanvallen. Bovendien bemoeilijkt het toekomstige updates. Gebaseerd op het aantal projecten dat is gebouwd op dezelfde kwetsbare componentversie, zou de tijd die nodig is om tests uit te voeren en patches toe te passen exponentieel toenemen.

Voer penetratietests uit

Penetratietesten is een geplande aanval op een informatiesysteem, waarbij beveiligingsexperts dezelfde aanpak volgen als een aanvaller om zwakheden en kritieke kwetsbaarheden te vinden. Door proactief te zoeken naar kwetsbare componenten, kunt u cybersecurityproblemen aanpakken en oplossen voordat het systeem wordt geïmplementeerd.

Penetratietesten is een van de meest efficiënte manieren om uw informatiesysteem veilig te houden door continue monitoring op webbeveiligingskwetsbaarheden. Professionele pentesters van QAwerk gebruiken geavanceerde tools om de doelapplicaties te onderzoeken op zwakheden en organisaties te beschermen tegen ongewenste pogingen om toegang te krijgen tot hun computersystemen.

Hoe #6 OWASP-kwetsbaarheid te bestrijden?

Ontwikkelingsteams en beveiligingsmanagers hebben defensieve maatregelen nodig om kwaadaardige activiteiten te ontmoedigen en ervoor te zorgen dat hun organisatie niet openstaat voor cyberbeveiligingsdreigingen. De meest praktische manieren om componentgebaseerde kwetsbaarheden aan te pakken, zijn onder meer:

  • Vertrouw op OWASP-, SANS/CWE- en CERT-coderingsstandaarden om de softwareprestaties te verbeteren en de blootstelling aan kwetsbaarheden te verminderen.
  • Implementeer geautomatiseerde waarschuwings- en patchtools om een veilig proces voor de softwareontwikkelingscyclus (SDLC) te garanderen en uw ontwikkelingsteams een momentopname te geven van potentiële fouten.
  • Houd een uitgebreide inventaris bij van alle componenten die in de applicatie worden gebruikt, om ervoor te zorgen dat alleen goedgekeurde elementen aanwezig zijn. Beoordeel en update de lijst continu.
  • Geef de voorkeur aan ondertekende pakketten om het risico op het opnemen van een gewijzigd, schadelijk component te minimaliseren.
  • Elimineer afgedankte of ongebruikte componenten, items, mappen, functies en redundante afhankelijkheden om de kans op beveiligingsfouten te verkleinen.
  • Scan bibliotheken, componenten en hun afhankelijkheden regelmatig om zwakheden te detecteren.
  • Neem componenten alleen op uit officiële bronnen via beveiligde links en verifieer om naleving van wettelijke normen en regelgeving te garanderen.

Conclusie

De wereld van vandaag draait op technologie. Softwareapplicaties, oplossingen en platforms raken bijna elk aspect van ons leven. Toch brengen ze ook beveiligingsrisico’s met zich mee die een venster van mogelijkheden creëren voor aanvallers om ernstige problemen te veroorzaken voor gebruikers van applicaties en organisaties, zelfs voor grote en bekende organisaties.

Incidenten gebeuren, maar als u goed geïnformeerd en voorbereid bent, kunt u veel beter omgaan met kwetsbaarheden in de webbeveiliging. Om deze reden moeten ontwikkelingsteams hun focus aanscherpen op de zeer exploitabele, impactvolle kwetsbaarheden en veilige softwareontwikkelingspraktijken volgen.

Weten over de kwetsbaarheden zo vroeg mogelijk helpt beveiligingsprofessionals het probleem te begrijpen en de veiligste oplossing te bedenken. Softwareontwikkelaars moeten proactieve maatregelen nemen om de risico’s te beperken, kwaadaardige aanvallen te vermijden en inbreuken tegen de organisatie te voorkomen.

Verhoog nu de beveiliging van uw webapplicatie: de ultieme cheat sheet voor kwetsbare en verouderde componenten

Voer uw zakelijke e-mailadres in