XmirrorSecurity/OpenSCA-cli

[Bug] java-Gradle 编译方式 springboot项目, 使用io.spring.dependency-management插件导入springboot依赖时 无法扫描出依赖以及漏洞

Closed this issue · 5 comments

hrc8 commented

Title

OpenSCA-cli无法检测出 java - Gradle编译方式 使用io.spring.dependency-management插件不明确标识版本号时无法扫描出依赖和漏洞

Description

使用OpenSCA-cli打包成docker镜像, 扫描java Gradle项目
镜像无Gradle编译环境, 使用build.gradle文件静态分析

build.gradle

plugins {
id 'java'
id 'org.springframework.boot' version '3.2.3'
id 'io.spring.dependency-management' version '1.1.4'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
sourceCompatibility = '17'
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-ldap'
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
implementation 'org.springframework.boot:spring-boot-starter-validation'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.session:spring-session-data-redis'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'org.postgresql:postgresql'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
useJUnitPlatform()
}

Possible Fix (optional)

希望支持gradle编译的静态文件分析

Gradle 解析比较困难,近期会提供集成有编译工具的 docker 镜像,敬请关注。

hrc8 commented

Gradle 解析比较困难,近期会提供集成有编译工具的 docker 镜像,敬请关注。

如果不想集成编译工具呢, 因为有些项目是指定的是maven**仓库, 但是部署环境是不给外网的连接的

不影响,若调用包管理器(动态逻辑)失败,会自动走静态解析的逻辑,示意图如下:

解析逻辑

hrc8 commented

不影响,若调用包管理器(动态逻辑)失败,会自动走静态解析的逻辑,示意图如下:

解析逻辑

主要是在没有gradle编译环境的时候, springboot项目在不明确指定版本号的情况下, 静态解析无法解析出组件

已加入需求池