Únase a Keyfactor en la RSA Conference™ 2024 | del 6 al 9 de mayo | Más información

La firma de código es una herramienta valiosa, si es segura

Firma de códigos

Este artículo fue publicado originalmente por Security Magazine.

Hoy en día, casi todo depende del código. Software impregna prácticamente todos los aspectos de nuestras vidas, desde los productos y máquinas que utilizamos cada día hasta la infraestructura crítica que sustenta a la sociedad en su conjunto. Es difícil imaginar una empresa, organismo público, entidad o dispositivo que no dependa de alguna manera de software .

Hubo un tiempo en el que los usuarios finales podían confiar en las software que descargaban. Por desgracia, ya no es así. A medida que los piratas informáticos y otros ciberdelincuentes se vuelven cada vez más expertos en el arte de propagar malware, incluso a los profesionales de las tecnologías de la información (TI) les resulta difícil saber si el producto software que han adquirido es legítimo. Por no hablar de las actualizaciones automáticas de software por parte de portátiles, móviles y dispositivos del Internet de las Cosas (IoT).

Gracias a la adopción de la integración continua y la entrega continua (CI/CD) y a las herramientas de automatización de la creación y las pruebas, los equipos de aplicaciones y operaciones se mueven más rápido que nunca, lo que significa que hay menos ojos humanos con una línea de visión directa de lo que está sucediendo a lo largo de la canalización. Los malhechores se han dado cuenta de ello y buscan puntos débiles en estos entornos complejos y de rápido movimiento, inyectando o modificando código malicioso en prácticamente cualquier punto de la cadena de suministro de software . Puede tratarse de cualquier cosa que se introduzca o afecte al código desde el desarrollo, pasando por el proceso CI/CD de una organización, hasta su despliegue en producción (es decir, en las dependencias de software , en el repositorio de código fuente de una organización o comprometiendo los servidores de compilación).

Aquí es donde entra en juego la firma de código.

Autenticidad, integridad y confianza: Por qué la firma de código es importante para la seguridad

La firma de código es un método criptográfico utilizado por los desarrolladores para demostrar que un fragmento de software es auténtico. Protege contra la alteración del código y crea una cadena de confianza. Al igual que un certificado SSL sirve como forma de autenticación para identificar un sitio web, un certificado de firma de código es una clase especial de certificado digital utilizado por los desarrolladores para firmar aplicaciones y software.

Un certificado de firma de código permite a cualquier destinatario de software verificar su legitimidad confirmando información como el nombre de la empresa que ha desarrollado software , algo parecido a un carné de conducir en el mundo digital.

Una vez que software está firmado con un certificado de firma de código, significa que cualquier versión de software que tenga esa firma válida no ha sido alterada por terceros. Confirmar que un cuerpo de trabajo no ha sido alterado en tránsito es tan importante porque cualquier alteración del código software podría indicar la presencia de actividad maliciosa. El código firmado significa que lo que los usuarios finales ven y experimentan es exactamente lo que el creador de software pretendía.

Evitar que el código se vea comprometido

La confianza y la integridad de la firma de código dependen totalmente de la seguridad de las claves de firma de una organización. En el actual entorno de amenazas, las claves privadas vinculadas a los certificados de firma de código son uno de los mayores robos que puede hacer un pirata informático, ya que hacerse con esta parte del certificado de firma de código significa que puede crear un nuevo software que parezca legítimo y procedente de una fuente de confianza.

Una sola brecha en esta cadena de confianza puede causar graves daños a una empresa. El proceso de revocar y reemitir certificados rápidamente, notificar a los usuarios afectados y enviar una actualización recién firmada es costoso. Por no hablar de que restablecer la confianza de los usuarios, socios comerciales e inversores puede ser un proceso largo y arduo.

Además del robo de claves, otras vulnerabilidades habituales son las infracciones de firma y el uso indebido interno. Los piratas informáticos pueden firmar código malicioso incluso sin robar las claves privadas correspondientes si consiguen entrar en una estación de trabajo de desarrollador que tenga acceso abierto a las claves de firma de código. Una vez que esto ocurre, pueden simplemente enviar su software para su firma y publicación. Además, si un desarrollador tiene acceso abierto a la clave de firma de código correspondiente y accidentalmente la utiliza mal o la pierde, puede crear una abertura para que los hackers se infiltren en las operaciones.

Una vez que los equipos de seguridad reconocen y comprenden estas vulnerabilidades, hay una serie de medidas que pueden tomar para protegerse contra ellas, creando más confianza en la cadena de suministro software .

1. Equilibrar el acceso de los promotores

El reto más común al que se enfrentan las organizaciones es implantar la firma de código de forma que satisfaga eficazmente las necesidades tanto de los desarrolladores como de los equipos de seguridad informática. Dar demasiado acceso a los desarrolladores puede hacer que el proceso sea vulnerable a los ataques. Sin embargo, un acceso demasiado reducido crea fricciones en el proceso de desarrollo, y es probable que los equipos eludan las políticas de seguridad. Conseguir el equilibrio adecuado requiere una protección completa de las claves privadas de firma de código, de modo que permanezcan en una ubicación segura y sólo puedan acceder a ellas los usuarios restringidos.

2. Aumentar la visibilidad y el control de los equipos de seguridad

A menudo, los equipos de seguridad carecen de visibilidad y control sobre los procesos de firma. La implantación de una tecnología capaz de centralizar la visibilidad y el control para facilitar a los equipos de seguridad la auditoría de todo puede contribuir en gran medida a resolver este problema. Contar con la tecnología adecuada puede ayudar a los equipos de seguridad a realizar un seguimiento y supervisar las actividades de firma de código, crear un registro de auditoría para los certificados de firma de código y los intentos de firma, y centralizar y estandarizar las políticas sobre quién puede firmar código.

3. Integrar las actividades de firma de código en los procesos de desarrollo

La mejor forma de garantizar que los desarrolladores no eludan las políticas de seguridad o se expongan accidentalmente a riesgos es integrar las actividades de firma de código en sus procesos DevOps existentes. Esto debería incluir la integración de cualquier herramienta de firma con herramientas DevOps, la habilitación de capacidades de firma remota para equipos distribuidos y la introducción de comprobaciones y verificaciones que deben tener lugar antes de que se lleve a cabo cualquier firma de código.

4. Evaluar continuamente las actividades de firma de código

La firma de código es un proceso continuo. Los certificados caducan en algún momento, las claves y los algoritmos pueden debilitarse con el tiempo y las amenazas evolucionan. Vigilar de cerca todas las actividades de firma de código, auditar todo el uso de claves y cubrir los certificados de firma de código en cualquier actividad más amplia de gestión de certificados de PKI no sólo ayudará a los equipos de seguridad a detectar las amenazas con mayor antelación, sino que también garantizará que todos los controles establecidos para proteger un certificado de firma de código se mantengan adecuadamente a lo largo del tiempo.

En nuestro mundo software, la confianza lo es todo. Garantizar que los equipos de seguridad y desarrollo de una organización trabajan juntos para proteger los certificados digitales y las claves utilizadas para la firma de código es clave para garantizar que su software sigue siendo seguro y fiable, lo que convierte a la firma de código en una parte fundamental de una cadena de suministro segura de software .