2

我正在尝试使用 Fortify 源分析器二进制文件来扫描 Android 项目。问题是即使我正确设置了类路径,也找不到类...

这是我的命令:

sourceanalyzer -b MS.ANDROID -clean;
sourceanalyzer -b MS.ANDROID -exclude androidTest -exclude gradle -exclude maven-config -exclude test -cp "/home/devuser/android-sdk-linux/platforms/android-21/android.jar:/var/lib/jenkins/workspace/myproject/**/*.jar" -source 1.7 src

我的输出是:

[warning]: The following references to java classes could not be resolved. Please make sure to supply all the required jar files that contain these classes to SCA.
    AddressException
    BasicClientCookieHC4
    CancellationTokenSource
    ConnectionConfig.Builder
    ContentType
    Continuation
    Crashlytics
    FileBody
    HttpClientBuilder
    Immutable
    InternetAddress
    MultipartEntityBuilder
    PoolingHttpClientConnectionManager
    Registry
    RequestConfig.Builder
    SSLConnectionSocketFactory
    StringBody
    SuppressFBWarnings
    Task
    Task.TaskCompletionSource

找到 android.jar 是因为如果我删除它,我还有更多未找到的类,但即使我为每个 jar 提供完整路径,也找不到项目下的所有 jar...

如果有人有一些 Fortify with Android(或包含在 gradle 中)的教程,那也很好。

4

2 回答 2

0

目前没有涵盖 gradle 的 Fortify Knowledge 文章。我会尝试在适当的时候将 Maven 插件放入 Gradle。这样,SCA 应该找到依赖项。

如果应用程序编译成功但 SCA 返回扫描错误,则 jar 文件可能会丢失,但应用程序可能会编译,因为 jars 是从另一个应用程序(如 Tomcat 服务器(或在您的情况下为 gradle)中包含的)。可以 1) 将所有依赖的 jar 与项目捆绑在一起,或者 2) 将 SCA 合并到您的构建脚本(maven 或 ant)或包(Jenkins 或 gradle)中。

如果您将 jar 与应用程序一起打包,您将确切地知道您包含哪些功能,并且您可以更好地控制您的攻击面。如果您使用 Tomcat 等外部服务来寻找依赖关系,那么您对可以调用的功能的保证就会减少,从而使解决方案的健壮性和安全性降低。

于 2016-04-19T19:17:40.697 回答
0

由于可用的格式,我以答案的形式发表评论。所以,试试这个:

cd /var/lib/jenkins/workspace/myproject/
find . | grep Task.class
find . -name .jar | while read jar; do grep -r 'Task' "$jar" ; done

这应该告诉您,在您指定的 jar 中,这些类中的至少一个在哪里。如果在 jar 中没有找到它,则说明您没有指定足够的类路径。

于 2016-04-15T09:02:57.627 回答