
Script de varredura automática e exploração remota da CVE-2020-1971. Script de varredura local automática e aplicação de patch.
Script de Varredura Automática e Exploração Remota. Script de Varredura Local e Correção Automática.
17:03
Estou atualmente desenvolvendo os scripts e espero ter tudo pronto até esta noite. Por enquanto, este repositório contém apenas o código-fonte corrigido do OpenSSL 1.1.1i. Atualmente, estou trabalhando em um script de instalação/atualização de patch.
17:50
Script de instalação Linux Debian/Ubuntu enviado. Para instruções de instalação, veja "Instalação Linux"
18:40
O tipo X.509 GeneralName é um tipo genérico para representar diferentes tipos de nomes. Um desses tipos de nome é conhecido como EDIPartyName. O OpenSSL fornece uma função GENERAL_NAME_cmp que compara diferentes instâncias de GENERAL_NAME para verificar se são iguais ou não. Esta função se comporta incorretamente quando ambos os GENERAL_NAMEs contêm um EDIPARTYNAME. Uma desreferência de ponteiro nulo e uma falha podem ocorrer, levando a uma possível negação de serviço.
O próprio OpenSSL usa a função GENERAL_NAME_cmp para dois propósitos
Comparar nomes de pontos de distribuição CRL entre uma CRL disponível e um ponto de distribuição CRL embutido em um certificado X509
Ao verificar se o signatário de um token de resposta de carimbo de data/hora corresponde ao nome da autoridade de carimbo de data/hora (exposto através das funções da API TS_RESP_verify_response e TS_RESP_verify_token)
Se um atacante puder controlar ambos os itens sendo comparados, ele poderá desencadear uma falha. Por exemplo, se o atacante conseguir enganar um cliente ou servidor para verificar um certificado malicioso contra uma CRL maliciosa, isso pode ocorrer.
Note que alguns aplicativos baixam automaticamente CRLs com base em uma URL embutida em um certificado. Essa verificação ocorre antes da verificação das assinaturas no certificado e na CRL serem verificadas. As ferramentas s_server, s_client e verify do OpenSSL têm suporte para a opção "-crl_download" que implementa o download automático de CRL e esse ataque foi demonstrado funcionar contra essas ferramentas.
Note que um bug não relacionado significa que as versões afetadas do OpenSSL não conseguem analisar ou construir codificações corretas de EDIPARTYNAME. No entanto, é possível construir um EDIPARTYNAME malformado que o analisador do OpenSSL aceitará e, assim, desencadear esse ataque.
Todas as versões do OpenSSL 1.1.1 e 1.0.2 são afetadas por esse problema. Outras versões do OpenSSL não recebem mais suporte e não foram verificadas. Corrigido no OpenSSL 1.1.1i (afetadas 1.1.1-1.1.1h). Corrigido no OpenSSL 1.0.2x (afetadas 1.0.2-1.0.2w).
sudo chmod +x Linux_Patched_Install_From_Source_Script
Execute:
sudo ./Linux_Patched_Install_From_Source_Script
O OpenSSL "nativo" usa as APIs do Windows diretamente em tempo de execução. Para construir um OpenSSL nativo, você pode usar:
Microsoft Visual C++ (MSVC) no prompt de comando
ou
MinGW cross compiler executado no ambiente de desenvolvimento estilo GNU MSYS2 ou executado no Linux ou Cygwin
O OpenSSL "hospedado" depende de uma camada de compatibilidade POSIX externa para construção (usando shell, compilador e ferramentas GNU/Unix) e em tempo de execução. Para esta opção, você pode usar o Cygwin.
Além dos requisitos e instruções listados em INSTALL.md, estes também são necessários:
Perl. Strawberry Perl, disponível em http://strawberryperl.com/ Leia NOTES.PERL para mais informações, incluindo o uso de CPAN. Uma alternativa é o ActiveState Perl, https://www.activestate.com/ActivePerl para o qual você pode precisar construir explicitamente o módulo Perl Win32/Console.pm via https://platform.activestate.com/ActiveState e depois baixá-lo.
Compilador Microsoft Visual C.
Netwide Assembler (NASM), disponível em https://www.nasm.us Note que o NASM é o único montador suportado.
Instale o Perl
Instale o NASM
Certifique-se de que tanto o Perl quanto o NASM estejam no seu %PATH%
Use o Prompt de Comando do Desenvolvedor do Visual Studio com privilégios administrativos, escolhendo uma de suas variantes dependendo da arquitetura pretendida. Ou execute "cmd" e execute "vcvarsall.bat" com uma das opções x86, x86_amd64, x86_arm, x86_arm64, amd64, amd64_x86, amd64_arm ou amd64_arm64. Isso configura as variáveis de ambiente necessárias para nmake.exe, cl.exe, etc. Veja também https://docs.microsoft.com/cpp/build/building-on-the-command-line
Da raiz do diretório de origem do OpenSSL, execute perl Configure VC-WIN32 se você quiser OpenSSL 32 bits ou perl Configure VC-WIN64A se você quiser OpenSSL 64 bits ou perl Configure para deixar o Configure descobrir a plataforma
nmake
nmake test
nmake install
Para obter as instruções completas de instalação, ou se algo der errado em qualquer etapa, verifique o arquivo INSTALL.md.
Os diretórios de instalação padrão são derivados de variáveis de ambiente.
Para VC-WIN32, os seguintes padrões são usados:
PREFIX: %ProgramFiles(86)%\OpenSSL
OPENSSLDIR: %CommonProgramFiles(86)%\SSL
Para VC-WIN64, os seguintes padrões são usados:
PREFIX: %ProgramW6432%\OpenSSL
OPENSSLDIR: %CommonProgramW6432%\SSL
Caso essas variáveis de ambiente não existam (em uma instalação puramente Win32, por exemplo), estes substitutos são usados:
PREFIX: %ProgramFiles%\OpenSSL
OPENSSLDIR: %CommonProgramFiles%\SSL
NOTE TAMBÉM que esses diretórios geralmente são protegidos contra gravação, mesmo se sua conta estiver no grupo Administradores. Para contornar isso, inicie o prompt de comando clicando com o botão direito e escolhendo "Executar como Administrador" antes de executar 'nmake install'. A outra solução é, obviamente, escolher um conjunto diferente de diretórios usando --prefix e --openssldir ao configurar.
Os destinos UWP suportam apenas a construção das bibliotecas estática e dinâmica.
Você deve definir o tipo de plataforma como "uwp" e a arquitetura alvo via "vcvarsall.bat" antes de compilar. Por exemplo, se você quiser compilar compilações "arm64", execute "vcvarsall.bat x86_arm64 uwp".
Referências são fornecidas para conveniência do leitor para ajudar a distinguir entre vulnerabilidades.
https://www.debian.org/security/2020/dsa-4807FREEBSD:FreeBSD-SA-20:33URL
https://security.FreeBSD.org/advisories/FreeBSD-SA-20:33.openssl.asc