Amikor az emoji XSS-t okoz

Amikor az emoji XSS-t okoz

2025-09-21

Sebezhetőség leírása

Egy bug bounty vizsgálat során olyan XSS sebezhetőséget fedeztünk fel, amely meglepő módon emojik segítségével volt kihasználható. A bemeneti paraméterek elsőre biztonságosnak tűntek: a legtöbb rosszindulatú karaktert eltávolította a rendszer, ezért a sérülékenység nem volt nyilvánvaló.

Egy, a közösségben megosztott technika adott inspirációt, amely unicode karakterekre épített. Újrateszteltük az adott domaint, és bár a módszer közvetlenül nem működött, néhány emoji kipróbálásakor váratlan eredményt kaptunk: a válaszban speciális idézőjelek és aposztrófok jelentek meg. Egy karakterlánc például így nézett ki: d"Y'"

Egy nyílt forráskódú emoji adatbázis segítségével kiderült, hogy bizonyos emojik olyan karaktereket eredményezhetnek, amelyek a feldolgozás során HTML nyitó és záró jelekké alakulnak. Így született meg a működő payload:

💋img src=x onerror=alert(document.domain)//💛

Miért működött?

Készítettünk egy egyszerű tesztoldalt, hogy jobban megértsük a háttérben zajló folyamatot. Kiderült, hogy a szerver a rosszindulatú karakterek eltávolítása után hibás kódolási átalakítást végzett. A bemenetet először Windows-1252 kódolásúnak tekintette, majd UTF-8-ra konvertálta, noha valójában már UTF-8 volt. Ez nem egy valódi < jelet adott, hanem egy furcsa unicode karaktert: .

Ezután a rendszer újabb konverziót hajtott végre, UTF-8-ról ASCII-ra. A második átalakítás során a karakterből tényleges < lett, és pontosan ez nyitotta meg az utat az exploit előtt.

A reprodukcióhoz használt egyszerű PHP példa a tesztkörnyezetből:

<?php

$str = isset($_GET["str"]) ? htmlspecialchars($_GET["str"]) : "";

$str = iconv('Windows-1252', "UTF-8", $str);
$str = iconv('UTF-8', "ASCII//TRANSLIT", $str);

echo "String: " . $str;

Tanulságok

  • A kódolási konverziók és normalizációk láncolata könnyen váratlan karakterátalakulásokhoz vezethet, amelyek megkerülik a bemeneti szűrést
  • Egy emoji vagy más unicode karakter is képes olyan byte sorozatot létrehozni, amely a feldolgozás során HTML speciális jelekké válik
  • A teljes feldolgozási láncban konzisztens input kódolására és a normalizáció következetes ellenőrzésére van szükség
  • A kimeneti escapinget mindig a konkrét kontextushoz kell igazítani

Az eset rávilágít arra, hogy a biztonsági problémák nem mindig a klasszikus hibákból fakadnak, néha egyetlen emoji is elegendő lehet egy sikeres XSS támadáshoz.

Források

Abusing unicode characters to PWN Intigriti XSS challenge

Emoji karakterek unicode reprezentációi

Eredeti angol leírás



A weboldal statikus felépítésű, saját sütiket nem alkalmaz. A Google Analytics és Google Ads azonban használhat sütiket, melyek az oldal látogatásával automatikusan aktiválódhatnak.
Angol webooldal