Entendendo as vulnerabilidades do SVG no Wordpress relacionadas a uma correção específica

3

Eu habilitei o upload de SVG para o meu logotipo Wordpress usando a resposta fornecida em este link de pilha , apesar de ter lido, em vários lugares, que o suporte ao SVG em um site do Wordpress o abre para ataques de script. Aqui está apenas uma dessas fontes:

Por que razões de segurança são svgs bloqueados no uploader de mídia?

Minha pergunta é tripla:

1) Pelo que entendi, o hack que eu usei (baseado em o link acima ) permite-me fazer upload de SVGs para o logotipo. Isso também significa que os usuários finais (não administradores) podem enviar SVGs maliciosos que podem causar danos reais ao meu site se eu permitir que eles façam upload de arquivos?

2) Se permitir que os usuários façam upload de arquivos SVG maliciosos, existe algum outro código que eu possa usar para defender meu site de ataques?

3) Se houver uma vulnerabilidade introduzida pela correção do SVG que eu usei, que tipo de dano um hacker poderia fazer? Que tipo de comandos precisaria acontecer para acionar os scripts maliciosos?

Obrigado!

    
por CoderScissorhands 23.11.2016 / 17:21

2 respostas

6

Este artigo tem ótimas respostas para suas perguntas. Recomendamos vivamente que o consulte para saber mais sobre a dimensão deste problema, mas posso dar uma breve explicação.

O SVG, como é baseado em XML, torna muito difícil decifrar o que é e o que não é malicioso. De um lado, ele abre ataques XSS e, de outro, ele pode realmente oferecer um ataque DoS.

Ele faz uma referência a este boletim Wordpress Trac discutindo segurança SVG por um longo tempo, aparentemente sem fim no site.

De qualquer forma, para responder às suas perguntas:

  1. Minha reação instintiva é não, mas realmente depende do que seus usuários finais são capazes de fazer. Se eles não têm acesso ao upload de nada, então você está bem. Se isso acontecer, depende do que você está usando para analisar o sistema de upload de arquivos front-end. Principalmente, trata-se de usuários reais do WP que têm a capacidade de fazer upload de itens e de como você confia totalmente neles para não fazer upload de algo malicioso.

  2. Existe um plugin chamado SVG seguro baseado em uma biblioteca chamada SVG Sanitizer . Verifique o readme em ambos para entender melhor o que pode / não pode evitar.

  3. O dano pode ser qualquer coisa, desde informações de recorte até derrubar seu servidor de hospedagem. Eu o encaminho de volta para o artigo original ao qual eu me liguei. A profundidade do que pode acontecer quando você abre um SVG é bastante aberto.

Os SVGs são o futuro e eu os uso em todos os sites que eu construo, mas normalmente não permitem que eles sejam enviados somente porque eles geralmente podem ser codificados no tema.

Eu permiti uploads SVG em sites que precisam ser mais fluidos, mas acho que posso apreciar a ideia de que ele não está habilitado por padrão, já que posso contar em uma mão o número de vezes que foi necessário.

    
por socki03 23.11.2016 / 17:44
4

Como é explicado na outra resposta, permitir aos usuários fazer upload de arquivos SVG pode ser um risco de segurança em geral, não é um problema específico no WordPress. Mas observe que você está usando uma configuração de customizador, portanto, não permite o upload de SVG para todos os usuários, apenas para usuários que podem acessar o personalizador de temas.

Por padrão, somente usuários com edit_theme_options capability podem acessar o customizador de temas e, por padrão, somente os administradores têm esse recurso. Então, nesse contexto, os riscos são realmente mínimos; os administradores devem saber o que estão fazendo.

E você pode controlar exatamente quais usuários podem acessar as seções e configurações do personalizador usando o argumento capability de WP_Customize_Manager::add_section() e WP_Customize_Manager::add_setting() métodos:

  $wp_customize->add_section( 'mytheme_options', 
     array(
        'capability' => 'edit_theme_options', // Change this if you wish
     ) 
  );

  $wp_customize->add_setting( 'some_setting',
     array(
        'capability' => 'edit_theme_options', // Change this if you wish
     ) 
  );
    
por cybmeta 23.11.2016 / 18:23

Tags