From 138d9ce2a095755a04b06b7e7d9173c976502d9a Mon Sep 17 00:00:00 2001 From: Rez Moss Date: Mon, 27 Jul 2026 10:18:50 -0400 Subject: [PATCH] added bun binary classifier (#5103) * added bun binary classifier Signed-off-by: Rez Moss * added bun binary classifier Signed-off-by: Rez Moss --------- Signed-off-by: Rez Moss --- syft/pkg/cataloger/binary/capabilities.yaml | 10 +++++ .../binary/classifier_cataloger_test.go | 44 +++++++++++++++++++ syft/pkg/cataloger/binary/classifiers.go | 14 ++++++ .../snippets/bun/0.5.9/linux-amd64/bun | 12 +++++ .../snippets/bun/1.0.0/linux-amd64/bun | 12 +++++ .../snippets/bun/1.1.0/linux-amd64/bun | 12 +++++ .../snippets/bun/1.3.5/linux-amd64/bun | 12 +++++ 7 files changed, 116 insertions(+) create mode 100644 syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/0.5.9/linux-amd64/bun create mode 100644 syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.0.0/linux-amd64/bun create mode 100644 syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.1.0/linux-amd64/bun create mode 100644 syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.3.5/linux-amd64/bun diff --git a/syft/pkg/cataloger/binary/capabilities.yaml b/syft/pkg/cataloger/binary/capabilities.yaml index 17f36be0b..e8d68b254 100644 --- a/syft/pkg/cataloger/binary/capabilities.yaml +++ b/syft/pkg/cataloger/binary/capabilities.yaml @@ -433,6 +433,16 @@ catalogers: cpes: - cpe:2.3:a:deno:deno:*:*:*:*:*:*:*:* type: BinaryPkg + - method: glob + criteria: + - '**/bun' + packages: + - class: bun-binary + name: bun + purl: pkg:generic/bun + cpes: + - cpe:2.3:a:oven-sh:bun:*:*:*:*:*:*:*:* + type: BinaryPkg - method: glob criteria: - '**/ghc*' diff --git a/syft/pkg/cataloger/binary/classifier_cataloger_test.go b/syft/pkg/cataloger/binary/classifier_cataloger_test.go index 286699a76..b620a8674 100644 --- a/syft/pkg/cataloger/binary/classifier_cataloger_test.go +++ b/syft/pkg/cataloger/binary/classifier_cataloger_test.go @@ -1565,6 +1565,50 @@ func Test_Cataloger_PositiveCases(t *testing.T) { Metadata: metadata("deno-binary"), }, }, + { + logicalFixture: "bun/0.5.9/linux-amd64", + expected: pkg.Package{ + Name: "bun", + Version: "0.5.9", + Type: "binary", + PURL: "pkg:generic/bun@0.5.9", + Locations: locations("bun"), + Metadata: metadata("bun-binary"), + }, + }, + { + logicalFixture: "bun/1.0.0/linux-amd64", + expected: pkg.Package{ + Name: "bun", + Version: "1.0.0", + Type: "binary", + PURL: "pkg:generic/bun@1.0.0", + Locations: locations("bun"), + Metadata: metadata("bun-binary"), + }, + }, + { + logicalFixture: "bun/1.1.0/linux-amd64", + expected: pkg.Package{ + Name: "bun", + Version: "1.1.0", + Type: "binary", + PURL: "pkg:generic/bun@1.1.0", + Locations: locations("bun"), + Metadata: metadata("bun-binary"), + }, + }, + { + logicalFixture: "bun/1.3.5/linux-amd64", + expected: pkg.Package{ + Name: "bun", + Version: "1.3.5", + Type: "binary", + PURL: "pkg:generic/bun@1.3.5", + Locations: locations("bun"), + Metadata: metadata("bun-binary"), + }, + }, { logicalFixture: "haskell-ghc/7.10.3/linux-amd64", expected: pkg.Package{ diff --git a/syft/pkg/cataloger/binary/classifiers.go b/syft/pkg/cataloger/binary/classifiers.go index 9c5adeea4..212f244a2 100644 --- a/syft/pkg/cataloger/binary/classifiers.go +++ b/syft/pkg/cataloger/binary/classifiers.go @@ -611,6 +611,20 @@ func DefaultClassifiers() []binutils.Classifier { PURL: mustPURL("pkg:generic/deno@version"), CPEs: singleCPE("cpe:2.3:a:deno:deno:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), }, + { + Class: "bun-binary", + FileGlob: "**/bun", + EvidenceMatcher: binutils.MatchAny( + // bun 1.1.0 + // Bun v1.0.0 + m.FileContentsVersionMatcher(`(?m)[Bb]un v?(?P[0-9]+\.[0-9]+\.[0-9]+)`), + // bun-1.1.0 + m.FileContentsVersionMatcher(`(?m)bun-(?P[0-9]+\.[0-9]+\.[0-9]+)`), + ), + Package: "bun", + PURL: mustPURL("pkg:generic/bun@version"), + CPEs: singleCPE("cpe:2.3:a:oven-sh:bun:*:*:*:*:*:*:*:*"), + }, { Class: "haskell-ghc-binary", FileGlob: "**/ghc*", diff --git a/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/0.5.9/linux-amd64/bun b/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/0.5.9/linux-amd64/bun new file mode 100644 index 000000000..a19be8c22 --- /dev/null +++ b/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/0.5.9/linux-amd64/bun @@ -0,0 +1,12 @@ +name: bun +offset: 1000000 +length: 100 +snippetSha256: 0000000000000000000000000000000000000000000000000000000000000001 +fileSha256: 0000000000000000000000000000000000000000000000000000000000000001 + +### byte snippet to follow ### +] + +Bun v0.5.9 +bun-0.5.9 +JavaScript runtime for developing, testing, and bundling diff --git a/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.0.0/linux-amd64/bun b/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.0.0/linux-amd64/bun new file mode 100644 index 000000000..163f6bf84 --- /dev/null +++ b/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.0.0/linux-amd64/bun @@ -0,0 +1,12 @@ +name: bun +offset: 1000000 +length: 100 +snippetSha256: 0000000000000000000000000000000000000000000000000000000000000002 +fileSha256: 0000000000000000000000000000000000000000000000000000000000000002 + +### byte snippet to follow ### +] + +Bun v1.0.0 +bun-1.0.0 +JavaScript runtime for developing, testing, and bundling diff --git a/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.1.0/linux-amd64/bun b/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.1.0/linux-amd64/bun new file mode 100644 index 000000000..719498ef3 --- /dev/null +++ b/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.1.0/linux-amd64/bun @@ -0,0 +1,12 @@ +name: bun +offset: 1000000 +length: 100 +snippetSha256: 0000000000000000000000000000000000000000000000000000000000000003 +fileSha256: 0000000000000000000000000000000000000000000000000000000000000003 + +### byte snippet to follow ### +] + +Bun v1.1.0 +bun-1.1.0 +JavaScript runtime for developing, testing, and bundling diff --git a/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.3.5/linux-amd64/bun b/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.3.5/linux-amd64/bun new file mode 100644 index 000000000..e68db67f7 --- /dev/null +++ b/syft/pkg/cataloger/binary/testdata/classifiers/snippets/bun/1.3.5/linux-amd64/bun @@ -0,0 +1,12 @@ +name: bun +offset: 1000000 +length: 100 +snippetSha256: 0000000000000000000000000000000000000000000000000000000000000004 +fileSha256: 0000000000000000000000000000000000000000000000000000000000000004 + +### byte snippet to follow ### +] + +Bun v1.3.5 +bun-1.3.5 +JavaScript runtime for developing, testing, and bundling