add grafana classifier (#4516)

Signed-off-by: witchcraze <witchcraze@gmail.com>
This commit is contained in:
witchcraze 2026-01-05 23:51:41 +09:00 committed by GitHub
parent 15af992225
commit c8184bdb4c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 209 additions and 0 deletions

View File

@ -603,6 +603,26 @@ catalogers:
cpes: cpes:
- cpe:2.3:a:elixir-lang:elixir:*:*:*:*:*:*:*:* - cpe:2.3:a:elixir-lang:elixir:*:*:*:*:*:*:*:*
type: BinaryPkg type: BinaryPkg
- method: glob
criteria:
- '**/grafana'
packages:
- class: grafana-binary
name: grafana
purl: pkg:generic/grafana
cpes:
- cpe:2.3:a:grafana:grafana:*:*:*:*:*:*:*:*
type: BinaryPkg
- method: glob
criteria:
- '**/grafana-server'
packages:
- class: grafana-binary
name: grafana
purl: pkg:generic/grafana
cpes:
- cpe:2.3:a:grafana:grafana:*:*:*:*:*:*:*:*
type: BinaryPkg
- method: glob - method: glob
criteria: criteria:
- '**/java' - '**/java'

View File

@ -1430,6 +1430,94 @@ func Test_Cataloger_PositiveCases(t *testing.T) {
}, },
}, },
}, },
{
logicalFixture: "grafana/12.3.1/linux-amd64",
expected: pkg.Package{
Name: "grafana",
Version: "12.3.1",
Type: "binary",
PURL: "pkg:generic/grafana@12.3.1",
Locations: locations("grafana"),
Metadata: metadata("grafana-binary"),
},
},
{
logicalFixture: "grafana/12.0.0/linux-amd64",
expected: pkg.Package{
Name: "grafana",
Version: "12.0.0",
Type: "binary",
PURL: "pkg:generic/grafana@12.0.0",
Locations: locations("grafana"),
Metadata: metadata("grafana-binary"),
},
},
{
logicalFixture: "grafana/11.0.0/linux-amd64",
expected: pkg.Package{
Name: "grafana",
Version: "11.0.0",
Type: "binary",
PURL: "pkg:generic/grafana@11.0.0",
Locations: locations("grafana"),
Metadata: metadata("grafana-binary"),
},
},
{
logicalFixture: "grafana/10.4.19/linux-amd64",
expected: pkg.Package{
Name: "grafana",
Version: "10.4.19",
Type: "binary",
PURL: "pkg:generic/grafana@10.4.19",
Locations: locations("grafana"),
Metadata: metadata("grafana-binary"),
},
},
{
logicalFixture: "grafana/9.5.21/linux-amd64",
expected: pkg.Package{
Name: "grafana",
Version: "9.5.21",
Type: "binary",
PURL: "pkg:generic/grafana@9.5.21",
Locations: locations("grafana"),
Metadata: metadata("grafana-binary"),
},
},
{
logicalFixture: "grafana/9.0.0/linux-amd64",
expected: pkg.Package{
Name: "grafana",
Version: "9.0.0",
Type: "binary",
PURL: "pkg:generic/grafana@9.0.0",
Locations: locations("grafana-server"),
Metadata: metadata("grafana-binary"),
},
},
{
logicalFixture: "grafana/7.5.17/linux-amd64",
expected: pkg.Package{
Name: "grafana",
Version: "7.5.17",
Type: "binary",
PURL: "pkg:generic/grafana@7.5.17",
Locations: locations("grafana-server"),
Metadata: metadata("grafana-binary"),
},
},
{
logicalFixture: "grafana/6.7.6/linux-amd64",
expected: pkg.Package{
Name: "grafana",
Version: "6.7.6",
Type: "binary",
PURL: "pkg:generic/grafana@6.7.6",
Locations: locations("grafana-server"),
Metadata: metadata("grafana-binary"),
},
},
} }
for _, test := range tests { for _, test := range tests {

View File

@ -697,6 +697,36 @@ func DefaultClassifiers() []binutils.Classifier {
PURL: mustPURL("pkg:generic/elixir@version"), PURL: mustPURL("pkg:generic/elixir@version"),
CPEs: singleCPE("cpe:2.3:a:elixir-lang:elixir:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), CPEs: singleCPE("cpe:2.3:a:elixir-lang:elixir:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource),
}, },
{
Class: "grafana-binary",
FileGlob: "**/grafana",
EvidenceMatcher: binutils.MatchAny(
// [NUL][NUL][NUL][NUL]release-12.3.1[NUL][NUL][NUL][NUL]
m.FileContentsVersionMatcher(`\x00+release-(?P<version>[0-9]{2}\.[0-9]+\.[0-9]+)\x00+`),
// HEAD[NUL][NUL][NUL][NUL]12.0.0[NUL][NUL]$a
// 11.0.0[NUL][NUL]$a
m.FileContentsVersionMatcher(`(?P<version>[0-9]{2}\.[0-9]+\.[0-9]+)\x00+\$a`),
// [NUL]0xDC0xBF10.4.19[NUL]
m.FileContentsVersionMatcher(`\x00.(?P<version>10\.[0-9]+\.[0-9]+)\x00`),
// 9.5.21[NUL][NUL]v9.5.x[NUL][NUL][NUL][NUL][NUL][NUL]$a
m.FileContentsVersionMatcher(`(?P<version>9\.[0-9]+\.[0-9]+)\x00\x00v`),
),
Package: "grafana",
PURL: mustPURL("pkg:generic/grafana@version"),
CPEs: singleCPE("cpe:2.3:a:grafana:grafana:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource),
},
{
Class: "grafana-binary",
FileGlob: "**/grafana-server",
EvidenceMatcher: m.FileContentsVersionMatcher(
// HEAD[NUL][NUL][NUL][NUL]9.0.0[NUL]:[NUL]
// HEAD[NUL][NUL][NUL][NUL]:[NUL][NUL][NUL][NUL][NUL][NUL][NUL]7.5.17[NUL][NUL][NUL][NUL]
// HEAD[NUL][NUL][NUL][NUL]m[NUL]...[NUL][NUL]6.7.6[NUL][NUL][NUL].[NUL][NUL][NUL][NUL][NUL][NUL][NUL]:
`HEAD\x00+.*\x00+(?P<version>[0-9]\.[0-9]+\.[0-9]+)\x00+`),
Package: "grafana",
PURL: mustPURL("pkg:generic/grafana@version"),
CPEs: singleCPE("cpe:2.3:a:grafana:grafana:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource),
},
} }
return append(classifiers, defaultJavaClassifiers()...) return append(classifiers, defaultJavaClassifiers()...)

View File

@ -846,3 +846,74 @@ from-images:
paths: paths:
- /usr/local/lib/python3.11/site-packages/opencv_contrib_python.libs/libavcodec-9aae324f.so.59.37.100 - /usr/local/lib/python3.11/site-packages/opencv_contrib_python.libs/libavcodec-9aae324f.so.59.37.100
- name: grafana
version: 12.3.1
images:
- ref: grafana/grafana:12.3.1@sha256:7c064e627d9cb50c3485c9ded5ca0222de89a08e41403322a0c3ca6f1777a8d1
platform: linux/amd64
paths:
- /usr/share/grafana/bin/grafana
- name: grafana
version: 12.0.0
images:
- ref: grafana/grafana:12.0.0@sha256:884f0f140669a5b9dccee1baece011a3fa5dd1951f1ba158b03de8ad1d178380
platform: linux/amd64
paths:
- /usr/share/grafana/bin/grafana
- name: grafana
version: 11.0.0
images:
- ref: grafana/grafana:11.0.0@sha256:a80bc3848cf5d4b2958ea25dbeb36fa9442ef4be8c73fe4bff11340307c32919
platform: linux/amd64
paths:
- /usr/share/grafana/bin/grafana
- name: grafana
version: 10.4.19
images:
- ref: grafana/grafana:10.4.19@sha256:388cb75aa7ab40af6766f7a8db73c90abfbfb646bf8208e86f7198d2c9530793
platform: linux/amd64
paths:
- /usr/share/grafana/bin/grafana
- name: grafana
version: 9.5.21
images:
- ref: grafana/grafana:9.5.21@sha256:439f57822d2daa899c0a04420488fd7c638c1d41d5db417563692ed0bbbfbb9c
platform: linux/amd64
paths:
- /usr/share/grafana/bin/grafana
- name: grafana
version: 9.4.0
images:
- ref: grafana/grafana:9.4.0-beta1@sha256:d0060bcf84f0a0897e7c6c7e1b8740d89d10bf55b2dd45ba45942d36e40cdcc7
platform: linux/amd64
paths:
- /usr/share/grafana/bin/grafana-server
- name: grafana
version: 9.0.0
images:
- ref: grafana/grafana:9.0.0@sha256:1fdfc1f6feb47c0007ab59abdc5310493649367d9de1be27cf0e18ff529ca463
platform: linux/amd64
paths:
- /usr/share/grafana/bin/grafana-server
- name: grafana
version: 7.5.17
images:
- ref: grafana/grafana:7.5.17@sha256:6d4ab5ab5031f2725635522c28aa9917c6e614c49513a3f5c864900b868ea79a
platform: linux/amd64
paths:
- /usr/share/grafana/bin/grafana-server
- name: grafana
version: 6.7.6
images:
- ref: grafana/grafana:6.7.6@sha256:7ee99c7f0835f1023b3a56c275da8bb37068ab9fcd5e33378c65435928d54dd0
platform: linux/amd64
paths:
- /usr/share/grafana/bin/grafana-server