¿Cuáles son las prácticas recomendadas para la firma de código?
La firma de código verifica la identidad del desarrollador o editor del software y garantiza la integridad del código desde el momento de la firma hasta el de la descarga. Esto demuestra que el código es de confianza. Por desgracia, los ciberdelincuentes siempre están intentando interferir con las prácticas recomendadas para la firma de código con el objetivo de introducir malware en el código de confianza.
Estas son algunas de las prácticas recomendadas para mitigar el riesgo de ataque:
- Almacenar las claves de forma segura: si la clave privada de firma de una empresa sufre un ataque o alguien la roba, puede utilizarse para firmar software infectado con malware, de modo que el software publicado queda registrado como software legítimo de esa empresa. Por eso, las claves privadas deben protegerse en un módulo seguro de hardware (HSM) o cifrarse en reposo. Según los requisitos del CA/Browser (CA/B) Forum, las claves que sirven para garantizar la confianza pública deben almacenarse en un HSM.
- Aplicar controles de acceso para las claves y firmas: establezca políticas y aplique controles de acceso a las claves para que solo los desarrolladores y los usuarios autorizados puedan firmar con claves específicas cuando sea necesario. Genere claves en la nube para que no se puedan compartir, perder ni robar. Aplique la separación de funciones, es decir, separe las responsabilidades de quienes generan las claves de las de quienes firman. Implemente la autenticación multifactor (MFA) para garantizar que la persona que accede a las firmas es quien dice ser. Revoque el acceso del personal que ya no trabaje en la empresa o que ya no necesite acceder a las firmas o a la generación de claves.
- Supervisar y auditar los flujos de trabajo de firma de código: controle quién firmó qué y cuándo, para detectar rápidamente las firmas no autorizadas y tomar las medidas correctivas adecuadas. Audite periódicamente todas las actividades relacionadas con los pares de claves como, por ejemplo, la generación, las operaciones relativas a los certificados y la asignación del acceso a claves y firmas.
- Mantenerse al día de los estándares criptográficos y aplicar las políticas pertinentes en toda la empresa: los requisitos del sector van cambiando para ayudar a las empresas a anticiparse a las amenazas. Los nuevos requisitos del CA/Browser Forum, en vigor desde el 1 de junio de 2021, establecen utilizar como mínimo una clave RSA de 3072 bits para los certificados de confianza pública de firma de código y de sellado de tiempo. Sin embargo, puede que los desarrolladores y usuarios de una empresa que generan claves o firman código no estén al corriente de los cambios. De ahí que las empresas deban aplicar los requisitos del sector para evitar que los usuarios generen claves o soliciten certificados con algoritmos, tamaños de clave o curvas débiles o no conformes con la normativa.
- Automatizar la firma de código en los procesos del ciclo de desarrollo de software (SDLC): integre y automatice las firmas en los procesos de SDLC, como por ejemplo los ciclos de CI/CD, para reducir el riesgo de que haya código sin firmar o de que las firmas no sean conformes a la normativa. Para crear software seguro y conforme con la normativa a un ritmo de desarrollo tan rápido como el actual, junto con la automatización se pueden establecer controles de seguridad.
- Comparar las firmas de diferentes servidores de compilación: los recientes ataques a la cadena de suministro de software han causado importantes interrupciones operativas y perturbaciones financieras en importantes empresas de todo el mundo. Los ciberdelincuentes se infiltran en las operaciones de desarrollo de las empresas atacadas e introducen malware en el código durante el SDLC. Posteriormente, este código alterado se publica y se acaba implementando en los sistemas de los clientes. Firme y compare el hash del software de diferentes servidores de compilación antes de publicarlo para averiguar si hay discrepancias entre las compilaciones de los servidores. Si dos o más compilaciones son idénticas, significa que las compilaciones son seguras y que no contienen código desconocido.
- Revocar certificados en riesgo: si descubre claves en riesgo o malware firmado, notifíquelo a su autoridad de certificación (CA). Será necesario revocar el certificado de firma de código, lo que invalidará el software y detendrá la propagación del malware.
- Añadir una marca de fecha al código firmado: evite el riesgo de que el software caduque de forma imprevista cuando lo haga el certificado de firma de código. Los certificados de firma de código tienen una validez de 1 a 3 años. Cuando caduca un certificado de firma de código, también caduca la validez del software firmado, a no ser que al software se le haya añadido una marca de fecha en el momento de la firma. De ser así, el sistema registra la marca de fecha y el software sigue siendo válido mientras esté en producción. Otra razón para añadir marcas de fecha al código es que así se minimiza el impacto de la revocación de un certificado. Si se descubre malware y hay que revocar el certificado asociado, la marca de fecha mitigará las consecuencias, ya que la revocación solo afectará al software publicado después de la fecha del ataque.