En los últimos años, el número de vulnerabilidades y exposiciones comunes (CVE) notificadas ha aumentado de forma constante. Solo en la primera mitad de 2024, se notificaron 22 254 CVE, lo que supone un aumento considerable del 30 % con respecto a las 17 114 CVE registradas en 2023. Dado que estas vulnerabilidades, si se explotan, tienen consecuencias perjudiciales para las finanzas y la reputación, las empresas se enfrentan a una única opción: corregir las vulnerabilidades con prontitud. Pero esto es más fácil de decir que de hacer. A veces, con los sistemas heredados, simplemente no es práctico actualizar las versiones vulnerables a otras más recientes que contengan los parches de seguridad. Aquí es donde entra en juego el backporting.
Imagina que tienes un coche antiguo que has tenido durante años. De repente, el motor y las ruedas empiezan a fallar. La mala noticia es que se trata de un modelo muy antiguo, por lo que no puede encontrar las piezas. Pero tampoco quiere sustituir el coche por un modelo más nuevo. Así que, en su lugar, pide a su mecánico que recoja piezas compatibles de un modelo nuevo y las instale en su coche antiguo. ¡Problema resuelto!lt;/p>
El backporting es similar a esto; significa adaptar parches de la versión más reciente del software para solucionar problemas en sistemas heredados. En este artículo, exploramos el backporting, destacando su importancia, casos de uso, vulnerabilidades asociadas y mejores prácticas.
¿Qué es el backporting?
El backporting es la práctica de tomar las correcciones de seguridad o las nuevas funciones introducidas en las versiones más recientes del software y trasladarlas a las versiones anteriores.
¿Por qué es importante el backporting? El backporting, que es una parte fundamental de la gestión de vulnerabilidades, se convierte en una necesidad cuando la actualización de las versiones vulnerables del software resulta problemática.
Consideremos este ejemplo real: Red Hat lanzó Red Hat Linux 8.0. utilizando el servidor HTTP Apache versión 2.0.40. Poco después, se descubrieron vulnerabilidades de seguridad en la antigua versión de Apache y se lanzó una nueva versión, la 2.0.43.
Aunque la nueva versión corregía esos errores, también contenía cambios en el código que harían que el software upstream fuera incompatible con muchas implementaciones downstream que dependían de él. Por lo tanto, en lugar de aplicar la nueva versión en su totalidad, Red Hat retroportó el parche tomando los fragmentos de código relevantes y modificándolos para que se ajustaran a la versión anterior.
Básicamente, retroportar significa que usted mismo accede y adapta el código fuente de una versión de software, o bien obtiene una versión upstream retroportada de su distribuidor de software, como en el ejemplo anterior de Red Hat. A continuación se presentan algunos escenarios comunes para la retroportación:
- Sistemas heredados: Las empresas que dependen de software heredado se enfrentan a un reto único: los sistemas existentes suelen ser incompatibles con las últimas actualizaciones. La retrocompatibilidad resuelve este problema, corrigiendo los problemas de rendimiento y seguridad en los sistemas heredados sin necesidad de sustituirlos o refactorizarlos por completo.
- Cumplimiento normativo: Para las organizaciones que manejan información médica protegida (PHI), información de tarjetas de pago (PCI) e información de identificación personal (PII) de sus clientes, la protección de los datos confidenciales de conformidad con normas reguladoras como la HIPAA, el RGPD y la PCI DSS es una prioridad. El backporting permite a estas empresas cumplir los requisitos de cumplimiento normativo sin tener que enfrentarse a las molestias que supone la gestión de versiones de software.
- Limitaciones de recursos: Cuando las actualizaciones supondrían un coste significativo en recursos humanos, financieros y de sistemas que muchas empresas simplemente no pueden permitirse, el backporting ofrece una alternativa eficiente en términos de recursos.
Diferencias entre retroportabilidad, aplicación de parches y actualización
La retroportabilidad, la aplicación de parches y la actualización son conceptos análogos que cumplen funciones similares, pero mediante métodos diferentes. A continuación se resumen las diferencias.
| Parámetros | Retroportación | Parcheado | Actualización |
|---|---|---|---|
| Función | Actualiza los parches críticos de las nuevas versiones de software a las antiguas | Aplica correcciones de seguridad a las versiones actuales de software para resolver vulnerabilidades aisladas | Pasa de una versión antigua de software a una nueva, equipada con funciones mejoradas y parches de seguridad |
| Objetivo | Principalmente destinado a solucionar problemas de seguridad | Solucionar problemas de seguridad y rendimiento | Proporcionar mejoras integrales |
| Reto | Requiere amplios conocimientos técnicos | Puede provocar inestabilidad o introducir nuevos riesgos si no se prueba adecuadamente | Puede introducir problemas de compatibilidad con el software descendente |
¿Cómo funciona el backporting?
El proceso de backporting implica una serie de pasos:
Paso 1: Identificar la vulnerabilidad para la que se desea realizar el backporting de las correcciones de seguridad. Esto puede hacerse mediante comprobaciones de seguridad realizadas por equipos internos o avisos de seguridad publicados en Internet.
Paso 2: Busque la nueva versión del software que corrige el problema.
Paso 3: Aísle la corrección de otros cambios en la nueva versión del software extrayendo los fragmentos de código necesarios.
Paso 4: Adapte la corrección aislada al sistema antiguo.
Paso 5: Realizar pruebas en un entorno controlado para garantizar que realmente corrige la vulnerabilidad, sin introducir problemas de rendimiento o seguridad, ni otros efectos indeseables, como cambiar la funcionalidad anterior.
Paso 6: Retroportar las correcciones al sistema antiguo, enviarlas a producción y supervisarlas continuamente.
Vulnerabilidades asociadas al retroporting
Aunque el retroporting ofrece un salvavidas fundamental a las organizaciones que no pueden actualizar determinado software, no está exento de riesgos. Uno de los principales riesgos de la retrocompatibilidad es que los sistemas más antiguos pueden no ser compatibles de forma nativa con los marcos de seguridad más recientes. Por lo tanto, las correcciones retrocompatibles pueden acabar introduciendo vulnerabilidades de retrocompatibilidad mientras se intenta corregir otras vulnerabilidades.
¿Qué son las vulnerabilidades de retrocompatibilidad?
Las vulnerabilidades de retrocompatibilidad son riesgos que se derivan de la adaptación de parches de seguridad diseñados para sistemas modernos a versiones más antiguas, lo que puede dar lugar a efectos secundarios imprevistos.
Tipos de vulnerabilidades de retroportabilidad
Cuando existen diferencias importantes en la arquitectura o las dependencias entre las versiones nuevas y antiguas del software, la retroportabilidad puede introducir los siguientes tipos de vulnerabilidades:
1. Vulnerabilidades de seguridad
Las correcciones de seguridad en las versiones más recientes del software suelen basarse en paradigmas de seguridad que no se encuentran en las versiones anteriores. Si se retroportan estas correcciones, hay que tener cuidado de no introducir nuevas vulnerabilidades de retroportabilidad o de no abordar adecuadamente las antiguas.
Por ejemplo, Microsoft ha publicado recientemente una actualización para una vulnerabilidad de ejecución remota de código (RCE) en .NET (CVE-2024-38229). Aunque es eficaz en los sistemas .NET 8.0 y 9.0, esta actualización, si se retroporta a .NET 6.0, puede que no tenga el efecto deseado. Esto se debe a que el flujo HTTP/3, que es el centro de la vulnerabilidad, solo es experimental en la versión 6.0.
2. Problemas de compatibilidad
A la hora de realizar una retroportabilidad, hay muchos componentes que hay que tener en cuenta, como las dependencias, las API, los marcos y las bibliotecas, los sistemas operativos, las aplicaciones bifurcadas y mucho más. Teniendo en cuenta esta larga lista, resulta complicado garantizar que los parches retroportados se integren completamente con todos los componentes. Cuando la arquitectura de los sistemas heredados es simplemente incompatible con los más nuevos, puede ser necesario realizar modificaciones exhaustivas en el parche.
Por ejemplo, las versiones de software más recientes utilizan kits de desarrollo de software (SDK) modernos, como Kubernetes SDK que pueden no existir en el software heredado. En tales casos, la retrocompatibilidad de los parches requeriría que los desarrolladores reescribieran los fragmentos de código (que contienen el parche) o instalaran soluciones alternativas complicadas, que también deben ser compatibles.lt;/p>
3. Degradación del rendimiento
Las versiones más recientes de software suelen estar diseñadas para ofrecer velocidad y seguridad, lo que puede hacer que consuman más recursos. La retrocompatibilidad de parches diseñados de esta manera en sistemas más antiguos y lentos puede sobrecargar la capacidad de procesamiento de los sistemas capacidad de procesamiento de los sistemas, lo que puede provocar tiempos de respuesta más lentos, errores o, lo que es peor, fallos del sistema.
Riesgos asociados a la retrocompatibilidad de vulnerabilidades
- Riesgos de seguridad: Los parches retroportados de forma incorrecta pueden dejar vulnerabilidades sin resolver o introducir otras nuevas.
- Riesgos operativos: La asignación de recursos para la retrocompatibilidad puede provocar posibles tiempos de inactividad o interrupciones del servicio.
- Riesgos de cumplimiento: Una retrocompatibilidad inadecuada puede dar lugar al incumplimiento de las normas de seguridad.
Cómo probar y validar los cambios retroportados
Probar y validar los parches retroportados antes de su envío es fundamental para garantizar un proceso de retroporting seguro y eficaz. Esto implica:
- Utilizar soluciones de gestión de vulnerabilidades para detectar vulnerabilidades que el proceso de retroportación no ha resuelto por completo.
- Utilizar escáneres de vulnerabilidades para asegurarse de que el proceso de retroportabilidad no ha introducido nuevas vulnerabilidades.
- Utilizar herramientas de pruebas de regresión para verificar que los parches se integran correctamente sin afectar negativamente a la funcionalidad existente.
- Implementar pruebas de penetración para comprobar aún más los parches retroportados en busca de posibles vulnerabilidades de seguridad.
Retos de la retroportabilidad
Aunque la retroportabilidad es una forma eficaz de resolver las vulnerabilidades de los sistemas heredados que no se pueden sustituir fácilmente, las empresas pueden enfrentarse a los siguientes retos:
N.º 1. Complejidad
Cuando existen problemas de compatibilidad, la retrocompatibilidad requiere una reescritura exhaustiva del código, lo que suele ser un proceso que lleva mucho tiempo, además de que las empresas tendrían que contratar ingenieros y herramientas altamente especializados.
#2. Riesgos sin resolver
El backporting, incluso cuando es compatible, puede no resolver completamente el problema. Esto podría ocurrir si la vulnerabilidad reside en el propio diseño arquitectónico. En tal caso, el backporting puede dar a las empresas una falsa sensación de seguridad hasta que se explota la vulnerabilidad.
#3. Confusión en la numeración CVE
Muchas soluciones de seguridad detectan vulnerabilidades únicamente correlacionándolas con los números de identificación CVE de las bases de datos de vulnerabilidades. Por lo tanto, es bastante común que estas herramientas sigan marcando las versiones de software como vulnerables incluso después de que el backporting haya resuelto completamente la vulnerabilidad, lo que da lugar a falsos positivos.
#4. Documentación deficiente
Las organizaciones dependen de los proveedores de servicios para obtener parches de software para sistemas operativos, marcos de trabajo, bibliotecas y mucho más. En los casos en que las actualizaciones no son viables, estos proveedores retroportan los parches. Si esto no se documenta claramente para cada corrección de seguridad publicada, los usuarios pueden suponer inadvertidamente que se ha realizado una actualización en lugar de un retroport.
Lo mismo se aplica a los procesos de retroporting internos escasamente documentados. Una documentación deficiente confunde a los usuarios, que no entienden por qué siguen teniendo una versión antigua después de haber realizado una "actualización". También puede introducir vulnerabilidades de seguridad si los usuarios no aplican los cambios retroportados de forma adecuada.
Prácticas recomendadas para mitigar las vulnerabilidades de retroportación
A continuación se presentan las siete mejores prácticas de retroportación que se deben implementar para lograr un proceso de retroportación libre de vulnerabilidades.
- Evaluar las necesidades de retroportación: Antes de optar por el backporting, asegúrese de que es el enfoque más eficaz para resolver la vulnerabilidad. Sopese esta decisión con un examen exhaustivo del grado de degradación del rendimiento y las complejidades operativas que experimentará si opta por el backporting o la actualización.
- Siga protocolos de prueba rigurosos: Pruebe exhaustivamente las correcciones retrocompatibles para detectar vulnerabilidades de seguridad y problemas de rendimiento antes de su lanzamiento. Las pruebas rigurosas, en entornos controlados, garantizan que se resuelvan las vulnerabilidades existentes y que el proceso de retrocompatibilidad no introduzca otras nuevas.
- Realice evaluaciones de riesgos exhaustivas: Asegúrese de que cualquier riesgo o desafío potencial de retroportación al que se enfrente se vea ampliamente superado por los beneficios de seguridad, operativos y de cumplimiento normativo para su empresa.
- Mantenga una documentación completa: Esto es fundamental para realizar un seguimiento de los cambios retroportados a lo largo del tiempo y crear registros de auditoría de cumplimiento detallados. También es fundamental para la depuración futura y el análisis de las causas raíz.
- Utilice sistemas de control de versiones (VCS): Los VCS como Git y Azure DevOps son excelentes herramientas para realizar un seguimiento de los cambios retroportados y mantener la integridad del código. Proporcionan historiales de versiones que resultan muy útiles si hay problemas de inestabilidad con las versiones retroportadas y es necesario volver a una versión estable anterior.
- Establezca procesos de gestión de cambios: Esto incluye examinar y revisar minuciosamente los parches retroportados antes de su envío, aplicar los cambios retroportados sin interrumpir las funciones de la aplicación y supervisar continuamente la pila de TI para detectar degradaciones del rendimiento u otros posibles problemas después de implementar la retroportabilidad.
- Utilizar las herramientas adecuadas: Las herramientas adecuadas de gestión de vulnerabilidades y pruebas de seguridad pueden marcar una gran diferencia en la fluidez del proceso de retroportabilidad.
Casos de uso comunes de la retroportabilidad
El caso de uso más común de la retroportabilidad es el software heredado, en el que no es viable realizar actualizaciones completas. Esto es especialmente habitual en los sectores sanitario, financiero y otros en los que los sistemas heredados son esenciales para las operaciones diarias, y cualquier intento de actualizarlos provocaría interrupciones masivas del servicio. Otros casos de uso de la retrocompatibilidad son:
- Proteger los sistemas de producción críticos para la misión en los que es esencial una alta disponibilidad, por ejemplo, los mainframes que suelen utilizar los bancos para gestionar el tráfico de gran volumen y las necesidades de procesamiento rápido de datos
- Garantizar las versiones de soporte a largo plazo (LTS) de proyectos de código abierto, por ejemplo, el kernel LTS de Linux, que suelen utilizar los proveedores de servicios en la nube para garantizar la estabilidad y facilitar la compatibilidad de versiones en entornos híbridos.
- Cumplimiento de los requisitos de conformidad en sectores altamente regulados, como el financiero y el sanitario. Por ejemplo, mediante la retrocompatibilidad de parches, los hospitales pueden cumplir con las leyes de protección de datos como la HIPAA, sin enfrentarse a las considerables interrupciones del servicio asociadas a las actualizaciones.
Ciberseguridad impulsada por la IA
Mejore su postura de seguridad con detección en tiempo real, respuesta a velocidad de máquina y visibilidad total de todo su entorno digital.
DemostraciónConclusión
La retrocompatibilidad puede corregir muchos problemas, pero también puede introducir nuevos retos. Estará seguro si utiliza una solución de supervisión de amenazas con IA para abordar las vulnerabilidades actuales o las potenciales que puedan surgir. Puede realizar backports de parches de seguridad de versiones más recientes a versiones más antiguas para corregir vulnerabilidades sin causar actualizaciones disruptivas.
Un backporting exitoso implica pruebas exhaustivas, documentación completa, análisis de riesgos correctos y herramientas de seguridad especializadas para ayudar en el proceso.
"FAQs
La retrocompatibilidad consiste en aislar los parches de seguridad de las versiones recientes del software y aplicarlos a las versiones anteriores para resolver vulnerabilidades de seguridad críticas. Por otro lado, la actualización consiste en implementar nuevas versiones de software que contienen parches de seguridad, correcciones de errores, nuevas funciones y otras mejoras.
Las organizaciones deben optar por el backporting en lugar de la actualización cuando los sistemas tienen requisitos de tiempo de actividad elevados, las actualizaciones pueden dar lugar a graves problemas de incompatibilidad o las actualizaciones simplemente requieren demasiado tiempo y recursos para ser viables.
Entre los retos comunes del backporting se incluyen la complejidad, que requiere modificaciones extensas, cambios de backporting mal documentados y vulnerabilidades resueltas de forma inadecuada.
Los equipos de desarrollo desempeñan un papel importante en el backporting de vulnerabilidades. En primer lugar, deben identificar, junto con los equipos de seguridad, las vulnerabilidades críticas en las versiones antiguas del software. A continuación, los desarrolladores deben aislar las correcciones de código en las nuevas versiones y adaptarlas a los sistemas antiguos.
