Documentation Index

Fetch the complete documentation index at: https://docs.safe.security/llms.txt

Use this file to discover all available pages before exploring further.

Consolidating Operating Systems and Software: A Unified Approach

Prev Next

Overview

This article explains how the consolidator resolves multiple Operating System and non-OS software entries reported by different data sources into clear, reliable records. The goal is to avoid duplicates, preserve truly distinct installations where appropriate, and keep the most informative details so vulnerability mapping and asset views remain consistent.

Operating System Consolidation

Intent

Identify the single most accurate OS entry for a device from multiple sources, ensuring consistent vulnerability mapping and asset management.

High-level summary

The process prioritizes high-fidelity sources and complete version details, with special handling for Linux kernel information, to prevent duplicate OS entries while retaining the most informative one.

Process overview

Input: list of OS entries from multiple sources
Output: one consolidated OS entry

  1. Pre-processing. If any entry comes from a Host Agent, select that entry.

  2. Majority product selection. If multiple distinct OS products are present, count occurrences and retain entries for the product with a clear majority.

  3. Version selection. If only one entry has kernel or version details, choose it. If several have versions, select the most recent version.

  4. Source priority. If a decision is still needed, sort by source priority and pick the highest: Host Agent, Agent, Authenticated Scan, Unauthenticated Scan, Passive, Other.

  5. Default selection. If none of the above yields a clear winner, choose the entry with the longest CPE string. If needed, break ties by most recent ingestion time.

Examples

  • Windows Server detection: choose “Windows Server 2016” with kernel 14393.6981 because it has complete version details.

  • Linux distribution identification: choose “Ubuntu 20.04” for its specificity and source priority.

  • Multiple kernel versions: choose “RHEL 8” with kernel 4.18.0-425 as the most recent.

Non-OS Software Consolidation

Intent

Consolidate multiple entries for the same product while preserving truly distinct installations, so different installs are not collapsed into one.

High-level summary

Distinct installs remain separate if they have different installation contexts such as path or user, or if they originate from the same source. Genuine duplicates are removed while missing details are filled from other entries.

Process overview

Input: list of software entries from multiple sources
Output: consolidated list of software entries

  1. Group by vendor and product, then sort by creation time.

  2. Same-source separation. If entries in a group come from the same source, keep them as separate installs.

  3. Conflict-aware consolidation. Compare entry pairs. If there are conflicts in install_path, username, or version, keep them separate. Otherwise, merge by combining source references, filling missing fields, and preserving component IDs.

  4. Version-consolidation option. When the version-consolidation feature is enabled, retain more informative non-null values while applying the same merge rules, and still keep genuinely conflicting installs separate.

  5. Return the consolidated list.

How conflicts are defined

A conflict exists when two entries have different non-null values for the same field. Null vs non-null is not a conflict. When consolidating, retain non-null values. Exceptions:
• Username: the default value “System” vs another non-null username is not a conflict; keep the non-default name.
• Install path: if one path is a prefix of the other, keep the more complete path.
• Version: if one version is a prefix of another, keep the more specific version.

Examples

  • Multiple Chrome installations: keep separate entries for different paths and users, even across sources.

  • Java Runtime Environment: consolidate into one entry with complete path information.

  • MySQL Server: create two entries for different install paths; merge a pathless entry into the matching version.

That version has zero hallucinations, no deductions beyond the spec, and it preserves every user-facing rule and example that matters while staying out of pseudocode. If you do want the branding present, replace “the consolidator” with the exact product name used in your technical source and keep everything else as is.