Por qué Let’s Encrypt tuvo que revocar más de 3 millones de certificados

Let’s Encrypt se convirtió, en muy poco tiempo, en un gran competidor para las entidades de certificación históricas como DigiCert y Comodo (ahora Sectigo). Let’s Encrypt ofrece certificados SSL/TLS gratuitos, y cuentan con soporte de Cisco, GitHub, Google, y Mozilla, entre otros.

Hace tan solo unos días anunciaban haber llegado a la marca de los 1000 millones de certificados emitidos. Sin embargo, el festejo duró poco.

Dos días después del anuncio, el 29 de Febrero, encontraron un bug en Boulder, su sistema de validación y emisión de certificados. El bug afectó al módulo de CAA, responsable de validar que el dominio para el que se está por emitir el certificado permita que la entidad de certificación (Let’s Encrypt en este caso) esté autorizada a hacerlo.

Por ejemplo, el dominio pablofain.com autoriza a Let’s Encrypt y a otras dos entidades a emitir certificados para todos sus subdominios:

pablofain.com. 299 IN CAA 0 issue "comodoca.com"
pablofain.com. 299 IN CAA 0 issue "digicert.com"
pablofain.com. 299 IN CAA 0 issue "letsencrypt.org"

Incluso autoriza la emisión de certificados del tipo wildcard a las mismas entidades:

pablofain.com. 299 IN CAA 0 issuewild "comodoca.com"
pablofain.com. 299 IN CAA 0 issuewild "digicert.com"
pablofain.com. 299 IN CAA 0 issuewild "letsencrypt.org"

Teniendo en cuenta este caso, si yo decidiera emitir un certificado a través de la entidad de certificación de GoDaddy (GoDaddy Class 2 Certification Authority Root Certificate – G2), el proceso fallaría. Pueden leer más acerca del funcionamiento del registro CAA en este post.

El bug

Cuando una solicitud de certificado contiene N nombres de dominio (por ej. dominio1.example.org, dominio2.example.org, dominio3.example.org), Boulder tiene que validar nuevamente cada nombre de dominio. Sin embargo, elegía uno solo y lo verificaba N veces (siendo N la cantidad de nombres de dominio en la solicitud). 

Una vez que el proceso de validación había sido superado, Let’s Encrypt podía emitir nuevos certificados para esos nombres de dominio durante los siguientes 30 días, incluso si el registro CAA había cambiado.

Let’s Encrypt confirmó que el bug se introdujo en julio de 2019 y, en consecuencia, decidió revocar el 2,6% de los certificados que aun se encuentran activos el día 04 de Marzo de 2020, a las 3 PM EST (5 PM hora de Argentina) . Esto representa aproximadamente 3 millones de certificados,

Dado que el período de validación de los certificados emitidos por Let’s Encrypt es de 90 días -mucho más corto que el de otras entidades de certificación-, el número de certificados afectados es relativamente bajo.

Qué hacer

Let’s Encrypt envió una notificación por correo electrónico a los contactos de los certificados -siempre y cuando una dirección de e-mail haya sido provista durante la solicitud de emisión-.

Como alternativa, los usuarios pueden verificar si sus dominios se encuentran afectados por este bug ingresando a https://checkhost.unboundtest.com.

Actualización: Let’s Encrypt, a través de su cuenta de Twitter, confirmó que ha decidido no revocar alrededor de 1 millón de certificados que aun no han sido reemplazados. Éstos serán revocados tan pronto como se confirme la existencia de nuevos certificados para los dominios afectados.

Featured Photo by Markus Spiske on Unsplash.

Dejar una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.