github.com/anchore/syft@v1.38.2/syft/pkg/cataloger/binary/classifiers_java.go (about) 1 package binary 2 3 import ( 4 "github.com/anchore/syft/syft/cpe" 5 "github.com/anchore/syft/syft/pkg/cataloger/internal/binutils" 6 ) 7 8 //nolint:funlen 9 func defaultJavaClassifiers() []binutils.Classifier { 10 m := binutils.ContextualEvidenceMatchers{CatalogerName: catalogerName} 11 12 return []binutils.Classifier{ 13 { 14 Class: "java-binary", 15 FileGlob: "**/java", 16 EvidenceMatcher: binutils.BranchingEvidenceMatcher([]binutils.Classifier{ 17 { 18 Class: "java-binary-graalvm", 19 EvidenceMatcher: m.FileContentsVersionMatcher( 20 `(?m)\x00(?P<version>[0-9]+[.0-9]+[.0-9]+\+[0-9]+-jvmci-[0-9]+[.0-9]+-b[0-9]+)\x00`), 21 Package: "graalvm", 22 PURL: mustPURL("pkg:generic/oracle/graalvm@version"), 23 CPEs: singleCPE("cpe:2.3:a:oracle:graalvm:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 24 }, 25 { 26 Class: "java-binary-openjdk-zulu", 27 EvidenceMatcher: binutils.MatchAll( 28 binutils.MatchPath(`**/*zulu*/**`), 29 binutils.MatchAny( 30 m.FileContentsVersionMatcher( 31 // [NUL]openjdk[NUL]java[NUL]0.0[NUL]11.0.17+8-LTS[NUL] 32 `(?m)\x00java\x00(?P<release>[0-9]+[.0-9]*)\x00(?P<version>[0-9]+[^\x00]+)\x00`), 33 m.FileContentsVersionMatcher( 34 // arm64 versions: [NUL]0.0[NUL][NUL][NUL][NUL][NUL]11.0.22+7[NUL][NUL][NUL][NUL][NUL][NUL][NUL]openjdk[NUL]java[NUL] 35 `(?m)\x00(?P<release>[0-9]+[.0-9]*)\x00+(?P<version>[0-9]+[^\x00]+)\x00+(openjdk|java)`), 36 ), 37 ), 38 Package: "zulu", 39 PURL: mustPURL("pkg:generic/azul/zulu@version"), 40 CPEs: singleCPE("cpe:2.3:a:azul:zulu:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 41 }, 42 { 43 Class: "java-binary-openjdk-with-update", 44 EvidenceMatcher: binutils.MatchAny( 45 m.FileContentsVersionMatcher( 46 `openjdk`, 47 // [NUL]openjdk[NUL]java[NUL]1.8[NUL]1.8.0_352-b08[NUL] 48 `(?m)java\x00(?P<release>[0-9]+[.0-9]*)\x00(?P<version>(?<primary>[0-9]+[^\x00]+)_(?<update>[^\x00]+)-[^\x00]+)\x00`), 49 m.FileContentsVersionMatcher( 50 `openjdk`, 51 // arm64 versions: [NUL]0.0[NUL][NUL][NUL][NUL][NUL]1.8.0_352-b08[NUL][NUL][NUL][NUL][NUL][NUL][NUL]openjdk[NUL]java[NUL] 52 `(?m)\x00(?P<release>[0-9]+[.0-9]*)\x00+(?P<version>(?<primary>[0-9]+[^\x00]+)_(?<update>[^\x00]+)-[^\x00]+)\x00+openjdk\x00java`), 53 ), 54 Package: "openjdk", 55 PURL: mustPURL("pkg:generic/oracle/openjdk@version"), 56 CPEs: singleCPE("cpe:2.3:a:oracle:openjdk:{{.primary}}:update{{.update}}:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 57 }, 58 { 59 Class: "java-binary-openjdk", 60 EvidenceMatcher: binutils.MatchAny( 61 m.FileContentsVersionMatcher( 62 // [NUL]openjdk[NUL]java[NUL]0.0[NUL]11.0.17+8-LTS[NUL] 63 `(?m)\x00openjdk\x00java\x00(?P<release>[0-9]+[.0-9]*)\x00(?P<version>[0-9]+[^\x00]+)\x00`), 64 m.FileContentsVersionMatcher( 65 // arm64 versions: [NUL]0.0[NUL][NUL][NUL][NUL][NUL]11.0.22+7[NUL][NUL][NUL][NUL][NUL][NUL][NUL]openjdk[NUL]java[NUL] 66 `(?m)\x00(?P<release>[0-9]+[.0-9]*)\x00+(?P<version>[0-9]+[^\x00]+)\x00+openjdk\x00java`), 67 ), 68 Package: "openjdk", 69 PURL: mustPURL("pkg:generic/oracle/openjdk@version"), 70 CPEs: singleCPE("cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 71 }, 72 { 73 Class: "java-binary-ibm", 74 EvidenceMatcher: binutils.MatchAll( 75 binutils.MatchAny( 76 binutils.MatchPath("**/ibm/**"), 77 binutils.SharedLibraryLookup( 78 `^libjli\.so$`, 79 m.FileContentsVersionMatcher("IBM_JAVA")), 80 ), 81 m.FileContentsVersionMatcher( 82 // [NUL]java[NUL]1.8[NUL][NUL][NUL]1.8.0-foreman_2022_01_20_09_33-b00[NUL] 83 `(?m)\x00java\x00+(?P<release>[0-9]+[.0-9]+)\x00+(?P<version>[0-9]+[-._a-zA-Z0-9]+)\x00`), 84 ), 85 Package: "java", 86 PURL: mustPURL("pkg:generic/ibm/java@version"), 87 CPEs: singleCPE("cpe:2.3:a:ibm:java:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 88 }, 89 { 90 Class: "java-binary-openjdk-fallthrough", 91 EvidenceMatcher: m.FileContentsVersionMatcher( 92 "openjdk", 93 // [NUL]19.0.1+10-21[NUL] 94 `(?m)\x00(?P<version>[0-9]+[.0-9]+[+][-0-9]+)\x00`, 95 ), 96 Package: "jre", 97 PURL: mustPURL("pkg:generic/oracle/jre@version"), 98 CPEs: singleCPE("cpe:2.3:a:oracle:jre:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 99 }, 100 { 101 Class: "java-binary-oracle", 102 EvidenceMatcher: m.FileContentsVersionMatcher( 103 // [NUL]19.0.1+10-21[NUL] 104 // java[NUL]1.8[NUL]1.8.0_451-b10 105 `(?m)\x00(?P<version>[0-9]+\.[0-9]+\.[-._+a-zA-Z0-9]+)\x00`, 106 ), 107 Package: "jre", 108 PURL: mustPURL("pkg:generic/oracle/jre@version"), 109 CPEs: singleCPE("cpe:2.3:a:oracle:jre:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 110 }, 111 }...), 112 }, 113 { 114 Class: "java-jdb-binary", 115 FileGlob: "**/jdb", 116 EvidenceMatcher: binutils.BranchingEvidenceMatcher([]binutils.Classifier{ 117 { 118 Class: "java-binary-graalvm", 119 EvidenceMatcher: m.FileContentsVersionMatcher( 120 `(?m)\x00(?P<version>[0-9]+[.0-9]+[.0-9]+\+[0-9]+-jvmci-[0-9]+[.0-9]+-b[0-9]+)\x00`), 121 Package: "graalvm", 122 PURL: mustPURL("pkg:generic/oracle/graalvm@version"), 123 CPEs: singleCPE("cpe:2.3:a:oracle:graalvm_for_jdk:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 124 }, 125 { 126 Class: "jdb-binary-openjdk-zulu", 127 EvidenceMatcher: binutils.MatchAll( 128 binutils.MatchPath("**/*zulu*/**"), 129 binutils.MatchAny( 130 m.FileContentsVersionMatcher( 131 // [NUL]jdb[NUL]0.0[NUL]11.0.17+8-LTS[NUL] 132 `(?m)(java|jdb)\x00(?P<release>[0-9]+[.0-9]*)\x00(?P<version>[0-9]+[^\x00]+)\x00`), 133 m.FileContentsVersionMatcher( 134 // arm64 versions: [NUL]0.0[NUL][NUL][NUL][NUL][NUL]11.0.22+7[NUL][NUL][NUL][NUL][NUL][NUL][NUL]jdb[NUL] 135 `(?m)\x00(?P<release>[0-9]+[.0-9]*)\x00+(?P<version>[0-9]+[^\x00]+)\x00+(java|jdb)`), 136 ), 137 ), 138 Package: "zulu", 139 PURL: mustPURL("pkg:generic/azul/zulu@version"), 140 CPEs: singleCPE("cpe:2.3:a:azul:zulu:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 141 }, 142 { 143 Class: "java-jdb-binary-openjdk", 144 EvidenceMatcher: binutils.MatchAll( 145 m.FileContentsVersionMatcher( 146 // [NUL]openjdk[NUL]java[NUL]0.0[NUL]11.0.17+8-LTS[NUL] 147 // [NUL]openjdk[NUL]java[NUL]1.8[NUL]1.8.0_352-b08[NUL] 148 `(?m)\x00openjdk\x00java\x00(?P<release>[0-9]+[.0-9]*)\x00(?P<version>[0-9]+[^\x00]+)\x00`), 149 m.FileContentsVersionMatcher( 150 // arm64 versions: [NUL]0.0[NUL][NUL][NUL][NUL][NUL]11.0.22+7[NUL][NUL][NUL][NUL][NUL][NUL][NUL]openjdk[NUL]java[NUL] 151 `(?m)\x00(?P<release>[0-9]+[.0-9]*)\x00+(?P<version>[0-9]+[^\x00]+)\x00+openjdk\x00java`), 152 ), 153 Package: "openjdk", 154 PURL: mustPURL("pkg:generic/oracle/openjdk@version"), 155 CPEs: singleCPE("cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 156 }, 157 { 158 Class: "java-sdk-binary-ibm", 159 EvidenceMatcher: binutils.MatchAll( 160 binutils.MatchAny( 161 binutils.MatchPath("**/ibm/**"), 162 binutils.SharedLibraryLookup( 163 `^libjli\.so$`, 164 m.FileContentsVersionMatcher("IBM_JAVA")), 165 ), 166 m.FileContentsVersionMatcher( 167 // [NUL]java[NUL]./lib/tools.jar./lib/sa-jdi.jar./classes.-J-ms8m[NUL][NUL]1.8[NUL][NUL][NUL]1.8.0-foreman_2022_01_20_09_33-b00[NUL] 168 `(?m)\x00java\x00.+?\x00(?P<version>[0-9]+[-._a-zA-Z0-9]+)\x00`), 169 ), 170 Package: "java_sdk", 171 PURL: mustPURL("pkg:generic/ibm/java_sdk@version"), 172 CPEs: singleCPE("cpe:2.3:a:ibm:java_sdk:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 173 }, 174 { 175 Class: "java-binary-openjdk-fallthrough", 176 EvidenceMatcher: binutils.MatchAll( 177 m.FileContentsVersionMatcher( 178 "openjdk", 179 `(?m)\x00(?P<version>[0-9]+\.[0-9]+\.[0-9]+(\+[0-9]+)?([-._a-zA-Z0-9]+)?)\x00`), 180 ), 181 Package: "openjdk", 182 PURL: mustPURL("pkg:generic/oracle/openjdk@version"), 183 CPEs: singleCPE("cpe:2.3:a:oracle:openjdk:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 184 }, 185 { 186 Class: "java-binary-jdk", 187 EvidenceMatcher: m.FileContentsVersionMatcher( 188 `(?m)\x00(?P<version>[0-9]+\.[0-9]+\.[0-9]+(\+[0-9]+)?([-._a-zA-Z0-9]+)?)\x00`), 189 Package: "jdk", 190 PURL: mustPURL("pkg:generic/oracle/jdk@version"), 191 CPEs: singleCPE("cpe:2.3:a:oracle:jdk:*:*:*:*:*:*:*:*", cpe.NVDDictionaryLookupSource), 192 }, 193 }...), 194 }, 195 } 196 }