From 793f845e4a358062d25ee7bd2b8a9ef7229ffbcd Mon Sep 17 00:00:00 2001 From: Konstantin Sykulev Date: Tue, 20 Jan 2026 14:39:50 -0800 Subject: [PATCH] Differentiate between imp and Integrative Modeling Platform (#38396) **Related issue:** Resolves #35192 # Checklist for submitter If some of the following don't apply, delete the relevant line. - [x] Changes file added for user-visible changes in `changes/`, `orbit/changes/` or `ee/fleetd-chrome/changes`. See [Changes files](https://github.com/fleetdm/fleet/blob/main/docs/Contributing/guides/committing-changes.md#changes-files) for more information. ## Testing - [x] Added/updated automated tests - [x] QA'd all new/changed functionality manually --- changes/35192-imp-correct-classification | 1 + server/vulnerabilities/nvd/cpe.go | 11 +++++++ server/vulnerabilities/nvd/cpe_test.go | 39 ++++++++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 changes/35192-imp-correct-classification diff --git a/changes/35192-imp-correct-classification b/changes/35192-imp-correct-classification new file mode 100644 index 0000000000..5144468e8a --- /dev/null +++ b/changes/35192-imp-correct-classification @@ -0,0 +1 @@ +* Differentiated IMP and Integrative Modeling Platform (IMP) while running vulnerability scanning. \ No newline at end of file diff --git a/server/vulnerabilities/nvd/cpe.go b/server/vulnerabilities/nvd/cpe.go index 3d64c5f94b..7de65280b7 100644 --- a/server/vulnerabilities/nvd/cpe.go +++ b/server/vulnerabilities/nvd/cpe.go @@ -395,6 +395,17 @@ var ( s.Version = newVersion }, }, + { + // Homebrew's "imp" (Integrative Modeling Platform) is incorrectly matched against + // Horde IMP CPEs. Rename the Homebrew package to prevent incorrect CPE + // matching with horde:imp. + matches: func(s *fleet.Software) bool { + return s.Name == "imp" && s.Source == "homebrew_packages" + }, + mutate: func(s *fleet.Software, logger log.Logger) { + s.Name = "integrative-modeling-platform" + }, + }, } ) diff --git a/server/vulnerabilities/nvd/cpe_test.go b/server/vulnerabilities/nvd/cpe_test.go index 73d87dc7c8..5d5a284e69 100644 --- a/server/vulnerabilities/nvd/cpe_test.go +++ b/server/vulnerabilities/nvd/cpe_test.go @@ -2316,6 +2316,45 @@ func TestMutateSoftware(t *testing.T) { Source: "programs", }, }, + { + name: "Homebrew imp (Integrative Modeling Platform)", + s: &fleet.Software{ + Name: "imp", + Version: "2.23.0_13", + Source: "homebrew_packages", + }, + sanitized: &fleet.Software{ + Name: "integrative-modeling-platform", + Version: "2.23.0_13", + Source: "homebrew_packages", + }, + }, + { + name: "imp from non-Homebrew source (should not be renamed)", + s: &fleet.Software{ + Name: "imp", + Version: "5.0.22", + Source: "programs", + }, + sanitized: &fleet.Software{ + Name: "imp", + Version: "5.0.22", + Source: "programs", + }, + }, + { + name: "Homebrew imp with different version", + s: &fleet.Software{ + Name: "imp", + Version: "2.20.0", + Source: "homebrew_packages", + }, + sanitized: &fleet.Software{ + Name: "integrative-modeling-platform", + Version: "2.20.0", + Source: "homebrew_packages", + }, + }, } { t.Run(tc.name, func(t *testing.T) { require.NotPanics(t, func() { mutateSoftware(tc.s, log.NewNopLogger()) })