From bcc1f15cebb09a3af2df0b3a754385613afb29aa Mon Sep 17 00:00:00 2001 From: nadimz Date: Mon, 13 Apr 2026 22:27:48 +0200 Subject: [PATCH] feat: OpenLDAP binary classifier (#4755) Signed-off-by: Nadim Zubidat --- syft/pkg/cataloger/binary/capabilities.yaml | 10 ++++++++++ .../cataloger/binary/classifier_cataloger_test.go | 11 +++++++++++ syft/pkg/cataloger/binary/classifiers.go | 11 +++++++++++ .../openldap/2.6.10/linux-amd64/ldapsearch | Bin 0 -> 353 bytes syft/pkg/cataloger/binary/testdata/config.yaml | 8 ++++++++ 5 files changed, 40 insertions(+) create mode 100644 syft/pkg/cataloger/binary/testdata/classifiers/snippets/openldap/2.6.10/linux-amd64/ldapsearch diff --git a/syft/pkg/cataloger/binary/capabilities.yaml b/syft/pkg/cataloger/binary/capabilities.yaml index 5331d74c9..6a1ef1d2d 100644 --- a/syft/pkg/cataloger/binary/capabilities.yaml +++ b/syft/pkg/cataloger/binary/capabilities.yaml @@ -423,6 +423,16 @@ catalogers: cpes: - cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:* type: BinaryPkg + - method: glob + criteria: + - '**/ldapsearch' + packages: + - class: openldap-search-binary + name: openldap + purl: pkg:generic/openldap + cpes: + - cpe:2.3:a:openldap:openldap:*:*:*:*:*:*:*:* + type: BinaryPkg - method: glob criteria: - '**/libQt*Core.so*' diff --git a/syft/pkg/cataloger/binary/classifier_cataloger_test.go b/syft/pkg/cataloger/binary/classifier_cataloger_test.go index 95b8487ea..bc49f22b3 100644 --- a/syft/pkg/cataloger/binary/classifier_cataloger_test.go +++ b/syft/pkg/cataloger/binary/classifier_cataloger_test.go @@ -1342,6 +1342,17 @@ func Test_Cataloger_PositiveCases(t *testing.T) { Metadata: metadata("openssl-binary"), }, }, + { + logicalFixture: "openldap/2.6.10/linux-amd64", + expected: pkg.Package{ + Name: "openldap", + Version: "2.6.10", + Type: "binary", + PURL: "pkg:generic/openldap@2.6.10", + Locations: locations("ldapsearch"), + Metadata: metadata("openldap-search-binary"), + }, + }, { logicalFixture: "qt/4.8.6/linux-amd64", expected: pkg.Package{ diff --git a/syft/pkg/cataloger/binary/classifiers.go b/syft/pkg/cataloger/binary/classifiers.go index 53f902c0d..4f394828e 100644 --- a/syft/pkg/cataloger/binary/classifiers.go +++ b/syft/pkg/cataloger/binary/classifiers.go @@ -516,6 +516,17 @@ func DefaultClassifiers() []binutils.Classifier { PURL: mustPURL("pkg:generic/openssl@version"), CPEs: singleCPE("cpe:2.3:a:openssl:openssl:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), }, + { + Class: "openldap-search-binary", + FileGlob: "**/ldapsearch", + EvidenceMatcher: m.FileContentsVersionMatcher( + // $OpenLDAP: ldapsearch 2.4.45' + `\$OpenLDAP:\sldapsearch\s(?P[0-9]+\.[0-9]+\.[0-9]+)`, + ), + Package: "openldap", + PURL: mustPURL("pkg:generic/openldap@version"), + CPEs: singleCPE("cpe:2.3:a:openldap:openldap:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), + }, { Class: "qt-qtbase-lib", FileGlob: "**/libQt*Core.so*", diff --git a/syft/pkg/cataloger/binary/testdata/classifiers/snippets/openldap/2.6.10/linux-amd64/ldapsearch b/syft/pkg/cataloger/binary/testdata/classifiers/snippets/openldap/2.6.10/linux-amd64/ldapsearch new file mode 100644 index 0000000000000000000000000000000000000000..1da49a0e8a317ff160640bcc7494076d765fcedd GIT binary patch literal 353 zcmYk2yH3ME6hzaqU$K%YLP4_kdc6-H8LX^Oe#AkbK3UF_d;Ge;C`>f3RQ`P2|rs^$_LNNX&i!hlqj4$1^7 z1WOvF*QPRLjF-ykXbb^>7DgaMJ@XQfrM8QIGK3UoS&F5rf~~+%NhX!igg_vrCy&~h z2try}d5h$X^3j5)5C91oD~f``!}{& zY?j3xzdekx-#>1T|8L;9QY#RA`Ak=iB}ai37qSLh3p01v%|=_$Dg{zO%X;nF+|#99 RyN>+FbZK*QKT#is?;oD$WE=nh literal 0 HcmV?d00001 diff --git a/syft/pkg/cataloger/binary/testdata/config.yaml b/syft/pkg/cataloger/binary/testdata/config.yaml index 1f363bca8..cbf3d71f1 100644 --- a/syft/pkg/cataloger/binary/testdata/config.yaml +++ b/syft/pkg/cataloger/binary/testdata/config.yaml @@ -823,6 +823,14 @@ from-images: paths: - /usr/local/openresty/openssl/bin/openssl + - name: openldap + version: 2.6.10 + images: + - ref: bitnamilegacy/openldap:2.6.10-debian-12-r4@sha256:966fd39ed25813890e9bd57dac56def163bbcfe64967e0bae59ab018d505bd93 + platform: linux/amd64 + paths: + - /opt/bitnami/openldap/bin/ldapsearch + - name: curl version: 8.9.1 images: