Prácticas recomendadas para el control de versiones de software
Cinco recomendaciones para los proveedores de software sobre nombres de productos, identificadores de versión, datos del ciclo de vida y avisos de vulnerabilidad
En pocas palabrasSolicitar demostraciónIniciar prueba gratuitaPor qué son importantes los identificadores de versión
Prueba rápida: ¿hasta qué punto es reconocible tu producto?
- Clientes y operadores - pueden comprobar de un vistazo si su instalación está actualizada, sigue recibiendo soporte técnico y se ve afectada por alguna vulnerabilidad.
- Escáneres de vulnerabilidades - puede asociar con precisión los CVE a las versiones instaladas sin falsos positivos ni falsos negativos.
- Seguimiento al end-of-life - puede avisar con la debida antelación de que el soporte está a punto de caducar.
- CMDB y gestión de activos - puede documentar las versiones de forma coherente y a prueba de auditorías.
- Los propios proveedores - recibir menos solicitudes de asistencia y cumplir los requisitos de normativas como la Ley de Resiliencia Cibernética (CRA), por ejemplo, en lo que respecta a las listas de componentes de software (SBOM), los periodos de asistencia y la gestión de vulnerabilidades.
1. Definir nombres únicos para los productos y los proveedores
- ✅ - Define un nombre canónico del producto y un nombre canónico del proveedor, incluyendo la ortografía, los espacios, los guiones y las mayúsculas.
- ✅ - Utiliza nombres de producto diferentes solo para productos que sean realmente distintos, por ejemplo, un servidor y su cliente.
- ✅ - Si se cambia el nombre de un producto o proveedor, anota el nombre anterior y la fecha del cambio en el historial de versiones.
- ❌ - Variantes con el mismo nombre en función de la plataforma, el instalador o la página de descarga.
2. Seguir las normas de versionado semántico
- ✅ - Utiliza exactamente un esquema de versiones técnicas por producto y documéntalo.
- ✅ - Utiliza siempre el mismo número de componentes, por ejemplo, 5.0.0, en lugar de alternar entre 5, 5.0 y 5.0.0.
- ✅ - Asigna a cada compilación publicada exactamente una versión y nunca reutilices una versión para una compilación diferente.
- ❌ - Nombres de marketing sin una versión técnica, por ejemplo, «Spring Release» o «2026 R2». Si se requieren nombres de marketing, hay que asignar cada uno de ellos de forma inequívoca a una versión técnica.
- ❌ - Ceros iniciales, letras como nivel de parche (p. ej., 3.1b) y separadores variables (p. ej., 3.1-2 y 3.1.2 para la misma versión).
3. Publicar el historial de versiones en línea
- Exhaustividad - Enumera todas las versiones, incluidas las versiones con parches y las correcciones urgentes. No elimines de la lista las versiones antiguas una vez que dejen de tener soporte.
- Fechas inequívocas - Utiliza el formato de fecha ISO 8601 (AAAA-MM-DD) para evitar confusiones entre el 03/04/2026 y el 04/03/2026.
- URL estable - Mantén estable la dirección del historial de versiones para que se pueda consultar y supervisar automáticamente.
- Formato legible por máquina - Además, facilita el historial de versiones en formato JSON o XML, a ser posible a través de una API o un feed.
- Mapeo de CPE - Indique el identificador CPE (Common Platform Enumeration) del producto en el historial de versiones legible por máquina, de modo que se pueda establecer una correspondencia con bases de datos de vulnerabilidades, como la Base de Datos Nacional de Vulnerabilidades (NVD), sin necesidad de hacer conjeturas.
{
"product": "Example Server",
"vendor": "Example Ltd",
"cpe": "cpe:2.3:a:example:example_server:*:*:*:*:*:*:*:*",
"versions": [
{
"version": "4.2.1",
"releaseDate": "2026-09-15",
"endOfMaintenance": "2027-09-30",
"endOfSupport": "2028-03-31",
"releaseNotes": "https://www.example.com/release-notes/4.2.1",
"fixedVulnerabilities": [ "CVE-2026-12345" ]
},
{
"version": "4.2.0",
"releaseDate": "2026-07-01",
"endOfMaintenance": "2027-09-30",
"endOfSupport": "2028-03-31",
"releaseNotes": "https://www.example.com/release-notes/4.2.0"
}
]
}4. Hacer que se pueda consultar el producto y la versión instalados
- Linux - Registra el nombre exacto del producto, el nombre del proveedor y la versión en los metadatos del paquete, por ejemplo, en los campos «Nombre», «Proveedor» y «Versión» de un paquete RPM, que se pueden consultar mediante los comandos «rpm -q» o «dpkg -s».
- Windows - Introduce el nombre del producto publicado como «DisplayName», el nombre del proveedor como «Publisher» y la versión como «DisplayVersion» en la clave de registro de desinstalación y en la información de la versión del archivo, o bien facilítalos a través de Winget.
- macOS - Establece los valores de «CFBundleName» y «CFBundleShortVersionString» en el archivo «Info.plist» con el nombre y la versión del producto publicado; proporciona paquetes de Homebrew con los mismos nombres y la misma versión.
- Línea de comandos - Incluir una opción «--version» que muestre la versión exacta en un formato que se pueda analizar.
- Electrodomésticos, containers y servicios - Facilita la versión a través de un punto final de API, un valor SNMP o una etiqueta de imagen, por ejemplo, org.opencontainers.image.version.
$ example-server --version
4.2.15. Indicar las versiones exactas en los avisos de vulnerabilidad
- ❌ - «Todas las versiones anteriores a la última versión», «versión 3.x», «versiones anteriores» o «ponte en contacto con el servicio de asistencia para obtener más información».
- ❌ - Intervalos de versiones como «4.0.0 a 4.2.0» o «< 4.2.1», que requieren conocer todas las versiones intermedias.
- ✅ - Enumera explícitamente todas las versiones afectadas, por ejemplo: «versiones afectadas: 4.0.0, 4.0.1, 4.1.0, 4.1.1, 4.2.0; corregido en: 4.2.1».
- ✅ - Asigna un número de versión fijo a cada línea de versiones compatible, por ejemplo, 3.8.7 y 4.2.1.
- ✅ - Utiliza los mismos identificadores de versión que aparecen en el historial de versiones y en el producto instalado.
- ✅ - Publica los avisos en formato legible por máquina, por ejemplo, como documentos CSAF con identificadores CPE o URL de paquete (purl), y enumera las versiones afectadas una por una en el registro CVE.
Leer más

Ciclo de vida del producto y vulnerabilidad
Evalúa todas las versiones de hardware y software en uso para determinar su estado de lanzamiento, EoL y soporte técnico, así como las vulnerabilidades CVE conocidas, con recomendaciones de actualización.

Tecnologías empresariales compatibles con Versio.io
Versio.io es compatible con diversos equipos y programas informáticos, y automatiza el inventario, la generación de informes, el cumplimiento normativo y la gestión de TI.

Repositorio de contenidos - Vulnerabilidades y exposiciones comunes
Base de datos de vulnerabilidades (CVE) actualizada diariamente procedente de NVD, Red Hat, GitHub, Juniper y Palo Alto: la base para la detección automatizada de vulnerabilidades en Versio.io.
Talk to me
Más información