SecurityPatch 9652: Possíveis problemas após a aplicação do SUPEE-9652


16

Magento lançou seu patch de segurança SUPEE-9652, para Magento 1.x CE e EE

Eu só quero saber quais são os possíveis problemas após a aplicação desse patch de segurança e quais são as novas alterações nesse patch de segurança?

Respostas:


25

É um patch super minúsculo, aqui está o diff:

diff --git lib/Zend/Mail/Transport/Sendmail.php lib/Zend/Mail/Transport/Sendmail.php
index b24026b..9323f58 100644
--- lib/Zend/Mail/Transport/Sendmail.php
+++ lib/Zend/Mail/Transport/Sendmail.php
@@ -119,14 +119,19 @@ class Zend_Mail_Transport_Sendmail extends Zend_Mail_Transport_Abstract
                 );
             }

-            set_error_handler(array($this, '_handleMailErrors'));
-            $result = mail(
-                $this->recipients,
-                $this->_mail->getSubject(),
-                $this->body,
-                $this->header,
-                $this->parameters);
-            restore_error_handler();
+            // Sanitize the From header
+            if (!Zend_Validate::is(str_replace(' ', '', $this->parameters), 'EmailAddress')) {
+                throw new Zend_Mail_Transport_Exception('Potential code injection in From header');
+            } else {
+                set_error_handler(array($this, '_handleMailErrors'));
+                $result = mail(
+                    $this->recipients,
+                    $this->_mail->getSubject(),
+                    $this->body,
+                    $this->header,
+                    $this->parameters);
+                restore_error_handler();
+            }
         }

         if ($this->_errstr !== null || !$result) {

Contudo, Peter O'Callaghan (o primeiro) parece ter encontrado um bug. Ele gentilmente compartilhou os detalhes comigo e disse que eu poderia compartilhar com você aqui, então aqui está :

O melhor que posso dizer é que o valor de $this->paramssempre será prefixado -fno ponto em que a validação foi adicionada (é passada para o construtor no ponto em que o caminho de retorno é adicionado). Portanto, no momento em que é passado para a validação, se eu configurei meu email contact@me.com, o valor que está realmente sendo validado é -fcontact@me.com, parece mais um acaso do que uma intenção que isso valide como um endereço de email. Se meu endereço de e-mail fosse "example"@example.com, isso se tornaria -f"example"@example.com, o que não será validado. Aliás, str_replaceparece completamente redundante nesse assunto, uma vez que o espaço AFAIK pode ser usado apenas em conjunto com aspas, e e-mails com aspas não serão validados com o-fprefixo. De fato, se não fosse o prefixo, o str_replace e validate não seriam úteis porque, "foo bar"@example.come "foobar"@example.comambos validam, já que o último nunca é atribuído a nada após a substituição, o e-mail ainda será enviado usando o antigo valor, que presumivelmente ainda estaria vulnerável.

Duas outras coisas a ter em mente:

Nota

A nova versão correspondente do Magento CE 1.9.3.2 também inclui a atualização do ano dos comentários de direitos autorais (de 2016 a 2017), de modo que quase todos os arquivos do Magento foram atualizados e o diff parece enorme


2
"Contanto que você tenha as configurações de email desabilitadas", quais são essas configurações no painel do administrador? Só para me salvar mergulho através Sys> Configuração sem ter tido meu café :)
Luke Rodgers

2
@LukeRodgers consulte esta publicação no blog para obter detalhes: magento.com/security/news/…
Raphael no Digital Pianism

1
"atualização do ano dos comentários de direitos autorais (de 2016 a 2017), para que quase todos os arquivos do Magento tenham sido atualizados", isso é verdade @Raphael no Digital Pianism
Amit Bera

1
@Icon bem se você verificar o nome do arquivo de patch já é v2 ^^ assim possivelmente um v3 ainda não ETA
Raphael em Digital pianismo

1
Para o registro, é extremamente improvável que afete qualquer uso legítimo e o AFAIK (sem ver a carga útil enviada), impediria a exploração em todos os casos (embora a razão real para isso pareça não intencional ou uma escolha extremamente estranha). É só que ele bloqueia todos os e-mails nos quais a parte local está entre aspas, ou seja "example"@example.com, endereços de formulário, independentemente de serem tecnicamente perigosos. Eu ficaria surpreso se houver algum armazenamento legítimo usando esse tipo de email, mas desejássemos as informações disponíveis no caso.
Peter O'Callaghan

8

Pequena dica para atualização; depois de copiar a nova versão na instalação existente, execute git diff -w --stat=400 | grep -v " 2 +”para ver rapidamente as diferenças que contêm mais alterações do que apenas as alterações no aviso de direitos autorais.


4

O patch de segurança 9652 afeta apenas o seguinte arquivo:

/lib/Zend/Mail/Transport/Sendmail.php

1

Para quem gosta de saber o que fazer sem o acesso SSH: edite o arquivo /lib/Zend/Mail/Transport/Sendmail.php

da linha 122 em diante, substitua isto:

        set_error_handler(array($this, '_handleMailErrors'));
        $result = mail(
            $this->recipients,
            $this->_mail->getSubject(),
            $this->body,
            $this->header,
            $this->parameters);
        restore_error_handler();

com isso:

        // Sanitize the From header
        if (!Zend_Validate::is(str_replace(' ', '', $this->parameters), 'EmailAddress')) {
            throw new Zend_Mail_Transport_Exception('Potential code injection in From header');
        } else {
            set_error_handler(array($this, '_handleMailErrors'));
            $result = mail(
                $this->recipients,
                $this->_mail->getSubject(),
                $this->body,
                $this->header,
                $this->parameters);
            restore_error_handler();
        }

4
hm, para aqueles sem acesso SSH. talvez você deva corrigir localmente e fazer upload do arquivo corrigido. ;)
infabo

Para obter orientações completas sobre o patch sem acesso SSH, consulte esta resposta aqui: magento.stackexchange.com/a/63936/3326
7ochem
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.