
Script do Zeek para detetar servidores vulneráveis ao CVE-2020-13777
Este script realiza um teste simples para verificar se um servidor é potencialmente vulnerável ao CVE-2020-13777.
O CVE-2020-13777 faz com que o GnuTLS crie tickets de sessão não criptografados. Isto parece ser detectável verificando se o gnutls define o key_name como zero - para o qual usa os primeiros 16 bytes do ticket de sessão. Este script verifica se:
Ambos os casos indicam que um servidor está a utilizar uma versão vulnerável do GnuTLS.
Os casos encontrados são escritos no notice.log. Exemplo de saída:
1591660828.497706 CHhAvVGS1DHFjwGM9 ::1 58800 ::1 5556 - - - tcp CVE_2020_13777::CVE_2020_13777_Server Server potentially vulnerable to CVE-2020-13777 detected - ::1 ::1 5556 - - Notice::ACTION_LOG 3600.000000 - - - - -
1591660837.423412 ClEkJM2Vm5giqnMf4h ::1 58802 ::1 5556 - - - tcp CVE_2020_13777::CVE_2020_13777_Resumed Server potentially vulnerable to CVE-2020-13777 detected; client resumed with suspicious session ticket - ::1 ::1 5556 - - Notice::ACTION_LOG 3600.000000 - - - - -
Os avisos são desduplicados e registados apenas uma vez por default_suppression_interval (padrão: 1 hora) para cada servidor.
Para instalar via zkg, basta usar
zkg install 0xxon/cve-2020-0601
Este script funciona apenas para conexões TLS 1.2 (ou inferior). Não alertará sobre servidores vulneráveis que usam TLS 1.3. O
Este script não foi extensivamente testado. Funciona com os meus dados de teste auto-gerados e deve encontrar servidores vulneráveis. Existe a possibilidade de gerar falsos positivos com diferentes softwares de servidor, mas isso é pouco provável.