Je souhaite résoudre tous les problèmes CVE de mon projet. J'utilise le plugin org.owasp.dependencycheck
, mais même sur un projet vide, il renvoie quelques CVE:
buildscript { ext.kotlin_version = '1.3.21' repositories { google() jcenter() mavenLocal() } dependencies { classpath 'com.android.tools.build:gradle:3.3.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.owasp:dependency-check-gradle:4.0.0" } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir }
Ce résultat provient du projet vide. Mon build.gradle
:
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'org.owasp.dependencycheck' android { compileSdkVersion 28 defaultConfig { applicationId "com.example.testcve" minSdkVersion 21 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencyCheck { failBuildOnCVSS 0 } check.dependsOn dependencyCheckAnalyze dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' }
et:
bcprov-jdk15on-1.56.jar: ids:(org.bouncycastle:bcprov-jdk15on:1.56, cpe:/a:bouncycastle:legion-of-the-bouncy-castle-java-crytography-api:1.56) : CVE-2017-13098, CVE-2018-1000180, CVE-2018-1000613 builder-3.3.1.jar: desugar_deploy.jar: ids:(com.google.guava:guava:21.0, cpe:/a:google:guava:21.0) : CVE-2018-10237 intellij-core-26.3.1.jar (shaded: com.google.protobuf:protobuf-java:2.6.1): ids:(cpe:/a:google:protobuf:2.6.1, com.google.protobuf:protobuf-java:2.6.1) : CVE-2015-5237 intellij-core-26.3.1.jar (shaded: org.picocontainer:picocontainer:1.2): ids:(org.picocontainer:picocontainer:1.2, cpe:/a:site_documentation_project:site_documentation:1.2) : CVE-2015-4370
Tout est à la hauteur de- date.
Des idées sur la façon de résoudre ces CVE?
3 Réponses :
Ces fichiers sont utilisés par le système de construction Android. C'est pourquoi ils sont signalés même sur un projet "vide".
Vérifiez l'arborescence des dépendances pour voir où ces fichiers sont utilisés: ./gradlew app: dependencies
... lintClassPath - The lint embedded classpath \--- com.android.tools.lint:lint-gradle:26.4.1 +--- com.android.tools:sdk-common:26.4.1 | +--- com.android.tools:sdklib:26.4.1 | | +--- com.android.tools.layoutlib:layoutlib-api:26.4.1 | | ... | +--- com.android.tools.ddms:ddmlib:26.4.1 (*) | +--- org.bouncycastle:bcpkix-jdk15on:1.56 | | \--- org.bouncycastle:bcprov-jdk15on:1.56 <-- | +--- org.bouncycastle:bcprov-jdk15on:1.56 <-- ...
Je résous le problème en ajoutant lintClassPath aux dépendances
dependencies { ... lintClassPath "org.bouncycastle:bcpkix-jdk15on:1.64" }
Il est tard mais j'espère que cela vous aidera.
La réponse de Carsten est donc tout à fait correcte mais elle n'explique pas comment gérer cela dans CI Builds par exemple.
Vous avez deux options qui fonctionnent toutes les deux. Vous pouvez exclure lintClassPath
de la vérification des dépendances ou définir releaseCompileClasspath
comme seule configuration de module à vérifier. Je recommanderais le premier car vous souhaitez probablement vérifier les configurations de modules supplémentaires si elles sont ajoutées (ou vous souhaitez également vérifier le chemin de classe de débogage / test).
lintClassPath code>
Par module (par exemple votre app/build.gradle
):
// ... buildscript, etc. omitted allprojects { // ... repository configuration omitted apply plugin: 'org.owasp.dependencycheck' dependencyCheck { skipConfigurations += 'lintClassPath' } }
Pour tous les modules (dans le root build.gradle
):
// ... android and dependency configuration omitted apply plugin: 'org.owasp.dependencycheck' // ... dependencyCheck { skipConfigurations += 'lintClassPath' }
releaseCompilepath
Remplacement simple skipConfigurations + = 'lintClassPath'
avec scanConfigurations + = 'releaseCompileClasspath'
. Pour info, ces options sont mutuellement exclusives, vous ne devez donc choisir qu'une seule de ces méthodes.
Quelle est la commande pour exécuter uniquement les dépendances pour releaseCompileClasspath? ./gradlew dependencyCheckAnalyze et ensuite?