For the English version of this alert, click here.
Allele Security Alert
ASA-2019-00375
Identificador(es)
ASA-2019-00375, CVE-2019-12830
Título
Stored Cross-Site Scripting (XSS) através do bbcode video
Fabricante(s)
MyBB Group
Produto(s)
MyBB
Versão(ões) afetada(s)
MyBB versão anterior a 1.8.21
Versão(ões) corrigida(s)
MyBB versão 1.8.21 ou posterior
Prova de conceito
Desconhecido
Descrição
Existe uma vulnerabilidade de Stored Cross-Site Scripting (XSS) que ocorreu devido a um erro de análise em postagens e mensagens privadas no MyBB 1.8.20 e versões anteriores.
Detalhes técnicos
O MyBB tem um processo de 3 passos para analisar e renderizar tópicos, posts e mensagens privadas. O objetivo deste processo é higienizar a entrada do usuário e renderizar os chamados mycodes ou bbcodes. Bbcodes são uma maneira simples de os usuários do fórum incorporarem, por exemplo, imagens, links e vídeos nas postagens.
O processo começa simplesmente escapando todas as tags HTML e aspas duplas. Em seguida, ele converterá todos os mycodes de vídeo em tags iframe que incorporam vídeos de por exemplo, Youtube. A razão pela qual os bbcodes de vídeo são renderizados em uma única etapa é porque eles podem ser desabilitados pelos administradores (eles são habilitados por padrão). Finalmente, ele converterá todos os outros mycodes, como url, quote e email em marcação HTML.
O fato de que os códigos BB de vídeo foram convertidos em marcação HTML em uma etapa diferente de todos os outros BBCodes leva à ideia de que é possível criar um bbcode de vídeo que resulte em marcação HTML que contenha outros códigos de acesso em seus atributos.
A ideia é que o MyBB substitua o código do URL url no src do iframe com mais código HTML contendo aspas duplas (“), corrompendo o HTML e levando a uma injeção de atributo.
Como pode ser visto, o atributo src do iframe é fechado pelo atributo href injetado e sua cotação. Isso agora leva ao manipulador de eventos onload sendo injetado na tag HTML iframe.
Normalmente, não seria possível injetar códigos bb dentro de outros códigos bb, pois os filtros regex estão em vigor para evitar esses ataques. No entanto, o método de retorno de chamada que é responsável por renderizar bbcodes de vídeo chama urldecode() no URL do vídeo que deve ser incorporado (por exemplo, youtube.com/xyz). Isso é mostrado no seguinte trecho de código:
inc/class_parser.php function mycode_parse_video($video, $url) 1385 { 1386 global $templates; 1387 1388 if(empty($video) || empty($url)) 1389return ""; 1390 1391 $parsed_url = @parse_url(urldecode($url)); 1392 1393 // [...] 1394
O fato de o URL do vídeo ser codificado por url permite ignorar a proteção de regex e injetar um código de url da url, conforme descrito acima, por meio de URL codificado. Isso leva a um manipulador de eventos onload sendo injetado na tag <iframe>. Esse manipulador de eventos é acionado assim que a página dentro do iframe é carregada, portanto, nenhuma interação do usuário é necessária para acionar o código JavaScript malicioso.
Solução alternativa
Desconhecido
Créditos
Simon Scannell (RIPS Techonologies)
Referência(s)
MyBB 1.8.21 Released — Security & Maintenance Release
https://blog.mybb.com/2019/06/10/mybb-1-8-21-released-security-maintenance-release/
MyBB <= 1.8.20: From Stored XSS to RCE
https://blog.ripstech.com/2019/mybb-stored-xss-to-rce/
MyBB 1.8.21
https://github.com/mybb/mybb/commit/44fc01f723b122be1bc8daaca324e29b690901d6
CVE-2019-12830
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-12830
CVE-2019-12830
https://nvd.nist.gov/vuln/detail/CVE-2019-12830
Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.
Última modificação: 25 junho 2019