Skip to content

InternalAnalyzer not associating vulnerabilities for CPE #829

Description

@officerNordberg

Current Behavior:

Analysis Fails because the Component only has a CPE in QueryManager.matchIdentity(). Operating Systems won't ever have a purl as far as I can tell.

Steps to Reproduce:

        <component type="operating-system"> 
            <name>kernel-4.19.78-yocto-standard</name>
            <version>4.19.69</version>
            <cpe>cpe:2.3:o:linux:linux_kernel:4.19.69:*:*:*:*:*:*:*</cpe>
        </component>  

Expected Behavior:

in version 3.8.0 299 Vulnerabilities are associated

Environment:

  • Dependency-Track Version: 4.0.0-SNAPSHOT
  • Distribution: Docker
  • BOM Format & Version: CycloneDX XML 1.2
  • Database Server: H2
  • Browser: Chrome

Additional Details:

java.lang.NullPointerException: null
	at org.dependencytrack.persistence.QueryManager.matchIdentity(QueryManager.java:1706)
	at org.dependencytrack.util.NotificationUtil.analyzeNotificationCriteria(NotificationUtil.java:51)
	at org.dependencytrack.tasks.scanners.AbstractVulnerableSoftwareAnalysisTask.analyzeVersionRange(AbstractVulnerableSoftwareAnalysisTask.java:58)
	at org.dependencytrack.tasks.scanners.InternalAnalysisTask.versionRangeAnalysis(InternalAnalysisTask.java:104)
	at org.dependencytrack.tasks.scanners.InternalAnalysisTask.analyze(InternalAnalysisTask.java:86)
	at org.dependencytrack.tasks.scanners.InternalAnalysisTask.inform(InternalAnalysisTask.java:59)
	at org.dependencytrack.tasks.VulnerabilityAnalysisTask.performAnalysis(VulnerabilityAnalysisTask.java:148)
	at org.dependencytrack.tasks.VulnerabilityAnalysisTask.inform(VulnerabilityAnalysisTask.java:103)
	at alpine.event.framework.BaseEventService.lambda$publish$0(BaseEventService.java:99)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

If I attempt to use a ternary query.executeWithArray(cid.getPurl() == null ? null : cid.getPurl().canonicalize(), to fix the purl NPE I get this instead which is way over my head.

org.datanucleus.exceptions.NucleusUserException: Object with id "3696" is managed by a different persistence manager
	at org.datanucleus.ExecutionContextImpl.findObjectProvider(ExecutionContextImpl.java:1276)
	at org.datanucleus.store.rdbms.scostore.ElementContainerStore.validateElementForWriting(ElementContainerStore.java:283)
	at org.datanucleus.store.rdbms.scostore.JoinListStore.internalAdd(JoinListStore.java:200)
	at org.datanucleus.store.rdbms.scostore.AbstractListStore.add(AbstractListStore.java:113)
	at org.datanucleus.store.types.wrappers.backed.List.add(List.java:647)
	at org.dependencytrack.model.Component.addVulnerability(Component.java:593)
	at org.dependencytrack.persistence.QueryManager.addVulnerability(QueryManager.java:1402)
	at org.dependencytrack.persistence.QueryManager.addVulnerability(QueryManager.java:1388)
	at org.dependencytrack.tasks.scanners.AbstractVulnerableSoftwareAnalysisTask.analyzeVersionRange(AbstractVulnerableSoftwareAnalysisTask.java:59)
	at org.dependencytrack.tasks.scanners.InternalAnalysisTask.versionRangeAnalysis(InternalAnalysisTask.java:104)
	at org.dependencytrack.tasks.scanners.InternalAnalysisTask.analyze(InternalAnalysisTask.java:86)
	at org.dependencytrack.tasks.scanners.InternalAnalysisTask.inform(InternalAnalysisTask.java:59)
	at org.dependencytrack.tasks.VulnerabilityAnalysisTask.performAnalysis(VulnerabilityAnalysisTask.java:148)
	at org.dependencytrack.tasks.VulnerabilityAnalysisTask.inform(VulnerabilityAnalysisTask.java:103)
	at alpine.event.framework.BaseEventService.lambda$publish$0(BaseEventService.java:99)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)

Metadata

Metadata

Labels

defectSomething isn't workingp1Critical bugs that prevent DT from being used, or features that must be implemented ASAPpending release

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions