Publicar los detalles de una vulnerabilidad antes de que esté disponible la corrección ayuda más a los atacantes que a los defensores. Seguridad guarda los detalles de cada hallazgo que no es público dentro de Coroid, y solo quien tenga autorización decide cuándo hacerlos visibles.
Público y no público
Cada hallazgo pertenece a uno de estos dos tipos:
- Público: la vulnerabilidad ya ha sido publicada, por ejemplo una dependencia con un aviso publicado. Las solicitudes de extracción de corrección pueden mencionar dicho aviso.
- No público: todo lo demás, como un problema detectado durante la auditoría, por Coroid Review o por una regla de código en tu propio código, o una credencial filtrada.
Un hallazgo es público solo cuando está vinculado a un aviso publicado que no haya sido retirado, o cuando un propietario o administrador publique su corrección privada (más abajo).
La puerta de publicación
Todo lo que Coroid publica fuera de Coroid pasa primero por la puerta de publicación: cuerpos de revisión, comentarios y resúmenes de revisión en línea, resultados de comprobaciones y sus anotaciones, títulos y descripciones de pull request, mensajes de confirmación, comentarios de incidencias, mensajes de Slack y correo electrónico, y exportaciones. La puerta analiza cualquier incidencia de seguridad en el texto, ya sea confirmada o no.
En un repositorio público, o en uno cuya visibilidad Coroid no pueda confirmar, una incidencia que no es pública se reemplaza por una línea neutra con un enlace:
Coroid encontró una posible incidencia de seguridad; los detalles están en Coroid.
En un repositorio privado, el texto se publica. Una incidencia que aún no ha sido confirmada se marca como "Reclamación de seguridad no verificada: Coroid aún no la ha verificado."
Las credenciales siempre se redactan, en cualquier lugar. Consulta Secretos filtrados.
Visibilidad del repositorio
Coroid considera un repositorio como privado solo cuando tiene una lectura clara y reciente que indique que es privado, proveniente de eventos de GitHub o al preguntar directamente a GitHub, con menos de una hora de antigüedad. Un repositorio interno se considera público. Si Coroid no puede determinarlo, trata el repositorio como público.
Notificaciones y exportaciones
- Campana: para una incidencia que no es pública, la campana indica solo la gravedad y el proyecto, por ejemplo "Se necesita atención para un hallazgo crítico", con un enlace a la incidencia en Seguridad.
- Slack y correo electrónico solo incluyen una línea que indica que se necesita atención para una incidencia, y el enlace. Nunca contienen información sobre la vulnerabilidad ni el código.
- Exportaciones: la exportación CycloneDX lista las vulnerabilidades solo para hallazgos públicos. El paquete de configuración de la organización no incluye ningún hallazgo.
Corregir en un repositorio público
En un repositorio privado, una corrección para una incidencia que no es pública es una solicitud de extracción normal de pull request. Sus mensajes de confirmación y descripción describen la corrección, no el ataque.
En un repositorio público, o en uno cuya visibilidad Coroid no pueda confirmar, un pull request, una rama o una confirmación pública revelaría el problema antes de que se corrigiera. Por eso Coroid no realiza allí esa corrección. La tarea de corrección se detiene con un motivo que no revela detalles del hallazgo, y el cambio preparado se conserva como un corrección privada.
Correcciones privadas
Un hallazgo con corrección privada se muestra bajo Correcciones privadas. Solo los propietarios y administradores pueden verlo.
- Descargar la corrección guarda el cambio preparado como un archivo
.patch, para que lo revises o apliques tú mismo. - Publicar registra que la incidencia ahora está divulgada y crea una tarea que aplica el cambio preparado sin modificaciones y abre su pull request. Publica cuando estés listo para que la corrección y la incidencia se hagan públicas, por ejemplo una vez que se alcance una fecha de lanzamiento coordinada. Una corrección demasiado grande para publicarse desde Coroid todavía puede descargarse y aplicarse manualmente.
- Descartar elimina el cambio preparado.
La publicación y el descarte se registran en el registro de auditoría de la organización, y ambos eliminan el cambio preparado de Coroid.
Una corrección privada que nadie publique o descarte se conserva por un tiempo limitado. Después de 180 días, se recordará a los propietarios y administradores. Después de 365 días, se eliminará y se les informará.
Planificado
- Contactos de seguridad por proyecto, quienes pueden revisar y publicar correcciones privadas junto con los propietarios y administradores.
- Forks privados de GitHub: preparar una corrección en un fork privado del aviso de seguridad de un repositorio GitHub, con su prueba de regresión, en lugar de guardarla en Coroid.
- Informes a los mantenedores: cuando una vulnerabilidad se encuentra en el código de una dependencia, se redacta un informe privado para sus mantenedores, el cual solo envía una persona.