- Spegnimento
- 23 settembre 2026 alle ore 10:03 UTC
- Autore
- Kamo
- Impegno
- 617c224
MeetProviderController's GET /oauth/callback è senza sessione e riflette il errore descrizione del fornitore in un blocco <script> in linea. Il vecchio jsString() solo sfuggito backslash/quote/newline, quindi un valore a forma di </script> >... </script> ha terminato l'elemento in anticipo e ha eseguito l'HTML dell'attaccante sul pubblico host gateway API (probato dal vivo e confermato verbatim riflesso, nessun auth richiesto). jsString() ora scappa anche < > & / e i terminatori linea JS U+2028/U+2029 come \u sfugge, perché il tokenizer HTML cerca un nudo </script mentre lettura del contenuto di script, prima di avere alcuna nozione di JS string quoting - tenere i byte fuori dall'output completamente è quello che lo ferma, non meglio JS citando. La pagina del risultato contiene anche ora un nonce per risposta sulla sua <script> tag e un'intestazione restrittiva corrispondente Content-Security-Policy, come secondo strato nel caso in cui un evasore abbia mai un divario. postMessage ancora bersagli '*': questo endpoint è l'host gateway condiviso per ogni inquilino, compresi org su il proprio dominio personalizzato, quindi non c'è un'origine apribile singola per spillare, e l'ascoltatore di kamo-internal già tratta la consegna come miglior sforzo per il stesso motivo. Coperto da una mutazione controllata contro il vecchio scappamento (ritorno gira la nuova asserzione </script>-boundary rosso).
