← Alle checks
BeveiligingTypische ernst: Hoog

Scanner voor kwetsbare libraries

Detecteert kwetsbare of niet meer ondersteunde versies van jQuery, AngularJS en Bootstrap met bekende XSS-CVE's.

Wat het checkt

Deze scanner identificeert de versies van veelgebruikte front-end bibliotheken zoals jQuery, AngularJS en Bootstrap die je site laadt. Hij markeert de versies die kwetsbaar of end-of-life zijn met bekende, gedocumenteerde XSS-fouten.

Waarom het belangrijk is

Een bibliotheek met publieke kwetsbaarheden draaien is een welbekende open deur: aanvallers zoeken juist naar die versies omdat de fout al gepubliceerd is. Een XSS via een verouderde bibliotheek kan sessiediefstal of het injecteren van content op je site mogelijk maken.

Hoe je het oplost

Werk die bibliotheken bij naar een ondersteunde versie zonder bekende kwetsbaarheden en controleer eerst of er niets breekt. Wordt een bibliotheek niet meer onderhouden, zoals AngularJS, overweeg dan te migreren naar een modern alternatief dat nog wel updates krijgt.

Hoe deze controle werkt

Scanaris verzamelt de HTML van je hoofdpagina en downloadt tot vijftien van de scripts: alle die vanaf je eigen domein worden geserveerd en, van de externe, die met "jquery" in het pad. In die tekst zoekt hij de versiebanners die bibliotheken bovenaan het bestand zetten. Drie gevallen openen een bevinding, allemaal met gemiddelde ernst. jQuery ouder dan 3.5.0: bekende XSS-kwetsbaarheden (CVE-2020-11022 en CVE-2020-11023) in de manier waarop het HTML verwerkt. AngularJS, elke 1.x-versie: het framework bereikte in januari 2022 het einde van zijn levensduur en krijgt geen beveiligingspatches meer. Bootstrap 3.x ouder dan 3.4.1 of 4.x ouder dan 4.3.1: XSS via data--attributen in tooltips en popovers (CVE-2019-8331). Hij meldt alleen wanneer hij het versienummer uitgeschreven vindt; is het bestand geminificeerd zonder banner, dan gokt hij niet.

Waarom dit belangrijk is

Een XSS-kwetsbaarheid in een bibliotheek die je hele site laadt, is een open deur op alle pagina's tegelijk: een aanvaller die tekst weet te plaatsen waar de bibliotheek die als HTML interpreteert (een reactie, een profielnaam, een URL-parameter) voert JavaScript uit met de sessie van wie het ziet. Voor deze drie bibliotheken zijn de fouten al jaren openbaar, met gepubliceerde exploitatievoorbeelden, en geautomatiseerde tools testen ze standaard. Het geval AngularJS is anders maar op lange termijn erger: het gaat niet om één specifieke fout, maar om het feit dat de volgende die opduikt nooit meer wordt hersteld.

Waarom het gebeurt

Omdat ze werken. Een jQuery 1.12 uit 2016 doet nog steeds wat het deed en niemand raakt het aan uit angst iets te breken. WordPress-thema's en -plugins zijn het typische geval: de WordPress-core levert sinds versie 5.6 jQuery 3.7 mee, maar een oud thema kan zijn eigen kopie laden. Het duikt ook op in gekochte HTML-templates, geërfde beheerpanelen en projecten waarin de AI een voorbeeld met een jaren oude CDN-URL heeft gekopieerd.

Hoe je het oplost

  • jQuery: werk bij naar de nieuwste 3.x (3.7 is de huidige tak). Verander de CDN-URL of het lokale bestand, en laad een paar dagen jquery-migrate zodat het je in de console waarschuwt voor oude aanroepen die aangepast moeten worden. Test formulieren, menu's en elke jQuery-plugin die je gebruikt.
  • Bootstrap: zit je op 3.x, ga dan naar 3.4.1, dat compatibel is; op 4.x naar 4.6.2. Het zijn onderhoudsversies zonder ontwerpwijzigingen. De sprong naar 5.x is een grotere migratie omdat die jQuery laat vallen en klassen hernoemt; plan die apart.
  • AngularJS: er is geen veilige versie om naartoe te gaan. De opties zijn migreren (naar modern Angular, Vue of React, in delen als de app groot is), ondertussen commerciële verlengde ondersteuning kopen, of de app isoleren: geen gevoelige gegevens, achter authenticatie en met een strikte CSP.
  • WordPress: werk het thema en de plugins bij; blijft een ervan een oude jQuery laden, vervang hem dan. Schakel de jQuery van de core niet uit om "te besparen": dat is de goede versie.
  • In het algemeen: installeer bibliotheken met npm in plaats van CDN-URL's te kopiëren, en zet de afhankelijkheidswaarschuwingen van GitHub of npm audit aan om van de volgende te horen.

Controleer of het opgelost is

curl -s https://jouwdomein.nl | grep -oE 'src="[^"]*(jquery|bootstrap|angular)[^"]*"'
curl -s SCRIPT_URL | head -c 400 | grep -oE '(jQuery|Bootstrap|AngularJS)[^0-9]{0,30}v?[0-9]+\.[0-9]+\.[0-9]+'

De eerste vertelt je welke bestanden je site laadt; de tweede, met de URL van elk, de versie die ze opgeven. Verwacht: jQuery 3.5.0 of hoger, Bootstrap 3.4.1, 4.3.1 of hoger, en geen AngularJS.

Veelgestelde vragen

Worden alleen deze drie bibliotheken gedetecteerd?

Voorlopig wel: zij vormen het merendeel van de uitgebuite frontend-kwetsbaarheden op echte sites. Voor de rest van je afhankelijkheden dekken npm audit of de GitHub-waarschuwingen wat een externe scan niet kan zien.

Ik gebruik jQuery 1.12 maar voeg nooit HTML van gebruikers in. Ben ik veilig?

Zolang niemand onbetrouwbare tekst door .html(), .append() of iets dergelijks haalt, gaat de specifieke fout niet af. Maar dat is moeilijk te garanderen over de hele site en alle plugins, en de update naar 3.x kost meestal een middag. Ondertussen beperkt een strikte CSP de schade; zwakke CSP kijkt die na.

En als de bibliotheek van een CDN komt?

Zet dan, naast het bijwerken, de versie vast en voeg integrity toe zodat niemand hem onder je kan verwisselen; subresource integrity legt uit hoe.

Check het op je site

Scan je site gratis en zie of deze en 44 andere checks slagen, met een fixprompt voor elk probleem.

Mijn site gratis scannen

Gerelateerde checks