5
votes

Vérification CVE Android

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?


1 commentaires

Quelle est la commande pour exécuter uniquement les dépendances pour releaseCompileClasspath? ./gradlew dependencyCheckAnalyze et ensuite?


3 Réponses :


8
votes

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   <--
...


0 commentaires

0
votes

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.


0 commentaires

4
votes

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).

À l'exclusion de 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'
}

Incluant uniquement 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.


0 commentaires