CSP bypass: self + 'unsafe-inline' with Iframes
Uma configuração como:
Proíbe o uso de quaisquer funções que executem código transmitido como uma string. Por exemplo: eval, setTimeout, setInterval
serão todos bloqueados devido à configuração unsafe-eval
Qualquer conteúdo de fontes externas também é bloqueado, incluindo imagens, CSS, WebSockets e, especialmente, JS
Via Texto & Imagens
Observa-se que navegadores modernos convertem imagens e textos em HTML para melhorar sua exibição (por exemplo, definindo fundos, centralizando, etc.). Consequentemente, se um arquivo de imagem ou texto, como favicon.ico
ou robots.txt
, for aberto via um iframe
, ele é renderizado como HTML. Notavelmente, essas páginas geralmente não possuem cabeçalhos CSP e podem não incluir X-Frame-Options, permitindo a execução de JavaScript arbitrário a partir delas:
Via Errors
Da mesma forma, respostas de erro, como arquivos de texto ou imagens, geralmente vêm sem cabeçalhos CSP e podem omitir X-Frame-Options. Erros podem ser induzidos a carregar dentro de um iframe, permitindo as seguintes ações:
Após acionar qualquer um dos cenários mencionados, a execução de JavaScript dentro do iframe é alcançável da seguinte forma:
Referências
Last updated