github.com/anchore/syft@v1.38.2/internal/task/package_tasks.go (about) 1 package task 2 3 import ( 4 "github.com/anchore/syft/syft/cataloging/pkgcataloging" 5 "github.com/anchore/syft/syft/pkg" 6 "github.com/anchore/syft/syft/pkg/cataloger/ai" 7 "github.com/anchore/syft/syft/pkg/cataloger/alpine" 8 "github.com/anchore/syft/syft/pkg/cataloger/arch" 9 "github.com/anchore/syft/syft/pkg/cataloger/binary" 10 bitnamiSbomCataloger "github.com/anchore/syft/syft/pkg/cataloger/bitnami" 11 "github.com/anchore/syft/syft/pkg/cataloger/conda" 12 "github.com/anchore/syft/syft/pkg/cataloger/cpp" 13 "github.com/anchore/syft/syft/pkg/cataloger/dart" 14 "github.com/anchore/syft/syft/pkg/cataloger/debian" 15 "github.com/anchore/syft/syft/pkg/cataloger/dotnet" 16 "github.com/anchore/syft/syft/pkg/cataloger/elixir" 17 "github.com/anchore/syft/syft/pkg/cataloger/erlang" 18 "github.com/anchore/syft/syft/pkg/cataloger/gentoo" 19 "github.com/anchore/syft/syft/pkg/cataloger/githubactions" 20 "github.com/anchore/syft/syft/pkg/cataloger/golang" 21 "github.com/anchore/syft/syft/pkg/cataloger/haskell" 22 "github.com/anchore/syft/syft/pkg/cataloger/homebrew" 23 "github.com/anchore/syft/syft/pkg/cataloger/java" 24 "github.com/anchore/syft/syft/pkg/cataloger/javascript" 25 "github.com/anchore/syft/syft/pkg/cataloger/kernel" 26 "github.com/anchore/syft/syft/pkg/cataloger/lua" 27 "github.com/anchore/syft/syft/pkg/cataloger/nix" 28 "github.com/anchore/syft/syft/pkg/cataloger/ocaml" 29 "github.com/anchore/syft/syft/pkg/cataloger/php" 30 "github.com/anchore/syft/syft/pkg/cataloger/python" 31 "github.com/anchore/syft/syft/pkg/cataloger/r" 32 "github.com/anchore/syft/syft/pkg/cataloger/redhat" 33 "github.com/anchore/syft/syft/pkg/cataloger/ruby" 34 "github.com/anchore/syft/syft/pkg/cataloger/rust" 35 sbomCataloger "github.com/anchore/syft/syft/pkg/cataloger/sbom" 36 "github.com/anchore/syft/syft/pkg/cataloger/snap" 37 "github.com/anchore/syft/syft/pkg/cataloger/swift" 38 "github.com/anchore/syft/syft/pkg/cataloger/swipl" 39 "github.com/anchore/syft/syft/pkg/cataloger/terraform" 40 "github.com/anchore/syft/syft/pkg/cataloger/wordpress" 41 ) 42 43 const ( 44 // Java ecosystem labels 45 Java = "java" 46 Maven = "maven" 47 48 // Go ecosystem labels 49 Go = "go" 50 Golang = "golang" 51 52 // JavaScript ecosystem labels 53 JavaScript = "javascript" 54 Node = "node" 55 NPM = "npm" 56 57 // Python ecosystem labels 58 Python = "python" 59 ) 60 61 //nolint:funlen 62 func DefaultPackageTaskFactories() Factories { 63 return []factory{ 64 // OS package installed catalogers /////////////////////////////////////////////////////////////////////////// 65 newSimplePackageTaskFactory(arch.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, "linux", "alpm", "archlinux"), 66 newSimplePackageTaskFactory(alpine.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, "linux", "apk", "alpine"), 67 newSimplePackageTaskFactory(debian.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, "linux", "dpkg", "debian"), 68 newSimplePackageTaskFactory(gentoo.NewPortageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, "linux", "portage", "gentoo"), 69 newSimplePackageTaskFactory(redhat.NewDBCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.OSTag, "linux", "rpm", "redhat"), 70 71 // OS package declared catalogers /////////////////////////////////////////////////////////////////////////// 72 newSimplePackageTaskFactory(redhat.NewArchiveCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.OSTag, "linux", "rpm", "redhat"), 73 newSimplePackageTaskFactory(debian.NewArchiveCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.OSTag, "linux", "deb", "debian"), 74 75 // language-specific package installed catalogers /////////////////////////////////////////////////////////////////////////// 76 newSimplePackageTaskFactory(cpp.NewConanInfoCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "cpp", "conan"), 77 newSimplePackageTaskFactory(javascript.NewPackageCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, JavaScript, Node), 78 newSimplePackageTaskFactory(php.NewComposerInstalledCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "php", "composer"), 79 newSimplePackageTaskFactory(r.NewPackageCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, pkgcataloging.DirectoryTag, "r"), 80 newSimplePackageTaskFactory(ruby.NewInstalledGemSpecCataloger, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "ruby", "gem", "gemspec"), 81 newSimplePackageTaskFactory(rust.NewAuditBinaryCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "rust", "binary"), 82 83 // language-specific package declared catalogers /////////////////////////////////////////////////////////////////////////// 84 newSimplePackageTaskFactory(cpp.NewConanCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "cpp", "conan"), 85 newSimplePackageTaskFactory(dart.NewPubspecLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "dart"), 86 newSimplePackageTaskFactory(dart.NewPubspecCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "dart"), 87 newSimplePackageTaskFactory(elixir.NewMixLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "elixir"), 88 newSimplePackageTaskFactory(erlang.NewRebarLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "erlang"), 89 newSimplePackageTaskFactory(erlang.NewOTPCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "erlang", "otp"), 90 newSimplePackageTaskFactory(haskell.NewHackageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "haskell", "hackage", "cabal"), 91 newPackageTaskFactory( 92 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 93 return golang.NewGoModuleFileCataloger(cfg.PackagesConfig.Golang) 94 }, 95 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, Go, Golang, "gomod", 96 ), 97 newSimplePackageTaskFactory(java.NewGradleLockfileCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, Java, "gradle"), 98 newPackageTaskFactory( 99 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 100 return java.NewPomCataloger(cfg.PackagesConfig.JavaArchive) 101 }, 102 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, Java, Maven, 103 ), 104 newPackageTaskFactory( 105 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 106 return javascript.NewLockCataloger(cfg.PackagesConfig.JavaScript) 107 }, 108 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, JavaScript, Node, NPM, 109 ), 110 newSimplePackageTaskFactory(php.NewComposerLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "php", "composer"), 111 newSimplePackageTaskFactory(php.NewPearCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, pkgcataloging.ImageTag, "php", "pear"), 112 newPackageTaskFactory( 113 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 114 return python.NewPackageCataloger(cfg.PackagesConfig.Python) 115 }, 116 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, Python, 117 ), 118 newSimplePackageTaskFactory(ruby.NewGemFileLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "ruby", "gem"), 119 newSimplePackageTaskFactory(ruby.NewGemSpecCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "ruby", "gem", "gemspec"), 120 newSimplePackageTaskFactory(rust.NewCargoLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "rust", "cargo"), 121 newSimplePackageTaskFactory(swift.NewCocoapodsCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "swift", "cocoapods"), 122 newSimplePackageTaskFactory(swift.NewSwiftPackageManagerCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "swift", "spm"), 123 newSimplePackageTaskFactory(swipl.NewSwiplPackCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "swipl", "pack"), 124 newSimplePackageTaskFactory(ocaml.NewOpamPackageManagerCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "ocaml", "opam"), 125 126 // language-specific package for both image and directory scans (but not necessarily declared) //////////////////////////////////////// 127 newPackageTaskFactory( 128 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 129 return dotnet.NewDotnetDepsBinaryCataloger(cfg.PackagesConfig.Dotnet) 130 }, 131 pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "dotnet", "c#", 132 ), 133 newSimplePackageTaskFactory(dotnet.NewDotnetPackagesLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.ImageTag, pkgcataloging.DirectoryTag, pkgcataloging.LanguageTag, "dotnet", "c#"), 134 newSimplePackageTaskFactory(python.NewInstalledPackageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, Python), 135 newPackageTaskFactory( 136 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 137 return golang.NewGoModuleBinaryCataloger(cfg.PackagesConfig.Golang) 138 }, 139 pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, Go, Golang, "gomod", "binary", 140 ), 141 newPackageTaskFactory( 142 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 143 return java.NewArchiveCataloger(cfg.PackagesConfig.JavaArchive) 144 }, 145 pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, Java, Maven, 146 ), 147 newSimplePackageTaskFactory(java.NewNativeImageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, Java), 148 newPackageTaskFactory( 149 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 150 return nix.NewCataloger(cfg.PackagesConfig.Nix) 151 }, 152 pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "nix", 153 ), 154 newSimplePackageTaskFactory(lua.NewPackageCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, pkgcataloging.LanguageTag, "lua"), 155 156 // other package catalogers /////////////////////////////////////////////////////////////////////////// 157 newPackageTaskFactory( 158 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 159 return binary.NewClassifierCataloger(cfg.PackagesConfig.Binary) 160 }, 161 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "binary", 162 ), 163 newSimplePackageTaskFactory(binary.NewELFPackageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "binary", "elf-package", "elf"), 164 newSimplePackageTaskFactory(binary.NewPEPackageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "binary", "pe-package", "pe", "dll", "exe"), 165 newSimplePackageTaskFactory(githubactions.NewActionUsageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, "github", "github-actions"), 166 newSimplePackageTaskFactory(githubactions.NewWorkflowUsageCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, "github", "github-actions"), 167 newSimplePackageTaskFactory(java.NewJvmDistributionCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "java", "jvm", "jdk", "jre"), 168 newPackageTaskFactory( 169 func(cfg CatalogingFactoryConfig) pkg.Cataloger { 170 return kernel.NewLinuxKernelCataloger(cfg.PackagesConfig.LinuxKernel) 171 }, 172 pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "linux", "kernel", 173 ), 174 newSimplePackageTaskFactory(php.NewInterpreterCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "binary", "php"), 175 newSimplePackageTaskFactory(sbomCataloger.NewCataloger, "sbom"), // note: not evidence of installed packages 176 newSimplePackageTaskFactory(bitnamiSbomCataloger.NewCataloger, "bitnami", pkgcataloging.InstalledTag, pkgcataloging.ImageTag), 177 newSimplePackageTaskFactory(wordpress.NewWordpressPluginCataloger, pkgcataloging.DirectoryTag, pkgcataloging.ImageTag, "wordpress"), 178 newSimplePackageTaskFactory(terraform.NewLockCataloger, pkgcataloging.DeclaredTag, pkgcataloging.DirectoryTag, "terraform"), 179 newSimplePackageTaskFactory(homebrew.NewCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "homebrew"), 180 newSimplePackageTaskFactory(conda.NewCondaMetaCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.PackageTag, "conda"), 181 newSimplePackageTaskFactory(snap.NewCataloger, pkgcataloging.DirectoryTag, pkgcataloging.InstalledTag, pkgcataloging.ImageTag, "snap"), 182 newSimplePackageTaskFactory(ai.NewGGUFCataloger, pkgcataloging.DirectoryTag, pkgcataloging.ImageTag, "ai", "model", "gguf", "ml"), 183 184 // deprecated catalogers //////////////////////////////////////// 185 // these are catalogers that should not be selectable other than specific inclusion via name or "deprecated" tag (to remain backwards compatible) 186 newSimplePackageTaskFactory(dotnet.NewDotnetDepsCataloger, pkgcataloging.DeprecatedTag), //nolint:staticcheck // TODO: remove in syft v2.0 187 newSimplePackageTaskFactory(dotnet.NewDotnetPortableExecutableCataloger, pkgcataloging.DeprecatedTag), //nolint:staticcheck // TODO: remove in syft v2.0 188 newSimplePackageTaskFactory(php.NewPeclCataloger, pkgcataloging.DeprecatedTag), //nolint:staticcheck // TODO: remove in syft v2.0 189 newSimplePackageTaskFactory(nix.NewStoreCataloger, pkgcataloging.DeprecatedTag), //nolint:staticcheck // TODO: remove in syft v2.0 190 } 191 }