Skip to main content
Alle Termen Glossary

Polyglot Payloads

Definition

Polyglot payloads zijn aanvalsstrings die geldig zijn in meerdere contexten, waardoor ze mogelijk beveiligingsfilters kunnen omzeilen. Bijvoorbeeld, een string kan zowel geldige JavaScript als geldige HTML zijn. Deze geavanceerde payloads kunnen parsserverschillen exploiteren en sanitisatie ontwijken. Preventie vereist contextbewuste inputvalidatie en output-encoding.

Wat polyglot payloads zijn

Een polyglot payload is één string die zo is opgesteld dat die geldig is, en iets bruikbaars doet voor de aanvaller, in meer dan één parsingcontext tegelijk. Een klassiek webvoorbeeld is een reeks die zich gedraagt als gewone tekst in HTML, als een attribuutwaarde en als uitvoerbare JavaScript, zodat op welke manier een pagina de invoer ook interpreteert, een deel ervan alsnog scriptuitvoering activeert. Aanvallers bouwen ze door fragmenten te combineren die de ene context afsluiten en een andere openen, met commentaartrucs en tekens die verschillende parsers verschillend behandelen. Hetzelfde idee komt voor in bestandsformaten, waarbij één bestand tegelijk een geldige afbeelding en een geldig script of archief is.

Waarom polyglots gevaarlijk zijn

Polyglots bestaan om contextspecifieke verdedigingen te omzeilen. Veel invoerfilters en sanitizers gaan ervan uit dat ze weten waar gebruikersgegevens terechtkomen, een HTML-body, een URL, een JavaScript-string, en coderen alleen voor dat geval. Een payload die geldig blijft in meerdere contexten glipt langs filters die op slechts één zijn afgestemd, en misbruikt verschillen tussen hoe een server-side sanitizer en de parser van de browser dezelfde bytes lezen. Dit maakt polyglots geliefd voor XSS die de regels van een web application firewall overleeft en voor uploads die een afbeeldingscontrole doorstaan maar als script worden uitgevoerd. Eén herbruikbare string kan veel injectiepunten aftasten, wat de moeite verlaagt om er één te vinden die afgaat.

Verdedigen tegen polyglot payloads

Verdediging begint met contextbewuste output-encoding: codeer gegevens voor de exacte sink waar ze terechtkomen (HTML, attribuut, URL, JavaScript, CSS) in plaats van één generiek filter toe te passen, en geef de voorkeur aan veilige DOM-API's zoals textContent boven innerHTML. Valideer uploads op contenttype en hercodeer bestanden server-side, zodat een polyglot zijn tweede identiteit niet kan behouden. Een strikte Content Security Policy beperkt wat een geïnjecteerd script kan doen, zelfs als een payload wél binnenkomt. cside vult deze maatregelen aan door het gedrag te analyseren van scripts die daadwerkelijk in de browser worden uitgevoerd en kwaadaardige activiteit in realtime te blokkeren, in plaats van te vertrouwen op filters die een slim gecodeerde string kan ontwijken.

Definitie

Hoe verschilt een polyglot payload van een normale XSS-payload?

Een standaard XSS-payload richt zich op één bekende context. Een polyglot is zo ontworpen dat die in meerdere contexten tegelijk geldig blijft, zodat de aanvaller niet precies hoeft te weten hoe de applicatie de invoer parseert; dezelfde string werkt of die nu in HTML, een attribuut of JavaScript terechtkomt.

Definitie

Kunnen polyglots in bestanden voorkomen, niet alleen in tekstinvoer?

Ja. Bestand-polyglots zijn zo gemaakt dat één bestand aan twee formaatspecificaties tegelijk voldoet, bijvoorbeeld een geldige GIF die ook uitvoerbare JavaScript is. Ze worden gebruikt om uploadfilters of contenttypecontroles te omzeilen die alleen tegen één verwacht formaat valideren.

Got more questions

Talk to a security expert

We answer client-side security questions every day. Bring yours.

Boek een demo