Líder en confianza digital para la era de la inteligencia artificial y la computación cuántica.   Descubra cómo Keyfactor lo Keyfactor posible.

Definición

La mayoría de los desarrolladores de software y firmware reconocen la importancia de la firma de código. Sin embargo, les cuesta implantarla de forma eficaz y segura.

Esta guía explora las amenazas y los contratiempos más comunes en las operaciones de firma de código. A continuación, nos sumergimos en la orientación paso a paso sobre cómo abordar las necesidades de sus desarrolladores y equipo de seguridad - todo en un solo lugar.

¿Qué es la firma de código?

Vivimos en un mundo que funciona con código. El Software impregna prácticamente todos los aspectos de nuestras vidas, desde las cosas que usamos a diario hasta la infraestructura crítica de nuestra sociedad. Es difícil imaginar un negocio hoy en día que no dependa del Software de alguna manera. A medida que el IoT sigue creciendo, el Software se integra cada vez más en nuestro mundo físico.

Hubo un tiempo en que los usuarios podían confiar en el Software que descargaban, pero eso dista mucho de ser cierto hoy en día. A medida que los hackers se vuelven cada vez más expertos en el arte de propagar malware, incluso los profesionales de TI encuentran difícil saber si el Software o el producto que han adquirido es legítimo. Aquí es donde entra en juego la firma de código.

La firma de código es un método criptográfico utilizado por los desarrolladores para probar que una pieza de Software es auténtica. Al firmar digitalmente aplicaciones, Software o firmware embebido con una clave privada, se proporciona a los usuarios finales la prueba de que el código proviene de una fuente confiable y legítima, y que no ha sido alterado desde su publicación.

Uso de la firma de código

IT corporativa

Los equipos de TI empresariales deben garantizar que todos los scripts o utilidades internas implementados en la organización estén firmados para prevenir alteraciones por parte de usuarios internos o amenazas externas.

Fabricantes de IoT

En el emergente Internet de las Cosas (IoT), la firma de código es la forma más efectiva de garantizar la integridad de los dispositivos desde la activación hasta las actualizaciones de firmware y Software.

Desarrolladores de aplicaciones móviles

Las tiendas de aplicaciones más populares, como las de Microsoft, Google y Apple, requieren que las aplicaciones móviles estén firmadas antes de su envío y publicación para la adquisición.

Proveedores de Software

A menudo, los desarrolladores de Software deben firmar el código para permitir la instalación. Sistemas operativos como Windows y macOS advertirán a los usuarios si el Software o los controladores no están firmados.

¿Por qué es importante la seguridad en la firma de código?

La firma de código sin asegurar sus claves privadas puede exponerle a un riesgo mayor que no firmar el código en absoluto. Los atacantes buscan comprometer estas claves para firmar y distribuir código malicioso a sus clientes, enmascarado como Software o firmware legítimo.

ilustración de edificios urbanos

Robo de claves

Si las claves privadas asociadas a sus certificados de firma de código se ven comprometidas, la situación es crítica. Las claves de firma de código sustraídas son un objetivo primordial para los atacantes, quienes las venden o las utilizan para generar malware firmado que aparenta ser publicado por sus desarrolladores.

Brecha en la firma

Los atacantes no requieren sus claves para firmar malware. Si los servidores de compilación o las estaciones de trabajo de desarrolladores con acceso irrestricto a los sistemas de firma de código son comprometidos, un atacante puede simplemente enviar malware para su firma y distribución sin ser detectado.

Mal uso interno

Los desarrolladores se especializan en código, no en seguridad. Las claves y certificados de firma de código pueden ser fácilmente utilizados de forma indebida o extraviados por los desarrolladores, lo que facilita considerablemente a los potenciales atacantes comprometer la integridad de sus operaciones de firma de código.

Impacto del compromiso de código

Los editores de Software, los fabricantes de dispositivos y los equipos de desarrollo internos han adoptado la firma de código como una forma de proteger su propiedad intelectual, la marca de su empresa y a sus usuarios finales. Pero la confianza y la integridad de la firma de código dependen enteramente de la seguridad de sus claves.

Una única brecha en esta “cadena de confianza” puede paralizar por completo su negocio. Los esfuerzos para revocar y reemitir rápidamente certificados, notificar a los clientes y desplegar una actualización recién firmada son onerosos. Esto se traduce en una pérdida de ingresos y en el costo de restablecer la confianza con sus usuarios, socios e inversores.

Conozca sus riesgos

Los recientes ataques de firma de código subrayan la importancia de gestionar el riesgo reputacional. Ya sea que consuma o venda Software, todos los líderes empresariales deben invertir en la confianza asociada a su marca digital y esperar lo mismo de sus proveedores.

ilustración de edificios con uno en alerta

Brecha de Adobe

Denunciado: 2012

BRECHA

Los atacantes comprometieron un servidor de compilación con acceso al sistema de firma de código de Adobe. Una vez dentro, utilizaron el servidor para firmar malware con un certificado de firma de código válido. Adobe respondió revocando el certificado, lo que impactó a tres de sus aplicaciones y a millones de usuarios.

Incidente de Bit9

Denunciado: 2013

ROBO

Bit9 recibió informes de sus clientes indicando el descubrimiento de malware en sus redes, un malware que había sido firmado digitalmente con el propio certificado de firma de código de Bit9. Posteriormente, se descubrió que los atacantes se infiltraron en una máquina virtual y sustrajeron un certificado para firmar y distribuir el malware a, al menos, tres clientes de Bit9.

Fuga de D-Link

Denunciado: 2015

USO INDEBIDO

Los hackers no siempre tienen que robar un certificado de firma de código válido, especialmente cuando los fabricantes lo publican sin saberlo. En 2015, los desarrolladores del fabricante de equipos de red D-Link publicaron accidentalmente cuatro claves privadas de firma de código en firmware open-source. No se firmó ningún malware conocido con estas claves, pero D-Link recibió duras críticas por el incidente.

Suckfly APT

Denunciado: 2016

ROBO

Un grupo de Amenaza Persistente Avanzada (APT) con sede en China, conocido como Suckfly, robó certificados de firma de código de al menos nueve empresas diferentes en Corea del Sur. Posteriormente, el grupo utilizó estos certificados durante más de dos años para firmar herramientas de hacking y malware en una campaña dirigida contra empresas en la India.

D-Link (de nuevo)

Denunciado: 2018

ROBO

Las empresas tecnológicas taiwanesas D-Link y Changing Information Technology fueron objetivo de otro grupo APT conocido como BlackTech. Se robaron al menos dos certificados de firma de código y se utilizaron para firmar un malware de Windows conocido como PLEAD, que roba las contraseñas introducidas en los navegadores web de las máquinas infectadas.

ShadowHammer

Denunciado: 2019

BRECHA

ASUS, un conocido fabricante de ordenadores portátiles y teléfonos móviles, distribuyó malware sin saberlo a miles de sus clientes durante al menos cinco meses. Este sofisticado ataque a la cadena de suministro de Software se conoció como «Operation ShadowHammer». Los hackers comprometieron dos certificados de firma de código de ASUS y distribuyeron malware firmado a través de la utilidad ASUS Live Update, insertando puertas traseras en al menos 1 millón de dispositivos.

Obstáculos para el éxito

La buena noticia es que la mayoría de los proveedores de Software independientes (ISV) y los fabricantes de dispositivos reconocen la importancia de la firma de código. El mayor desafío es cómo implementarla de una manera que satisfaga eficazmente las necesidades tanto de los desarrolladores como de los equipos de seguridad de TI.

Velocidad vs. Seguridad

Los equipos de seguridad y PKI preferirían aislar y proteger las claves privadas, pero los desarrolladores necesitan acceso rápido para firmar código y llevarlo a producción. El mayor problema es cómo implementar salvaguardas para evitar el uso indebido de claves y certificados sin obstaculizar la productividad de sus desarrolladores.

Amenazas sofisticadas

Los ataques a la cadena de suministro de Software son cada vez más frecuentes y sofisticados. Hackers, ciberdelincuentes e incluso ataques patrocinados por estados ponen en riesgo la seguridad y la integridad de su Software. A medida que el costo de los certificados de firma de código en el mercado negro sigue aumentando, algunos atacantes han adoptado un enfoque más directo.

DevOps y desarrollo ágil

Las prácticas DevOps han irrumpido en el mundo de TI. Las compilaciones de Software incrementales, rápidas y frecuentes son la clave. Cualquier cambio en el ciclo de vida de desarrollo de Software (SDLC) puede introducir más riesgos de los que pretende prevenir. La seguridad debe adaptarse a los flujos de trabajo DevOps y a los procesos de firma existentes.

Equipos de desarrollo dispersos

Los equipos de desarrollo actuales colaboran en ubicaciones globalmente dispersas. Cuando un equipo remoto necesita firmar código, la solución sencilla es adquirir un certificado de firma. Una vez adquiridos, los certificados a menudo quedan al alcance de los hackers y fuera del ámbito de su equipo de seguridad en estaciones de trabajo de desarrolladores o servidores de compilación dispares.

Vea la plataforma Keyfactor en acción y descubra cómo encontrar, controlar y automatizar todas las identidades de las máquinas.

ilustración gráfica de azulejos cuadrados abstractos

La hoja de ruta para una firma de código segura

Basta de teoría. Veamos los cuatro pasos prácticos que puede seguir su organización para superar estos retos y la solución adecuada que le ayudará a conseguirlo.

01 | Proteja las claves privadas

Las claves privadas que los desarrolladores utilizan para firmar código son de un valor incalculable para los hackers. Una vez comprometidas, estas claves pueden utilizarse para firmar prácticamente cualquier código y distribuirlo a miles de usuarios. Este tipo de ataques se han vuelto cada vez más frecuentes, ya que los hackers buscan evadir las herramientas de detección de malware.

ilustración de servidores protegidos mediante cifrado

Ninguna industria o empresa es inmune. Proveedores de confianza en seguridad y Hardware como Bit9 (ahora Carbon Black) y D-Link han caído presa de atacantes persistentes. Estos atacantes lograron infiltrarse en sus redes para encontrar y comprometer claves de firma de código, y las utilizaron contra sus propios clientes.

La responsabilidad de firmar código a menudo recae en desarrolladores especializados en escribir código, no en proteger claves. Como resultado, las claves terminan en ubicaciones de red no seguras, como estaciones de trabajo de desarrolladores, servidores de compilación y quién sabe dónde más. Los equipos de seguridad de TI a menudo desconocen exactamente cuántos certificados de firma de código tienen o dónde están almacenados.

Obtenga un inventario completo de su entorno

Los certificados y claves digitales utilizados para la firma de código son activos de alto valor; sin embargo, el 71% de las organizaciones no sabe exactamente cuántos tienen. Comience primero por hacer un inventario de cuántas claves de firma de código posee, dónde residen y cómo están almacenadas.

Centralice la gestión de claves y certificados

La firma de código local crea silos en la seguridad y aumenta los costes. Una solución centralizada del lado del servidor puede simplificar la administración, mejorar la seguridad y eliminar la necesidad de tener un certificado de firma de código separado para cada desarrollador o flujo de compilación.

Almacene las claves privadas en un HSM certificado

Los módulos de seguridad de Hardware (HSM) son la forma más efectiva de garantizar que sus claves privadas permanezcan bajo su control. Las claves pueden almacenarse o generarse dentro del HSM y utilizarse para firmar código en cualquier lugar sin tener que abandonar el Hardware.

Elija una solución flexible

Optar por una solución de fácil despliegue y escalabilidad a medida que aumenta la demanda de firma de código. Los servicios de Cloud HSM ofrecen todas las ventajas de la seguridad a nivel de Hardware, pero sin el gasto inicial, la configuración manual ni el mantenimiento continuo de los HSM de Hardware dedicados.

02 | Asegure las operaciones de firma

Si un hacker vulnera su red de desarrolladores, no necesita robar sus claves. Al obtener acceso a un servidor de compilación o a una estación de trabajo de desarrollador con acceso a la infraestructura de firma de código, los hackers pueden simplemente enviar malware para que sea firmado y distribuido sin ser detectado.

ilustración de personas utilizando ordenadores portátiles alrededor de un gran icono de escudo

Más conocidas como "ataques a la cadena de suministro de Software", estas amenazas son aún más difíciles de detectar porque a menudo implican a un infiltrado o a un atacante con acceso directo a la firma de código. Incluso empresas como Adobe y ASUS, con equipos de seguridad sofisticados, no pudieron detectar las brechas en su infraestructura de firma de código durante meses.

Los atacantes siempre encontrarán el camino de menor resistencia. Almacenar claves privadas en un HSM reduce el riesgo de robo de claves, pero puede apostar a que los actores de amenazas decididos encontrarán otra forma. En el caso de Adobe, las claves privadas se almacenaron de forma segura en un HSM, pero los hackers, en su lugar, obtuvieron acceso a un servidor de compilación y simplemente solicitaron firmas para código malicioso.

Es absolutamente crítico asegurar que solo los desarrolladores autorizados puedan firmar el código correcto en el momento adecuado. Al permitir que únicamente usuarios autorizados firmen y aprueben el código, se garantiza que, incluso si un hacker vulnera su red, se impide que acceda a su infraestructura crítica de firma de código.

Definir Roles y Segregar Responsabilidades

Establezca roles diferenciados para aquellos autorizados a enviar código para su firma y para quienes tienen la potestad de aprobar dichas solicitudes. La segregación de estas responsabilidades contribuirá a asegurar que solo usuarios de confianza puedan firmar código, protegiendo así las operaciones de firma de intrusiones maliciosas.

Hacer Cumplir las Políticas y Prácticas de Firma de Código

Asegure que, incluso a los desarrolladores autorizados, se les conceda acceso para firmar código únicamente por una duración de tiempo definida, un número específico de firmas y otros parámetros, con el fin de prevenir firmas ilegítimas o un uso indebido interno. Busque soluciones que faciliten la aplicación de estas políticas.

Segmentar la Firma para Pruebas y Producción

Si el código se firma durante las fases de desarrollo y pruebas, los certificados empleados deben ser distintos de aquellos utilizados para la firma en producción. Asegure que las claves de desarrollo no estén vinculadas a la misma raíz de confianza que las claves empleadas para firmar el código de producción.

Monitorizar las Actividades de Firma

Los gestores de desarrollo o de lanzamiento deben monitorizar cada uso de claves privadas para la firma de código. Esto contribuirá a asegurar que solo los desarrolladores autorizados firmen el código adecuado, utilizando las claves correctas.

03 | Integración con DevOps

No es una crítica hacia los desarrolladores afirmar que la seguridad no es su máxima prioridad. Para mantenerse a la vanguardia de la evolución digital, los equipos de desarrollo deben actuar con celeridad para codificar e implementar en producción. No obstante, los equipos de seguridad ejercen una presión creciente sobre los desarrolladores para que cumplan con requisitos que, con frecuencia, ralentizan los procesos de compilación y despliegue.

ilustración de un código en la pantalla de un ordenador

La responsabilidad de asegurar las claves de firma de código no debe recaer en los desarrolladores; su necesidad primordial es acceder para enviar y firmar código con agilidad. Se trata de hallar el equilibrio óptimo entre los requisitos de seguridad de TI para salvaguardar las claves privadas y la necesidad de los desarrolladores de firmar cualquier código, desde cualquier ubicación y sin interrupciones.

Formalizar su Proceso de Firma de Código

Documente, haga un seguimiento y siga rigurosamente los pasos necesarios para firmar código como parte de su ciclo de vida de desarrollo de Software (SDLC). Defina qué comprobaciones y verificaciones (es decir, control de calidad, pruebas de penetración, análisis de virus, análisis estático, etc.) deben realizarse antes de la firma.

Dar Soporte a Equipos de Desarrollo Distribuidos

La capacidad de habilitar la firma remota es fundamental para los equipos de desarrollo distribuidos de hoy en día. Elija una solución que permita a los desarrolladores firmar código desde cualquier lugar, sin que las claves salgan nunca de los confines seguros de la protección de Hardware.

Minimizar los Cambios en el SDLC

Adopte un enfoque colaborativo para asegurar que los equipos de seguridad y desarrollo alcancen objetivos mutuos en la protección de claves sin interrumpir el SDLC. Es fundamental encontrar soluciones que se adapten a sus procesos, y no a la inversa.

Integrar con Herramientas y Plataformas de Firma

Integre directamente los procesos de firma de código con las herramientas y flujos de trabajo existentes siempre que sea factible. La firma de código debe ser compatible con múltiples formatos de archivo de código, plataformas (es decir, Microsoft Authenticode, Java, etc.) y autoridades de certificación (CA).

04 | Monitorización y Auditoría del Cumplimiento

Implementar la seguridad es una tarea, pero asegurar que los desarrolladores cumplan con las políticas y mejores prácticas de firma de código es otra. La seguridad en la firma de código es un proceso continuo, no una implementación de "configurar y olvidar". Los certificados expiran inevitablemente, las claves y los algoritmos se debilitan con el tiempo, y las amenazas continúan evolucionando. Los equipos de seguridad deben ser capaces de identificar estos riesgos con celeridad y responder de manera efectiva.

Monitorizar las Operaciones de Firma de Código

Mediante la monitorización en tiempo real de las solicitudes de firma de código, las autorizaciones y las firmas, los equipos de seguridad pueden detectar de forma más efectiva actividades anómalas y responder en cuestión de minutos, en lugar de meses.

ilustración de hombres que utilizan GUI

Registrar y Auditar el Uso de Claves

Mantenga un registro de auditoría exhaustivo sobre quién utilizó las claves de firma de código, cuándo y quién autorizó la acción. Revise los registros periódicamente en busca de actividades sospechosas y asegure que no puedan ser alterados.

Incluir certificados de firma de código en el CLM

Todos los certificados digitales de su organización deben regirse por la gestión del ciclo de vida de los certificados (CLM), incluidos los certificados de validación extendida y los certificados de firma de código estándar, con disposiciones sobre cómo se solicitan, emiten, renuevan o revocan.

Firma de código empresarial con Keyfactor

Keyfactor Signum es la única plataforma que le ofrece visibilidad, control y protección completos de las operaciones de firma de código, sin interrumpir los flujos de trabajo de creación y publicación existentes. Los certificados y claves de firma de código se almacenan de forma centralizada en un HSM a prueba de manipulaciones. Una vez dentro, las claves privadas nunca abandonan el HSM. Las sólidas API permiten a los desarrolladores acceder de forma rápida y controlada a la firma de código desde cualquier lugar, mientras que los equipos de seguridad conservan una pista de auditoría completa de las actividades de firma de código.

Firma de código para la empresa

Dispositivos seguros. Controla tu futuro.

Solicite una demostración en vivo con un experto para ver cómo Keyfactor ayudarle a habilitar la confianza digital y la criptoagilidad para su organización.