Code Monkey home page Code Monkey logo

eclipse / steady Goto Github PK

View Code? Open in Web Editor NEW
516.0 32.0 124.0 86.75 MB

Analyses your Java applications for open-source dependencies with known vulnerabilities, using both static analysis and testing to determine code context and usage for greater accuracy. https://eclipse.github.io/steady/

License: Apache License 2.0

Java 93.17% Python 1.57% Dockerfile 0.03% HTML 0.87% Shell 0.25% JavaScript 3.38% CSS 0.03% ANTLR 0.68% Groovy 0.02%
open-source security-tools

steady's Introduction

Eclipse Steady (Incubator Project)

License PRs Welcome Maven Central CII Best Practices REUSE status

Discover, assess and mitigate known vulnerabilities in your Java projects

Eclipse Steady supports software development organizations in regards to the secure use of open-source components during application development. The tool analyzes Java applications in order to:

  • detect whether they depend on open-source components with known vulnerabilities,
  • collect evidence regarding the execution of vulnerable code in a given application context (through the combination of static and dynamic analysis techniques), and
  • support developers in the mitigation of such dependencies.

As such, it addresses the OWASP Top 10 security risk A6, Vulnerable and Outdated Components, which is often the root cause of data breaches: snyk.io/blog/owasp-top-10-breaches

In comparison to other tools, the detection is code-centric and usage-based, which allows for more accurate detection and assessment than tools relying on meta-data. It is a collection of client-side scan tools, microservices and rich OpenUI5 Web frontends.

Disclaimer

Please note the following:

  • Steady can only find vulnerabilities maintained in Project KB, which is Steady's only source of vulnerability information. The reason is that only Project KB provides information about fix commits in a systematic way and in machine readable format. As of September 2022, Project KB contains roughly 700+ vulnerabilities, with little coverage of the years 2021 and later.
  • The ideal Steady setup is to run the Docker Compose application on an internal cloud, with CI/CD systems and developer work stations connecting to that instance. This makes the operation of Steady more heavy-weight compared to other open source vulnerablity scanners like OWASP Dependency Check. This architecture comes with some advantages and disadvantages. For example, scan results from different systems are uploaded to such central server, which offers a user interface with various features to explore application dependencies and understand vulnerability exploitability. On the other hand, the architecture makes it more difficult to run some quick tests.

As a consequence, we recommend Steady primarily for organizations that can afford (a) hosting Steady on their internal cloud and (b) dedicating resources to contribute to the vulnerability information in Project KB.

Quickstart

This section provides the bare minimum to setup Steady and to use its Maven plugin for scanning a Java application.

  1. The Steady backend, a Docker Compose application, stores information about open-source vulnerabilities and scan results. It has to be installed once, ideally on a dedicated host, and must be running during application scans.

    Download and run setup-steady.sh to install the backend on any host with a recent version of Docker/Docker Compose (the use of profiles requires a version >= 1.28, installable with pip install docker-compose or as described here).

    Notes:

    • Tested with Docker 20.10.11 + Docker Compose 1.29.2 on Intel Macs with macOS 12.3.1, and Docker 20.10.15 + Docker Compose 1.29.0 on Ubuntu 20.04.4 and 18.04.6.
    • During its first execution, triggered by the setup script by setup-steady.sh or directly using start-steady.sh -s ui, the backend will be bootstrapped by downloading and processing code-level information of hundreds of vulnerabilities maintained in the open-source knowledge base Project KB. While the bootstrapping can take up to two hours, later updates will import the delta on a daily basis. Run start-steady.sh -s none to shut down all Docker Compose services of the backend.
  2. A Steady scan client, e.g. the Maven plugin, analyzes the code of your application project and its dependencies. Being available on Maven Central, the clients do not require any installation. However, they need to be run whenever your application's code or dependencies change.

    In case application scan and Steady backend run on different hosts, the scan clients must be configured accordingly. Just copy and adjust the file ~/.steady.properties, which has been created in the user's home directory during the backend setup.

    For Maven, cd into your project and run the app analysis goal as follows (see here for more information about available goals):

    mvn org.eclipse.steady:plugin-maven:3.2.5:app

    Note: During application scans, a lot of information about its dependencies is uploaded to the backend, which makes that the first scan takes significantly more time than later scans of the same application.

History

Originally developed by SAP Security Research, the tool has been productively used at SAP between late 2016 and April 2021. As of April 2017, the tool was the officially recommended open-source scan solution for Java (and then Python) applications at SAP. As of April 2019, it has been used to perform 1M+ scans of ~1000 Java and Python development projects.

The tool approach is best described in the following scientific papers, please cite these if you use the tool for your research work:

Features

  • Detection of vulnerable code is realized by discovering method signatures in Java archives and comparing their source and byte code with the vulnerable and fixed version (as known from the fix commit). As such, the detection is more accurate than for approaches based on meta-data (less false-positives and false-negatives). In particular, it is robust against rebundling, a very common practice in the Java ecosystem.
  • Assessment of vulnerable dependencies by application developers and security experts is supported by information about the potential and actual execution of vulnerable code. This information is based on call graph analysis and trace information collected during JUnit and integration tests. Going down to the granularity of single methods, application developers are presented with the potential and actual call stack from application code till vulnerable code.
  • The addition of new vulnerabilities to the knowledge base does not require the re-scan of applications. In other words, right after an addition to the knowledge base, it is immediately known whether previously scanned applications are affected or not.
  • Mitigation proposals consider the reachable share of dependencies, i.e., the set of methods that can be potentially reached from application code union the actual executions observed during tests. This information is used to compute several metrics aiming to let developers chose the best non-vulnerable replacement of a vulnerable dependency (best in regards to non-breaking and with least regression likelihood).
  • Individual findings can be exempted if developers come to the conclusion that a vulnerability cannot be exploited in a given application-context. This information can be maintained in an auditable fashion (incl. timestamp and author information) and typically prevents build exceptions during CI/CD pipelines.
  • Organization-internal CERTs can query for all applications affected by a given vulnerability. This feature supports, for instance, larger development organizations with many software applications developed by distributed and de-central development units.

Requirements

Eclipse Steady has a distributed architecture composed of a couple of Spring Boot microservices, two Web frontends and a number of client-side scanners/plugins, which perform the actual analysis of application and dependency code on build systems or developer workstations.

To build/test the entire project, the following tools are needed:

Build and Test

Eclipse Steady is built with Maven. The module lang-python requires Python 3 to be installed. To enable the support for Gradle the profile gradle needs to be activated (-P gradle).

mvn clean install

During the installation phase of mvn all the tests are run. Long-running tests can be disabled with the flag -DexcludedGroups=org.eclipse.steady.shared.categories.Slow.

Limitations

Due to the current lack of an authentication and authorization mechanism, it is NOT recommended to run the Web frontends and server-side microservices on systems accessible from the Internet.

Other limitations:

  • Static and dynamic analyses are not implemented for Python
  • Java 9 multi-release archives are not supported (classes below META-INF/versions are simply ignored)

Acknowledgement

This work is partly funded by the EU under the H2020 research project SPARTA (Grant No.830892).

Documentation · Support · Contributing · Deploy guide · Scan guide · Vulnerability database · Blog

steady's People

Contributors

anddann avatar cedricdangremont avatar copernico avatar diffblue-assistant avatar gotzillaz avatar henrikplate avatar ichbinfrog avatar jonathanbaker7 avatar mayabaworkjam avatar mwager avatar naramsim avatar serenaponta avatar sumeetpatil avatar vinodanandan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

steady's Issues

Loading wrong list of projects in the workspace

Describe the bug
In the application frontend, it can occur that the list of modules of the previously selected workspace is displayed

To Reproduce
In the Apps FrontEnd, select a workspace A. The list of modules of workspace A will be displayed (each item having the 3 dots icons). Immediately after this, select a workspace B, The list of modules of workspace B will be displayed (each item having the 3 dots icons). After a while, the list of modules "B" will be updated and each item will have no icon or the red exclamation mark icon.
If the list of workspace B was fast to load, then some times after, it could be that the list of modules from workspace A is displayed again (without icon or with red exclamation mark icon).

This is a side effect of the "lazy loading of the module list" feature: the update of the list for workpace A arrives late and later than the update of the list for workspace B.

In case of bugs in a Web frontend:
see previous section

Expected behavior
Once you have selected the workspace B, data related to workspace A should no longer be considered.

Vulas version
3.0.10-SNAPSHOT

implementation of vulas:instr to be completed

Describe the bug
vulas:instr runs successfully but does not really perform the task of instrumenting the Jar/War

To Reproduce
mvn -Dvulas initialize vulas:instr

[main] INFO com.sap.psr.vulas.shared.util.StopWatch - [772190] [00.000 ms] Started: Goal [id=MAVEN-INSTR-1539695503973-31653158, type=INSTR, [...]
[main] INFO com.sap.psr.vulas.backend.BackendConnector - Deleting cache: [0] bug change lists, [0] app existance
[main] INFO com.sap.psr.vulas.shared.util.StopWatch - [772190] [00.013 ms] Progress after [00.000 ms]: Completed execution
[main] INFO com.sap.psr.vulas.shared.util.StopWatch - [772190] [00.013 ms] Completed: Goal [id=MAVEN-INSTR-1539695503973-31653158, type=INSTR, [...]

Vulas version
3.x

Error when install project

Describe the bug
Error when install project

IMPORTANT: please ensure that you do not refer to any internal or confidential information from your company/organization here. Also, please provide only references to public (open-source) projects on which the issue can be reproduced. Please do not include in the issue description any reference or link to non-public or otherwise proprietary information.

To Reproduce
Steps to reproduce the behavior:

When I use command mvn clean install , I will get error in console

Expected behavior
A clear and concise description of what you expected to happen.

Vulas version

  • Vulas version (release and commit)
    3.1.6

In case of bugs happening on the client (when performing scans)

  • OS/version WIN10
  • Java JVM/version or Python version JAVA 13.0.1
  • Vulas client (Maven plugin, Gradle plugin, CLI, setuptools plugin)
  • Console log(s) (with confidential information removed)
  • URL of a public repo that can be used for reproducing (minimal example if possible)

Additional context
Add any other context about the problem here.
Reactor Summary for com.sap.research.security.vulas:root 3.1.7-SNAPSHOT:
[INFO]
[INFO] com.sap.research.security.vulas:root ............... SUCCESS [ 4.610 s]
[INFO] Shared classes ..................................... SUCCESS [ 24.005 s]
[INFO] Framework and base classes for language analysis ... SUCCESS [ 44.081 s]
[INFO] Java - Init ........................................ SUCCESS [ 0.702 s]
[INFO] Java - Core classes for Java analysis .............. FAILURE [ 41.265 s]
[INFO] Java - Core classes and SPI for Java reachability analysis SKIPPED
[INFO] Java - Wala call graph constructor service ......... SKIPPED
[INFO] Java - Soot call graph constructor service ......... SKIPPED
[INFO] Python - Core classes for Python analysis .......... SKIPPED
[INFO] Interface for Git and SVN repos .................... SKIPPED
[INFO] Analysis of security patches ....................... SKIPPED
[INFO] Analysis of libraries in regards to security patches SKIPPED
[INFO] Command Line Interface ............................. SKIPPED
[INFO] Plugin for Maven ................................... SKIPPED
[INFO] Frontend for analysis results ...................... SKIPPED
[INFO] Frontend for bug administration .................... SKIPPED
[INFO] REST service to analyze and compare libraries (init) SKIPPED
[INFO] REST service to analyze and compare libraries ...... SKIPPED
[INFO] REST service to manage scan results and bugs ....... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:56 min
[INFO] Finished at: 2019-11-15T18:04:36+08:00
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:testCompile (default-testCompile) on project lang-java: Compilation failure
[ERROR] /C:/Users/XXXXX/Downloads/vulnerability-assessment-tool-master/vulnerability-assessment-tool-master/lang-java/src/test/java/com/sap/psr/vulas/monitor/GetCallerClass.java:[24,43] ?????
[ERROR] ??: ? Reflection
[ERROR] ??: ??? sun.reflect
[ERROR]
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR]
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :lang-java

docker-compose up failed: exited with code 127

Describe the bug
When trying to set-up the rest-nvd container through 'docker-compose up' the container is exited with code 127. How should I fix this?

To Reproduce

  1. Clone repo steady
  2. Change directory to steady/rest-nvd
  3. Run 'docker-compose up'
  4. See error:

docker error

Expected behavior
A successful build of the docker container.

In case of bugs happening on the client (when performing scans)

  • OS: Windows 10
  • Python 3.8

Error starting vulas-os-haproxy

Hello,

The previous steps worked for me following the documentation.

I'm getting an error when executing the $docker-compose up command and the HAPROXY components is not started.

This is the command output:

vulas-os-rest-lib-utils ... done
Starting vulas-os-frontend-apps ... done
Starting vulas-os-frontend-bugs ... done
Starting vulas-os-postgresql ... done
Starting vulas-os-rest-backend ... done
Starting vulas-os-haproxy ... error
Starting vulas-os-patch-lib-analyzer ... done

ERROR: for vulas-os-haproxy Cannot start service haproxy: b'OCI runtime create
failed: container_linux.go:345: starting container process caused "process_linux
.go:424: container init caused \"rootfs_linux.go:58: mounting \\\"/d/VULAS
/docker/haproxy/conf/haproxy.cfg\\\" to rootfs \\\"/mnt/sda1
/var/lib/docker/overlay2/aaacd90c25e882adf73c38770f437d8f50e7f091d67ec64091d7634
992877da7/merged\\\" at \\\"/mnt/sda1/var/lib/docker/overlay2/aaacd90c25e8
82adf73c38770f437d8f50e7f091d67ec64091d7634992877da7/merged/usr/local/etc/haprox
y/haproxy.cfg\\\" caused \\\"not a directory\\\"\"": unknown: Are you
trying to mount a directory onto a file (or vice-versa)? Check if the specified
host path exists and is the expected type'

ERROR: for haproxy Cannot start service haproxy: b'OCI runtime create failed: c
ontainer_linux.go:345: starting container process caused "process_linux.go:424:
container init caused \"rootfs_linux.go:58: mounting \\\"/d/VULAS
/docker/haproxy/conf/haproxy.cfg\\\" to rootfs \\\"/mnt/sda1/var/lib/
docker/overlay2/aaacd90c25e882adf73c38770f437d8f50e7f091d67ec64091d7634992877da7
/merged\\\" at \\\"/mnt/sda1/var/lib/docker/overlay2/aaacd90c25e882adf73c3
8770f437d8f50e7f091d67ec64091d7634992877da7/merged/usr/local/etc/haproxy/haproxy
.cfg\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to
mount a directory onto a file (or vice-versa)? Check if the specified host path
exists and is the expected type'
ERROR: Encountered errors while bringing up the project.

To Reproduce
Steps to reproduce the behavior:

  1. $docker build XXXX .
  2. $docker run XXXXX
  3. $docker-compose build
  4. $docker-compose up

Expected behavior
All the componenets working.

Additional context

VULAS_RELEASE=3.0.16

  • OS/version --> WIN 7 64 bits
  • Java JVM/version or Python version --> JDK 1.8.0_201
  • Docker --> Docker Toolbox

Client: 18.03.0-ce
API version: go1.9.4
Git comFri Mar 23 08:31:36 2018
OS/Arch: falsews/amd64
Orchestrator: swarm

Server: Docker Engine - Community
Engine: 18.09.5
API version: go1.10.8nimum version 1.12)
Git commit: Thu Apr 11 04:50:00 2019
OS/Arch: false/amd64

Add any other context about the problem here.

Thank you very much in advance for your support.

Best regards,

Angel.

Certain combinations of instrumentors create compile execptions

Describe the bug
When using both the SingleStackTraceInstrumentor and the TouchPointInstrumentor, the generated code cannot be compiled because the variable vls_cls_ldr is defined in a branch created by the former, hence, not visible for the latter.

To Reproduce
See above

Expected behavior
All combinations of the four existing instrumentors can be used.

Vulas version
3.0.10

Docker run failure

Describe the bug
Can't tun docker because of

Failed tests: 
  IT01_ArtifactControllerTest.getLatestVersionMavenTest:282 null

To Reproduce
Steps to reproduce the behavior: Run command from the guide:
sudo docker run -it --rm -v ${PWD}/docker:/exporter --env-file ./docker/.env -e mvn_flags=-DexcludedGroups=com.sap.psr.vulas.shared.categories.Slow vulas-build-img

OS Description

Docker version 18.09.0, build 4d60db4  

Linux 4.15.0-39-generic #42-Ubuntu SMP Tue Oct 23 15:48:01 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Log

[INFO] REST service to analyze and compare libraries ...... FAILURE [ 24.601 s]```


[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  03:26 min
[INFO] Finished at: 2018-11-15T09:53:56Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project rest-lib-utils: There are test failures.
[ERROR] 
[ERROR] Please refer to /vulas/rest-lib-utils/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project rest-lib-utils: There are test failures.

Please refer to /vulas/rest-lib-utils/target/surefire-reports for the individual test results.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoFailureException: There are test failures.

Please refer to /vulas/rest-lib-utils/target/surefire-reports for the individual test results.
    at org.apache.maven.plugin.surefire.SurefireHelper.reportExecution (SurefireHelper.java:82)
    at org.apache.maven.plugin.surefire.SurefirePlugin.handleSummary (SurefirePlugin.java:254)
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked (AbstractSurefireMojo.java:854)
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute (AbstractSurefireMojo.java:722)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :rest-lib-utils
Cleaning old archives
Copying new archives
cp: can't stat 'rest-backend/target/*.?ar': No such file or directory
cp: can't stat 'rest-lib-utils/target/*.?ar': No such file or directory

Soot 3.1.0-SNAPSHOT not present anymore in Mavencentral

[�[1;31mERROR�[m] Failed to execute goal on project �[36mlang-java-reach-soot�[m: �[1;31mCould not resolve dependencies for project com.sap.research.security.vulas:lang-java-reach-soot:jar:3.0.15-SNAPSHOT: Could not find artifact ca.mcgill.sable:soot:jar:3.1.0-SNAPSHOT in gradle (https://maven.google.com/)�[m -> �[1m[Help 1]�[m
�[1;31morg.apache.maven.lifecycle.LifecycleExecutionException�[m: �[1;31mFailed to execute goal on project �[36mlang-java-reach-soot�[m: �[1;31mCould not resolve dependencies for project com.sap.research.security.vulas:lang-java-reach-soot:jar:3.0.15-SNAPSHOT: Could not find artifact ca.mcgill.sable:soot:jar:3.1.0-SNAPSHOT in gradle (https://maven.google.com/)�[m�[m

Travis builds continuously fail with the error above. I guess that Soot is not found in maven central and maven.google.

We could try to update soot:3.1.0-SNAPSHOT to soot:3.2.0

Enhance documentation on configuration and first usage

Hi all,
after I can build and start vulas, I tried to set up my workspace. I followed the instructions on
https://github.com/SAP/vulnerability-assessment-tool/blob/master/docker/readme-pages/Workspace.md
but when I have created my workspace, I end up on this page displaying the Space named with a hash.
vulas-workspace

The documentation is not clear at this point, where and how to continue to get a working setup. I have read all of the setup and config pages on the project - but I did not find the respective documentation in all of the projects pages... If it is there and I am not able to find the proper page, I would appreciate to get the right link :)

If there is no such document, I would like to have an short "quick start" document with some screenshots, which would make it easy to see, if things go right and configuration is correct.

Thx in advance for your help

restlibutils retry loop

Restlibutils service gets stuck in a retry-loop when search.maven.org is down, leading to DoS.

Particularly, on May 25th, Maven was answering with 504 to clients calls.

This message was logged multiple times (12000) in the 9 hours of downtime:

2019-05-25 19:48:56.179 ERROR 1 --- [nio-8092-exec-8] c.s.p.v.cia.util.MavenCentralWrapper: 
HttpServerErrorException: Received status code [504] calling url 
[http://search.maven.org/solrsearch/select?q={q}&core={core}&rows={rows}&wt={wt}]
with app [g:"commons-fileupload" AND a:"commons-fileupload"], retry from [2],
HttpServerErrorException: Received status code [504] calling url 
[http://search.maven.org/solrsearch/select?q={q}&core={core}&rows={rows}&wt={wt}]
with app [g:"commons-fileupload" AND a:"commons-fileupload"], retry from [2]

Single-line message:

2019-05-25 19:48:56.179 ERROR 1 --- [nio-8092-exec-8] c.s.p.v.cia.util.MavenCentralWrapper     : HttpServerErrorException: Received status code [504] calling url [http://search.maven.org/solrsearch/select?q={q}&core={core}&rows={rows}&wt={wt}] with app [g:"commons-fileupload" AND a:"commons-fileupload"], retry from [2], HttpServerErrorException: Received status code [504] calling url [http://search.maven.org/solrsearch/select?q={q}&core={core}&rows={rows}&wt={wt}] with app [g:"commons-fileupload" AND a:"commons-fileupload"], retry from [2]

Documentation links are not working

Documentation links are not working on below URL - https://sap.github.io/vulnerability-assessment-tool/admin/

Get going:
Setup your workspace (if you don't have one)
Become familiar with the various analysis goals (first time users) - Link not working
Analyze your Java or Python application (on a regular basis)- Link not working
Assess findings using the apps Web frontend (following every analysis)- Link not working
Further links:
Configure the client-side analysis - Link not working
Automate with Jenkins - Link not working
Get help if you run into troubles - Link not working

Fix links for non-NVD vulnerabilities

Is your feature request related to a problem? Please describe.
Vulnerabilities not (yet) described in the NVD are not properly linked in the result Html, Xml and Json reports. The page shown right now shows the error message CVE ID Not Found.

Describe the solution you'd like
Take the links from the vulnerability database rather than appending the vulnerability identifier to the URL https://nvd.nist.gov/vuln/detail/.

Describe alternatives you've considered
None

Additional context
None

Provide REST API to get all applications of a given workspace

The REST API currently exposed by the vulnerability assessment tool provides a list of all vulnerabilities for the projects reporting to a workspace. However, if there are projects reporting to this workspace which have no vulnerabilities, the REST API does not return anything about them.

It would be very helpful the REST API to also provide a list of the projects which report to a workspace and do not have any vulnerabilities. Currently this information cannot be retrieved via the REST API and there is no alternative way to get it programmatically.

One scenario for this feature would be for automated validation that all projects from a predefined list of projects actually report to the vulnerability assessment tool. Currently if no vulnerabilities are returned by the REST API for a project it cannot be determined whether this is because the project has no vulnerabilities or because the project does not report at all.

Installation issue

Hello, I'm interested in your tool and I would like to analyze some projects. I started following the README, the tutorial and the manual but I didn't understand how to install it!

First I cloned the repo, then I added this dependency in poms of rest-backend and rest-lib-utils because I had some compile issues:

<dependency>
  <groupId>io.springfox</groupId>
  <artifactId>springfox-swagger1</artifactId>
  <version>2.9.2</version>
</dependency>

Then I run mvn clean install -DskipTests, but noting happens aside from the generation of targets directories.

Then I tried different things:

  • Running MainController/JAR of rest-backend but it gives me this exeption:
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::       (v1.5.22.RELEASE)

2020-02-11 10:04:45.717  INFO 32728 --- [           main] c.s.p.vulas.backend.rest.MainController  : Starting MainController v3.1.9-SNAPSHOT on emaia-pc with PID 32728 (/home/emaia/IdeaProjects/steady/rest-backend/target/rest-backend-3.1.9-SNAPSHOT.jar started by emaia in /home/emaia/IdeaProjects/steady)
2020-02-11 10:04:45.721  INFO 32728 --- [           main] c.s.p.vulas.backend.rest.MainController  : The following profiles are active: docker
2020-02-11 10:04:45.812  INFO 32728 --- [           main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@b1a58a3: startup date [Tue Feb 11 10:04:45 CET 2020]; root of context hierarchy
2020-02-11 10:04:47.118  INFO 32728 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'dispatcherServlet' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=coverageController; factoryMethodName=dispatcherServlet; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [com/sap/psr/vulas/backend/rest/CoverageController.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=applicationController; factoryMethodName=dispatcherServlet; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [com/sap/psr/vulas/backend/rest/ApplicationController.class]]
2020-02-11 10:04:47.119  INFO 32728 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'dispatcherServlet' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=applicationController; factoryMethodName=dispatcherServlet; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [com/sap/psr/vulas/backend/rest/ApplicationController.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=hubIntegrationController; factoryMethodName=dispatcherServlet; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [com/sap/psr/vulas/backend/rest/HubIntegrationController.class]]
2020-02-11 10:04:47.696  INFO 32728 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'managementServletContext' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.actuate.autoconfigure.EndpointWebMvcHypermediaManagementContextConfiguration; factoryMethodName=managementServletContext; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/actuate/autoconfigure/EndpointWebMvcHypermediaManagementContextConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration; factoryMethodName=managementServletContext; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/actuate/autoconfigure/EndpointWebMvcAutoConfiguration.class]]
2020-02-11 10:04:48.218  INFO 32728 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$801af697] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-02-11 10:04:48.886  INFO 32728 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8091 (http)
2020-02-11 10:04:48.932  INFO 32728 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2020-02-11 10:04:48.932  INFO 32728 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.43
2020-02-11 10:04:49.142  INFO 32728 --- [ost-startStop-1] o.a.c.c.C.[.[localhost].[/backend]       : Initializing Spring embedded WebApplicationContext
2020-02-11 10:04:49.142  INFO 32728 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 3337 ms
2020-02-11 10:04:49.564  INFO 32728 --- [ost-startStop-1] o.f.core.internal.util.VersionPrinter    : Flyway Community Edition 5.0.7 by Boxfuse
2020-02-11 10:04:49.646 ERROR 32728 --- [ost-startStop-1] o.a.tomcat.jdbc.pool.ConnectionPool      : Unable to create initial connections of pool.

org.postgresql.util.PSQLException: Il tentativo di connessione è fallito.
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:292) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.Driver.makeConnection(Driver.java:454) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.Driver.connect(Driver.java:256) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319) ~[tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:212) ~[tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:736) [tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:668) [tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:483) [tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:154) [tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118) [tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107) [tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131) [tomcat-jdbc-8.5.43.jar!/:na]
	at org.flywaydb.core.internal.util.jdbc.JdbcUtils.openConnection(JdbcUtils.java:51) [flyway-core-5.0.7.jar!/:na]
	at org.flywaydb.core.internal.database.DatabaseFactory.createDatabase(DatabaseFactory.java:67) [flyway-core-5.0.7.jar!/:na]
	at org.flywaydb.core.Flyway.execute(Flyway.java:1634) [flyway-core-5.0.7.jar!/:na]
	at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) [flyway-core-5.0.7.jar!/:na]
	at org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet(FlywayMigrationInitializer.java:65) [spring-boot-autoconfigure-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1688) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:297) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:634) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:448) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1177) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1072) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1533) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1280) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1131) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:364) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1268) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:297) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1131) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1197) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1099) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:372) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1177) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1072) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1131) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:467) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1177) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1072) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) [spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:212) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:194) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:88) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:77) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getServletContextInitializerBeans(EmbeddedWebApplicationContext.java:240) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.selfInitialize(EmbeddedWebApplicationContext.java:214) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.access$000(EmbeddedWebApplicationContext.java:91) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext$1.onStartup(EmbeddedWebApplicationContext.java:205) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:53) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5154) [tomcat-embed-core-8.5.43.jar!/:8.5.43]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [tomcat-embed-core-8.5.43.jar!/:8.5.43]
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412) [tomcat-embed-core-8.5.43.jar!/:8.5.43]
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402) [tomcat-embed-core-8.5.43.jar!/:8.5.43]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_232]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_232]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_232]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_232]
Caused by: java.net.UnknownHostException: postgresql
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_232]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_232]
	at java.net.Socket.connect(Socket.java:607) ~[na:1.8.0_232]
	at org.postgresql.core.PGStream.<init>(PGStream.java:70) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192) ~[postgresql-42.2.5.jar!/:42.2.5]
	... 115 common frames omitted

2020-02-11 10:04:49.653 ERROR 32728 --- [ost-startStop-1] o.s.b.c.embedded.tomcat.TomcatStarter    : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'dispatcherServletRegistration' defined in class path resource [org/springframework/boot/autoconfigure/web/DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration.class]: Unsatisfied dependency expressed through method 'dispatcherServletRegistration' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'hubIntegrationController' defined in URL [jar:file:/home/emaia/IdeaProjects/steady/rest-backend/target/rest-backend-3.1.9-SNAPSHOT.jar!/BOOT-INF/classes!/com/sap/psr/vulas/backend/rest/HubIntegrationController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'applicationRepositoryImpl': Unsatisfied dependency expressed through field 'appRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'applicationRepository': Cannot create inner bean '(inner bean)#3cc2d5b7' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#3cc2d5b7': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.exception.FlywaySqlException: 
Unable to obtain database connection
------------------------------------
SQL State  : 08001
Error Code : 0
Message    : Il tentativo di connessione è fallito.

2020-02-11 10:04:49.687  INFO 32728 --- [           main] o.apache.catalina.core.StandardService   : Stopping service [Tomcat]
2020-02-11 10:04:49.694  WARN 32728 --- [           main] ationConfigEmbeddedWebApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
2020-02-11 10:04:49.703  INFO 32728 --- [           main] utoConfigurationReportLoggingInitializer : 

Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enabled.
2020-02-11 10:04:49.712 ERROR 32728 --- [           main] o.s.boot.SpringApplication               : Application startup failed

org.springframework.context.ApplicationContextException: Unable to start embedded container; nested exception is org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:138) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:536) ~[spring-context-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:123) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:666) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:353) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:300) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1082) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1071) [spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at com.sap.psr.vulas.backend.rest.MainController.main(MainController.java:312) [classes!/:3.1.9-SNAPSHOT]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_232]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_232]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_232]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_232]
	at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [rest-backend-3.1.9-SNAPSHOT.jar:3.1.9-SNAPSHOT]
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [rest-backend-3.1.9-SNAPSHOT.jar:3.1.9-SNAPSHOT]
	at org.springframework.boot.loader.Launcher.launch(Launcher.java:51) [rest-backend-3.1.9-SNAPSHOT.jar:3.1.9-SNAPSHOT]
	at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52) [rest-backend-3.1.9-SNAPSHOT.jar:3.1.9-SNAPSHOT]
Caused by: org.springframework.boot.context.embedded.EmbeddedServletContainerException: Unable to start embedded Tomcat
	at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.initialize(TomcatEmbeddedServletContainer.java:135) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainer.<init>(TomcatEmbeddedServletContainer.java:87) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getTomcatEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:535) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory.getEmbeddedServletContainer(TomcatEmbeddedServletContainerFactory.java:177) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:162) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:135) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	... 16 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'dispatcherServletRegistration' defined in class path resource [org/springframework/boot/autoconfigure/web/DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration.class]: Unsatisfied dependency expressed through method 'dispatcherServletRegistration' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'hubIntegrationController' defined in URL [jar:file:/home/emaia/IdeaProjects/steady/rest-backend/target/rest-backend-3.1.9-SNAPSHOT.jar!/BOOT-INF/classes!/com/sap/psr/vulas/backend/rest/HubIntegrationController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'applicationRepositoryImpl': Unsatisfied dependency expressed through field 'appRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'applicationRepository': Cannot create inner bean '(inner bean)#3cc2d5b7' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#3cc2d5b7': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.exception.FlywaySqlException: 
Unable to obtain database connection
------------------------------------
SQL State  : 08001
Error Code : 0
Message    : Il tentativo di connessione è fallito.

	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:467) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1072) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:212) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.getOrderedBeansOfType(ServletContextInitializerBeans.java:194) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.addServletContextInitializerBeans(ServletContextInitializerBeans.java:88) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.web.servlet.ServletContextInitializerBeans.<init>(ServletContextInitializerBeans.java:77) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getServletContextInitializerBeans(EmbeddedWebApplicationContext.java:240) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.selfInitialize(EmbeddedWebApplicationContext.java:214) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.access$000(EmbeddedWebApplicationContext.java:91) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext$1.onStartup(EmbeddedWebApplicationContext.java:205) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.boot.context.embedded.tomcat.TomcatStarter.onStartup(TomcatStarter.java:53) ~[spring-boot-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5154) ~[tomcat-embed-core-8.5.43.jar!/:8.5.43]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ~[tomcat-embed-core-8.5.43.jar!/:8.5.43]
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1412) ~[tomcat-embed-core-8.5.43.jar!/:8.5.43]
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1402) ~[tomcat-embed-core-8.5.43.jar!/:8.5.43]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[na:1.8.0_232]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[na:1.8.0_232]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[na:1.8.0_232]
	at java.lang.Thread.run(Thread.java:748) ~[na:1.8.0_232]
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'hubIntegrationController' defined in URL [jar:file:/home/emaia/IdeaProjects/steady/rest-backend/target/rest-backend-3.1.9-SNAPSHOT.jar!/BOOT-INF/classes!/com/sap/psr/vulas/backend/rest/HubIntegrationController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'applicationRepositoryImpl': Unsatisfied dependency expressed through field 'appRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'applicationRepository': Cannot create inner bean '(inner bean)#3cc2d5b7' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#3cc2d5b7': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.exception.FlywaySqlException: 
Unable to obtain database connection
------------------------------------
SQL State  : 08001
Error Code : 0
Message    : Il tentativo di connessione è fallito.

	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:189) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1197) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1099) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:372) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1072) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1131) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	... 26 common frames omitted
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'applicationRepositoryImpl': Unsatisfied dependency expressed through field 'appRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'applicationRepository': Cannot create inner bean '(inner bean)#3cc2d5b7' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#3cc2d5b7': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.exception.FlywaySqlException: 
Unable to obtain database connection
------------------------------------
SQL State  : 08001
Error Code : 0
Message    : Il tentativo di connessione è fallito.

	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:586) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:364) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1268) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:297) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1131) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	... 49 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'applicationRepository': Cannot create inner bean '(inner bean)#3cc2d5b7' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#3cc2d5b7': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.exception.FlywaySqlException: 
Unable to obtain database connection
------------------------------------
SQL State  : 08001
Error Code : 0
Message    : Il tentativo di connessione è fallito.

	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:313) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:129) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1533) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1280) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:551) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:211) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1131) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1059) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:583) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	... 65 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#3cc2d5b7': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.exception.FlywaySqlException: 
Unable to obtain database connection
------------------------------------
SQL State  : 08001
Error Code : 0
Message    : Il tentativo di connessione è fallito.

	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:108) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArguments(ConstructorResolver.java:634) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:448) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1177) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1072) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:511) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBean(BeanDefinitionValueResolver.java:299) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	... 78 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.exception.FlywaySqlException: 
Unable to obtain database connection
------------------------------------
SQL State  : 08001
Error Code : 0
Message    : Il tentativo di connessione è fallito.

	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1630) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:481) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:297) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	... 86 common frames omitted
Caused by: org.flywaydb.core.internal.exception.FlywaySqlException: 
Unable to obtain database connection
------------------------------------
SQL State  : 08001
Error Code : 0
Message    : Il tentativo di connessione è fallito.

	at org.flywaydb.core.internal.util.jdbc.JdbcUtils.openConnection(JdbcUtils.java:57) ~[flyway-core-5.0.7.jar!/:na]
	at org.flywaydb.core.internal.database.DatabaseFactory.createDatabase(DatabaseFactory.java:67) ~[flyway-core-5.0.7.jar!/:na]
	at org.flywaydb.core.Flyway.execute(Flyway.java:1634) ~[flyway-core-5.0.7.jar!/:na]
	at org.flywaydb.core.Flyway.migrate(Flyway.java:1168) ~[flyway-core-5.0.7.jar!/:na]
	at org.springframework.boot.autoconfigure.flyway.FlywayMigrationInitializer.afterPropertiesSet(FlywayMigrationInitializer.java:65) ~[spring-boot-autoconfigure-1.5.22.RELEASE.jar!/:1.5.22.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1688) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626) ~[spring-beans-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]
	... 95 common frames omitted
Caused by: org.postgresql.util.PSQLException: Il tentativo di connessione è fallito.
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:292) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:195) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.Driver.makeConnection(Driver.java:454) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.Driver.connect(Driver.java:256) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319) ~[tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:212) ~[tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:736) ~[tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:668) ~[tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:483) ~[tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:154) ~[tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:118) ~[tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:107) ~[tomcat-jdbc-8.5.43.jar!/:na]
	at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:131) ~[tomcat-jdbc-8.5.43.jar!/:na]
	at org.flywaydb.core.internal.util.jdbc.JdbcUtils.openConnection(JdbcUtils.java:51) ~[flyway-core-5.0.7.jar!/:na]
	... 101 common frames omitted
Caused by: java.net.UnknownHostException: postgresql
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184) ~[na:1.8.0_232]
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_232]
	at java.net.Socket.connect(Socket.java:607) ~[na:1.8.0_232]
	at org.postgresql.core.PGStream.<init>(PGStream.java:70) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91) ~[postgresql-42.2.5.jar!/:42.2.5]
	at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192) ~[postgresql-42.2.5.jar!/:42.2.5]
	... 115 common frames omitted
  • Running MainControler rest-lib-utils and its produced JAR. It does, but I don't know what to do then

Is there another another and smarter way to launch the tool? Thank you for your support.

Can't access app front end

Describe the bug
I am currently trying to deploy the Eclipse Steady tool on a default Ubuntu VM following the Docker deploy guide https://eclipse.github.io/steady/admin/tutorials/docker/.

After running the instructions in the run section, it appears that everything should be set up.
image

The next instruction was to check http://localhost:8033/haproxy?stat to see if all endpoints were green. I tried connecting there through a web browser in my VM but was unable to connect. The web browser told me that it was unable to connect to the server at localhost:8033. I was also unable to connect to the front end with http://localhost:8033/apps. For both attempts, I also tried using https instead of http. I combed through the application's documentation, searched the FAQ, and the questions posted on StackExchange and it doesn't appear that anyone else is having this issue but me. Is there anything that I might have missed?

Expected behavior
Following the docker deploy guide, after following the directions under the "Run" section, I should be able to access the app's front end at http://localhost:8033/apps.

Vulas version
3.1.6-SNAPSHOT

  • Vulas version (release and commit)

In case of bugs in a Web frontend

  • Browser type and version [e.g. chrome, safari]
    Firefox 77.0.1
  • Screenshot (if possible, with confidential information removed)
    image

In case of bugs happening on the client (when performing scans)
Ubuntu 20.04 LTS VM

  • Java JVM/version or Python version

Additional context
When following the deploy guide, I copied the sample .env file and didn't change anything. The contents are posted below.

Vulas
VULAS_RELEASE=3.1.6-SNAPSHOT
VULAS_ENV=prod

MANDATORY SETTINGS
PostgreSQL
POSTGRES_USER=postgres
POSTGRES_PASSWORD=changeme

HAProxy
HAPROXY_STATS_USER=haproxy
HAPROXY_STATS_PASSWORD=changeme

Frontend Bugs Frontend
FRONTEND_BUGS_USER=vulas
FRONTEND_BUGS_PASSWORD=changeme

Token for updating(PUT) or creating(POST) bugs
BACKEND_BUGS_TOKEN=FD262258-9E0E-494F-AB98-10352914D7A6

OPTIONAL SETTINGS
Jira (optional)
JIRA_USER=
JIRA_PASSWORD=

Proxy
HTTP_PROXY_HOST=
HTTPS_PROXY_HOST=
HTTP_PROXY_PORT=
HTTPS_PROXY_PORT=
NON_PROXY_HOSTS=
http_proxy=
https_proxy=
no_proxy=

GitClient class fails when importing bugs

The following command bash import_vulas_kb.sh http://localhost:8033/backend/ fails with this error.

[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.relaxStripFinals=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.saveDecompiledArchive=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.saveEditScriptIntersection=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.saveEditScripts=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.showDecompiledConstruct=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.skipKnownArchive=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.tenant.token=603EFBA1EA9B98ADB4B548682597E6D0
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.upload.deleteAfterSuccess=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.verifyJars=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.patcha.vcs.clients=[com.sap.psr.vulas.git.GitClient, com.sap.psr.vulas.svn.SvnClient]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.report.exceptionExcludeUnassessed=all
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.report.exceptionScopeBlacklist=[TEST, PROVIDED]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.report.exceptionThreshold=dependsOn
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.backend.serviceUrl=http://localhost:8033/backend/
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.buildBranch=UNKNOWN_BRANCH
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.buildTimestamp=2019-06-06T14:28:12Z
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.charset=UTF-8
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.env=[PROCESSOR_IDENTIFIER, NUMBER_OF_PROCESSORS, PROCESSOR_LEVEL, PROCESSOR_ARCHITECTURE, PROCESSOR_REVISION, JAVA_HOME, COMPUTERNAME, MAVEN_PROJECTBASEDIR, MAVEN_HOME, MAVEN_CONFIG, MAVEN_OPTS, BUILD_URL, BUILD_TAG, BUILD_TIMESTAMP, BUILD_DISPLAY_NAME, BUILD_ID, BUILD_NUMBER, BUILD_VERSION]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.homepage=https://github.com/SAP/vulnerability-assessment-tool
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.sys=[os., java., runtime., maven., sun.]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.version=3.0.18
[main] WARN  com.sap.psr.vulas.core.util.CoreConfiguration  - Cannot determine Vulas version from manifest entry [Implementation-Version], check Vulas JAR
[main] INFO  com.sap.psr.vulas.backend.requests.BasicHttpRequest  - HTTP OPTIONS [uri=http://localhost:8033/backend//bugs/CVE-2018-1331]
[main] INFO  com.sap.psr.vulas.backend.requests.BasicHttpRequest  - HTTP OPTIONS completed with response code [404] in [00.078 ms] (proxy=false)
[main] INFO  com.sap.psr.vulas.patcha.VulasProxySelector  - Proxy selector configuration: None
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[main] INFO  com.sap.psr.vulas.git.GitClient  - Create dir [/tmp/patcha_github.com-apache-storm-] for GIT repo [https://github.com/apache/storm/]
[main] ERROR com.sap.psr.vulas.git.GitClient  - Unknown exception while cloning GIT repository [https://github.com/apache/storm/]: Dangling meta character '*' near index 0
*.169.254/16
^
java.util.regex.PatternSyntaxException: Dangling meta character '*' near index 0
*.169.254/16
^
	at java.util.regex.Pattern.error(Pattern.java:1957)
	at java.util.regex.Pattern.sequence(Pattern.java:2125)
	at java.util.regex.Pattern.expr(Pattern.java:1998)
	at java.util.regex.Pattern.compile(Pattern.java:1698)
	at java.util.regex.Pattern.<init>(Pattern.java:1351)
	at java.util.regex.Pattern.compile(Pattern.java:1028)
	at java.util.regex.Pattern.matches(Pattern.java:1133)
	at java.lang.String.matches(String.java:2121)
	at com.sap.psr.vulas.shared.util.StringList.contains(StringList.java:128)
	at com.sap.psr.vulas.patcha.VulasProxySelector.select(VulasProxySelector.java:71)
	at org.eclipse.jgit.util.HttpSupport.proxyFor(HttpSupport.java:279)
	at org.eclipse.jgit.transport.TransportHttp.httpOpen(TransportHttp.java:829)
	at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:491)
	at org.eclipse.jgit.transport.TransportHttp.openFetch(TransportHttp.java:345)
	at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:137)
	at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:123)
	at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1269)
	at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:241)
	at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:306)
	at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:200)
	at com.sap.psr.vulas.git.GitClient.setup(GitClient.java:97)
	at com.sap.psr.vulas.git.GitClient.setRepoUrl(GitClient.java:189)
	at com.sap.psr.vulas.patcha.PatchAnalyzer.createVCSClient(PatchAnalyzer.java:121)
	at com.sap.psr.vulas.patcha.PatchAnalyzer.setRepoURL(PatchAnalyzer.java:85)
	at com.sap.psr.vulas.patcha.PatchAnalyzer.<init>(PatchAnalyzer.java:64)
	at com.sap.psr.vulas.patcha.PatchAnalyzer.main(PatchAnalyzer.java:369)
[main] ERROR com.sap.psr.vulas.patcha.PatchAnalyzer  - VCS client com.sap.psr.vulas.git.GitClient (type GIT) does not match to the repository (if any) at URL https://github.com/apache/storm/
[main] ERROR com.sap.psr.vulas.patcha.PatchAnalyzer  - Root cause: VCS client com.sap.psr.vulas.git.GitClient (type GIT) does not match to the repository (if any) at URL https://github.com/apache/storm/
[main] INFO  com.sap.psr.vulas.svn.SvnClient  - SVNKIT proxy configuration (host:port): null:0
[main] ERROR com.sap.psr.vulas.patcha.PatchAnalyzer  - Error when instantiating VCS client from class [com.sap.psr.vulas.svn.SvnClient]: Dangling meta character '*' near index 0
*.169.254/16
^
[main] ERROR com.sap.psr.vulas.patcha.PatchAnalyzer  - No VCS client found for URL https://github.com/apache/storm/

Java 9 multi-release JARs are not supported

Describe the bug
Starting with Java 9, JARs can contain compiled classes for multiple Java versions. Such classes reside in archive paths "META-INF/versions/", and are loaded by the JVM depending on its version. For instance, the same class com.acme.Foo can exist in different bytecode (Java) versions, and is loaded depending on the runtime version.

As of today, Vulas simply ignores such classes, e.g.,

JAR entry [META-INF/versions/9/com/acme/Foo.class] cannot be transformed to a fully-qualified Java class identifier, because [META-INF] is not a valid identifier

This change has impact on various Vulas goals, e.g., APP and INSTR, and classes, e.g., JarAnalyzer, JarWriter and users of Javassist.

To Reproduce
Create an application and make it dependent on a multi-release JAR.

Expected behavior
To be defined

Vulas version
All versions

Additional context
Add any other context about the problem here.

Consider arbitrarily nested JARs

Is your feature request related to a problem? Please describe.
As of today, arbitrarily nested JARs are not considered in CLI scans (just WARs having nested dependencies in the WEB-INF/lib folder). As such, the presence of vulnerable open-source dependencies can be missed.

Describe the solution you'd like
Arbitrarily nested JARs must be discovered and added as dependencies to the application.
For instance, app -> jar1 -> jar2 -> jar3 represents the dependency trail for the nested JAR jar3.

Describe alternatives you've considered
None.

Patch Analyzer issue with SVN repositories

Describe the bug
Patch analyzer cannot import svn based bugs and errors on: [main] ERROR com.sap.psr.vulas.patcha.PatchAnalyzer - For input string: <One revision in the list>

To Reproduce

java -Dvulas.shared.backend.serviceUrl=$BACKEND patch-analyzer.jar com.sap.psr.vulas.PatchAnalyzer -b CVE-2016-6816 -r http://svn.apache.org/repos/asf/tomcat -e 1767645:trunk,1767675:trunk,1767645:master,1767653:trunk,1767641:trunk,1767683:trunk -desc "" -links "" -sie -u

Expected behavior
The bug should be pushed to the backend or if an error occurs the exception should be captured and displayed.

Environment

  • 3.1.7-SNAPSHOT (master/c15e87351b96077444e0f0b6d2098bddac352ebc)
  • Docker image (vulas/vulnerability-assessment-tool-patch-analyzer:3.1.7-SNAPSHOT) with digest c7bc71316a43
  • Logs:
[main] INFO  com.sap.psr.vulas.shared.util.AbstractFileSearch  - Found [0] files in relative path [.], i.e., absolute path [/vulas/.]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Added configuration [MapConfiguration] from source [Transient-Config-Layer]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Added configuration [SystemConfiguration] from source [System-Properties]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Added configuration [MapConfiguration] from source [Environment-Variables]
[main] INFO  com.sap.psr.vulas.shared.util.FileUtil  - Class loader search path contains [1] items: Search for configurations in JAR files
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Added configuration [MapConfiguration] from source [/vulas/patch-analyzer.jar>vulas-tenant.properties]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Added configuration [MapConfiguration] from source [/vulas/patch-analyzer.jar>vulas-patcha.properties]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Added configuration [MapConfiguration] from source [/vulas/patch-analyzer.jar>vulas-core-sign.properties]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Added configuration [MapConfiguration] from source [/vulas/patch-analyzer.jar>vulas-version.properties]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Added configuration [MapConfiguration] from source [/vulas/patch-analyzer.jar>vulas-shared.properties]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Added configuration [MapConfiguration] from source [/vulas/patch-analyzer.jar>vulas-python.properties]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Added configuration [MapConfiguration] from source [/vulas/patch-analyzer.jar>vulas-core.properties]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Added configuration [MapConfiguration] from source [/vulas/patch-analyzer.jar>vulas-java.properties]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration [1]: Transient-Config-Layer, [0] entries
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration [2]: System-Properties, [52] entries
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration [3]: Environment-Variables, [97] entries
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration [4]: /vulas/patch-analyzer.jar>vulas-tenant.properties, [1] entries
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration [5]: /vulas/patch-analyzer.jar>vulas-patcha.properties, [2] entries
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration [6]: /vulas/patch-analyzer.jar>vulas-core-sign.properties, [10] entries
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration [7]: /vulas/patch-analyzer.jar>vulas-version.properties, [4] entries
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration [8]: /vulas/patch-analyzer.jar>vulas-shared.properties, [9] entries
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration [9]: /vulas/patch-analyzer.jar>vulas-python.properties, [3] entries
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration [10]: /vulas/patch-analyzer.jar>vulas-core.properties, [19] entries
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration [11]: /vulas/patch-analyzer.jar>vulas-java.properties, [21] entries
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  - Configuration with prefix(es) [http, https, vulas]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.app.uploadEmpty=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.app.uploadLibrary=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.backendConnection=READ_WRITE
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.bom.python.ignorePacks=[setuptools, pip, wheel, virtualenv, twine, vulas-plugin-setuptools]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.clean.goalHistory=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.clean.purgeVersions=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.clean.purgeVersions.keepLast=3
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.blacklist.classes=[org.apache.maven.surefire, org.junit, com.sap.psr.vulas, javassist., org.apache.commons.logging., org.apache.log4j., com.fasterxml.jackson., org.jacoco.]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.blacklist.classes.jre=[java., sun., com.sun., org.xml., org.ietf., org.jcp., org.omg.]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.blacklist.classloader=[sun.reflect.DelegatingClassLoader, javax.management.remote.rmi.NoCallStackClassLoader, org.powermock.core.classloader.MockClassLoader]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.blacklist.jars=[lang-java-.*.jar, surefire-.*.jar, junit-.*.jar, org.jacoco.agent.*.jar]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.blacklist.jars.ignoreScopes=[test, provided]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.instrumentorsChoosen=com.sap.psr.vulas.monitor.trace.SingleTraceInstrumentor
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.maxStacktraces=10
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.slice.guardOpen=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.static.inclBackendUrl=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.static.inclSpace=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.whitelist.classloader.acceptChilds=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.instr.writeCode=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.jarAnalysis.poolSize=4
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.monitor.blacklist.jars=[lang-java-.*.jar, surefire-.*.jar, junit-.*.jar, org.jacoco.agent.*.jar]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.monitor.maxItems=-1
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.monitor.periodicUpload.batchSize=1000
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.monitor.periodicUpload.enabled=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.monitor.periodicUpload.interval=300000
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.noThreads=AUTO
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.repeatHttp.max=50
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.repeatHttp.waitMilli=60000
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sequence.defaultGoals=[CLEAN, APP, A2C, REPORT]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.relaxDecompiler=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.relaxEditScript=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.relaxEqualIgnoreParentRoot=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.relaxRelaxedByDefault=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.relaxStripFinals=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.saveDecompiledArchive=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.saveEditScriptIntersection=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.saveEditScripts=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.sign.showDecompiledConstruct=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.skipKnownArchive=false
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.tenant.token=603EFBA1EA9B98ADB4B548682597E6D0
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.upload.deleteAfterSuccess=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.core.verifyJars=true
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.patcha.vcs.clients=[com.sap.psr.vulas.git.GitClient, com.sap.psr.vulas.svn.SvnClient]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.report.exceptionExcludeUnassessed=all
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.report.exceptionScopeBlacklist=[TEST, PROVIDED]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.report.exceptionThreshold=dependsOn
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.backend.serviceUrl=$BACKEND
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.buildBranch=jib
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.buildNumber=e3d2ac82fda0772aea76a4d5fe021fd5303553f6
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.buildTimestamp=2019-10-21T10:50:11Z
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.charset=UTF-8
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.env=[PROCESSOR_IDENTIFIER, NUMBER_OF_PROCESSORS, PROCESSOR_LEVEL, PROCESSOR_ARCHITECTURE, PROCESSOR_REVISION, JAVA_HOME, COMPUTERNAME, MAVEN_PROJECTBASEDIR, MAVEN_HOME, MAVEN_CONFIG, MAVEN_OPTS, BUILD_URL, BUILD_TAG, BUILD_TIMESTAMP, BUILD_DISPLAY_NAME, BUILD_ID, BUILD_NUMBER, BUILD_VERSION]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.homepage=https://github.com/SAP/vulnerability-assessment-tool
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.sys=[os., java., runtime., maven., sun.]
[main] INFO  com.sap.psr.vulas.shared.util.VulasConfiguration  -     vulas.shared.version=3.1.7-SNAPSHOT
[main] WARN  com.sap.psr.vulas.core.util.CoreConfiguration  - Cannot determine Vulas version from manifest entry [Implementation-Version], check Vulas JAR
[main] INFO  com.sap.psr.vulas.backend.requests.BasicHttpRequest  - HTTP OPTIONS [uri=http://$BACKEND/backend/bugs/CVE-2016-6816]
[main] INFO  com.sap.psr.vulas.backend.requests.BasicHttpRequest  - HTTP OPTIONS completed with response code [404] in [00.084 ms] (proxy=false)
[main] INFO  com.sap.psr.vulas.patcha.VulasProxySelector  - Proxy selector configuration: None
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
[main] INFO  com.sap.psr.vulas.git.GitClient  - Create dir [/tmp/patcha_svn.apache.org-repos-asf-tomcat] for GIT repo [http://svn.apache.org/repos/asf/tomcat]
[main] ERROR com.sap.psr.vulas.git.GitClient  - Invalid remote for GIT repository at http://svn.apache.org/repos/asf/tomcat
[main] ERROR com.sap.psr.vulas.git.GitClient  - Deleted temp. directory [/tmp/patcha_svn.apache.org-repos-asf-tomcat]
[main] ERROR com.sap.psr.vulas.patcha.PatchAnalyzer  - VCS client com.sap.psr.vulas.git.GitClient (type GIT) does not match to the repository (if any) at URL http://svn.apache.org/repos/asf/tomcat
[main] ERROR com.sap.psr.vulas.patcha.PatchAnalyzer  - Root cause: VCS client com.sap.psr.vulas.git.GitClient (type GIT) does not match to the repository (if any) at URL http://svn.apache.org/repos/asf/tomcat
[main] INFO  com.sap.psr.vulas.svn.SvnClient  - SVNKIT proxy configuration (host:port): null:0
[main] INFO  com.sap.psr.vulas.shared.util.StopWatch  - [514350] [00.000 ms] Started: Analysis of [6] revision(s)
[main] ERROR com.sap.psr.vulas.patcha.PatchAnalyzer  - For input string: "1767683:trunk"

Additional context
The error seems to come from the SVN Client not being instantiated properly. The Patchanalyzer class calls the SVN Client's method https://github.com/SAP/vulnerability-assessment-tool/blob/72ef7071d21e7770fb354e8f5547ba3caf5891ce/patch-analyzer/src/main/java/com/sap/psr/vulas/patcha/PatchAnalyzer.java#L208.

The called method does not log any exception and does not seem to be called at all.
https://github.com/SAP/vulnerability-assessment-tool/blob/72ef7071d21e7770fb354e8f5547ba3caf5891ce/repo-client/src/main/java/com/sap/psr/vulas/svn/SvnClient.java#L387-L403

Delete temporary repository data from /tmp after finishing importing a CVE

Is your feature request related to a problem? Please describe.
When importing CVEs in the vulnerability database, patch analyzer clones relevant git repositories in the local machine. However, after finishing importing a specific CVE, the corresponding repository do not get deleted from the local machine. While batch importing large number of vulnerability data it can incrementally waste storage unnecessarily in the local machine.

this is how my /tmp directory is growing while batch importing.
image

Describe the solution you'd like
After finishing importing a certain CVE, the corresponding repository data should be deleted from /tmp directory. I am assuming the repository data is not needed once the CVE is imported and the patch is analyzed.

Dependencies on local Python project dirrectories are not resolved

Describe the bug
Python dependencies on local directories are not properly resolved when installing a Python app to be scanned inside a virtual environment.

Example requirements.txt:

./relative_path_to_local_prj
Jinja2
requests
...

To Reproduce
Create a Python app having a dependency on a local directory (containing another Python project), The results error message will be sth. as follows:

[Thread-0] ERROR com.sap.psr.vulas.python.ProcessWrapper  - Error running [...\tmp\vulas-virtualenv-py-app\Scripts\pip download -d ...\tmp\vulas-virtualenv-py-app\pip-download --no-cache-dir ...\tmp\vulas-virtualenv-py-app\py-app]:   Could not find a version that satisfies the requirement py-other-app (from py-app==0.1) (from versions: )
No matching distribution found for py-other-app (from py-app==0.1)

In case of bugs happening on the client (when performing scans):
See console output

Expected behavior
Local dir dependencies should be resolved

Vulas version
3.0.10 and earlier

Additional context
None

Compiling plugin-maven files take forever

I am trying to build this project with the single command mvn clean install -P gradle -DSkipTests. However, after the compilation of most modules, compilation get stuck for the plugin-maven module. I have tried building both the current master branch and release 3.1.6 with the same outcome. Below is the console output where the compilation gets stuck (along with an increased fan speed noise of my laptop):

[INFO] ------------< com.sap.research.security.vulas:plugin-maven >------------
[INFO] Building Plugin for Maven 3.1.7-SNAPSHOT                         [14/19]
[INFO] ----------------------------[ maven-plugin ]----------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ plugin-maven ---
[INFO] Deleting /Users/nasifimtiaz/git/vulnerability-assessment-tool/plugin-maven/target
[INFO] 
[INFO] --- versions-maven-plugin:2.7:display-dependency-updates (check-version) @ plugin-maven ---
[INFO] The following dependencies in Dependencies have newer versions:
[INFO]   junit:junit ........................................ 4.12 -> 4.13-rc-2
[INFO]   org.apache.maven:maven-compat ......................... 3.6.1 -> 3.6.3
[INFO]   org.apache.maven:maven-core ........................... 3.6.1 -> 3.6.3
[INFO]   org.apache.maven:maven-plugin-api ..................... 3.6.1 -> 3.6.3
[INFO]   org.codehaus.plexus:plexus-utils ...................... 3.2.1 -> 3.3.0
[INFO] 
[INFO] The following dependencies in pluginManagement of plugins have newer versions:
[INFO]   org.apache.maven.wagon:wagon-file ..................... 3.3.3 -> 3.3.4
[INFO] 
[INFO] The following dependencies in Plugin Dependencies have newer versions:
[INFO]   org.apache.maven.wagon:wagon-file ..................... 3.3.3 -> 3.3.4
[INFO] 
[INFO] 
[INFO] --- versions-maven-plugin:2.7:display-property-updates (check-version) @ plugin-maven ---
[INFO] 
[INFO] This project does not have any properties associated with versions.
[INFO] 
[INFO] 
[INFO] --- buildnumber-maven-plugin:1.4:create (default) @ plugin-maven ---
[INFO] Executing: /bin/sh -c cd '/Users/nasifimtiaz/git/vulnerability-assessment-tool/plugin-maven' && 'git' 'rev-parse' '--verify' 'HEAD'
[INFO] Working directory: /Users/nasifimtiaz/git/vulnerability-assessment-tool/plugin-maven
[INFO] Storing buildNumber: 5d4ee4bedd228f67bd800dc41e7709507646e9d9 at timestamp: 1575849991620
[INFO] Storing buildScmBranch: master
[INFO] 
[INFO] --- jacoco-maven-plugin:0.8.4:prepare-agent (default-prepare-agent) @ plugin-maven ---
[INFO] argLine set to -javaagent:/Users/nasifimtiaz/.m2/repository/org/jacoco/org.jacoco.agent/0.8.4/org.jacoco.agent-0.8.4-runtime.jar=destfile=/Users/nasifimtiaz/git/vulnerability-assessment-tool/plugin-maven/target/jacoco.exec,excludes=**/antlr/Java*.*
[INFO] 
[INFO] --- maven-plugin-plugin:3.5.2:helpmojo (help-goal) @ plugin-maven ---
[WARNING] 

Goal prefix is specified as: 'vulas'. Maven currently expects it to be ''.

[INFO] Using 'UTF-8' encoding to read mojo source files.
[INFO] java-javadoc mojo extractor found 0 mojo descriptor.
[INFO] java-annotations mojo extractor found 0 mojo descriptor.
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ plugin-maven ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ plugin-maven ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 12 source files to /Users/nasifimtiaz/git/vulnerability-assessment-tool/plugin-maven/target/classes

My machine is Mac OS X 10.14.6. I have 8 CPU Cores and 16 GB RAM on my machine. In eclipse, I have set up the heap space to be 8GB (I tried to mvn install from the terminal but faced the same outcome).

What could be the possible reasons behind this and how can I troubleshoot?

[Note that I have also posted this question on Stack Overflow with the vulas tag.]

Clean error when using an invalid workspace token id

Is your feature request related to a problem? Please describe.
when performing a scan using an invalid workspace token, the feedback from the application does not clearly indicate the problem.

Describe the solution you'd like
An error message of type : "workspace xxxxxx is not a valid workspace" should be returned to the user.

Describe alternatives you've considered

Additional context

ConcurrentModificationException when using maven -T8

Describe the bug
It seems like there is a multithreading bug when using the multithreaded maven builder.
This bug didn't exist on version 2.5.2.
I'm getting:
[ERROR] Failed to execute goal com.sap.research.security.vulas:plugin-maven:3.0.13:report (default-cli) on project maven-settings: Error during Vulas goal execution null: ConcurrentModificationException -> [Help 1]
[ERROR] Failed to execute goal com.sap.research.security.vulas:plugin-maven:3.0.13:report (default-cli) on project maven-artifact: Error during Vulas goal execution null: NullPointerException -> [Help 1]
[ERROR] Failed to execute goal com.sap.research.security.vulas:plugin-maven:3.0.13:report (default-cli) on project maven-model: Error during Vulas goal execution null: Index: -1, Size: 14 -> [Help 1]

To Reproduce
/usr/java/jdk1.8.0_172-amd64/bin/java -Dmaven.multiModuleProjectDirectory=. -classpath plexus-classworlds-2.5.2.jar org.codehaus.classworlds.Launcher -T 8 -s settings.xml com.sap.research.security.vulas:plugin-maven:3.0.13:report -P vulas

Specifically this happens when using the IntelliJ maven builder which has a default of 8 threads with https://github.com/apache/maven

Vulas version

  • 3.0.13

In case of bugs happening on the client (when performing scans)

No plugin found for prefix 'vulas' in the current project

Hi,team

when I use the command mvn compile com.sap.research.security.vulas:plugin-maven:3.0.18:app,then I got errors:

[WARNING] The POM for com.sap.research.security.vulas:plugin-maven:jar:3.0.18 is missing, no dependency information available
......
[ERROR] Plugin com.sap.research.security.vulas:plugin-maven:3.0.18 or one of its dependencies could not be resolved: Failure to find com.sap.research.security.vulas:plugin-maven:jar:3.0.18 in http://x.x.x.x:8081/nexus/content/groups/public/ was cached in the local repository, resolution will not be reattempted until the update interval of xxx has elapsed or updates are forced -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException

HubIntegrationController does not use tenant for filtering

Cannot link to application contained in workspace

Send links to an application present in workspace A to a user which is on workspace B results in a blank details page.

Steps to reproduce:

  1. clink an an application in a workspace
  2. copy its link
  3. switch workspace
  4. copy the previous link in the address bar

Tested with latest Chrome on Win10

This is caused because the workspace ID is stored in LocalStorage property state.key_-vulas-frontend-settings.space.

I'd suggest to populate the the workspace ID the URLs and fall back to LS only when the workspace is not present in the URL.

https://vulas/apps/#/apps/{workspace}/{app}/
# or even better:
https://app.vulas/{workspace}/{app}/

vulas 3.0.13 release does not build

I downloaded tar of release 3.0.13 and followed strictly the installation procedure. The docker build command runs without issues, but the docker run command always (all OS installations) fails with the same error:

[ERROR] After correcting the problems, you can resume the build with the command
[ERROR] mvn -rf :rest-backend
Cleaning old archives
rm: can't remove '/exporter/**/.?ar': No such file or directory
Copying new archives
cp: can't stat 'rest-backend/target/
.?ar': No such file or directory

---SNIP---

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Vulas 3.0.13:
[INFO]
[INFO] Vulas .............................................. SUCCESS [ 38.797 s]
[INFO] Shared classes ..................................... SUCCESS [ 29.783 s]
[INFO] Framework and base classes for language analysis ... SUCCESS [ 21.126 s]
[INFO] Java - Init ........................................ SUCCESS [ 0.269 s]
[INFO] Java - Core classes for Java analysis .............. SUCCESS [ 36.595 s]
[INFO] Java - Core classes and SPI for Java reachability analysis SUCCESS [ 3.897 s]
[INFO] Java - Wala call graph constructor service ......... SUCCESS [ 17.265 s]
[INFO] Python - Core classes for Python analysis .......... SUCCESS [ 21.022 s]
[INFO] Interface for Git and SVN repos .................... SUCCESS [ 13.645 s]
[INFO] Analysis of security patches ....................... SUCCESS [ 10.939 s]
[INFO] Analysis of libraries in regards to security patches SUCCESS [ 5.314 s]
[INFO] Command Line Interface ............................. SUCCESS [ 9.302 s]
[INFO] Plugin for Maven ................................... SUCCESS [ 21.898 s]
[INFO] Frontend for analysis results ...................... SUCCESS [ 18.868 s]
[INFO] Frontend for bug administration .................... SUCCESS [ 1.607 s]
[INFO] Frontend for patch analyzer ........................ SUCCESS [ 2.841 s]
[INFO] REST service to analyze and compare libraries (init) SUCCESS [ 0.212 s]
[INFO] REST service to analyze and compare libraries ...... SUCCESS [ 49.734 s]
[INFO] REST service to manage scan results and bugs ....... FAILURE [ 48.645 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 05:53 min
[INFO] Finished at: 2019-01-27T09:50:49Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project rest-backend: There are test failures.
[ERROR]
[ERROR] Please refer to /vulas/rest-backend/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project rest-backend: There are test failures.

---SNIP---

I followed https://github.com/SAP/vulnerability-assessment-tool/blob/master/docker/README.md until the "docker run ...." command

Trying to access the files reported in the error I did not find the related files on my system. I am new to docker, so I was not able to debug this issue in more detail

Same problem occurred on following environments (all of them fully updated) and with docker and git installed:

Debian 9, Debian 8
Ubuntu 18.04, Ubuntu 16.04 (with included docker.io repo)
openSUSE 15.0

Issue running the containers of vulnerability-assessment-tool

Containers are not getting started. We are not able to run the container of Vulnerability Assessment tool. It is getting restarted automatically after we run the (cd docker && docker-compose up -d --build)

Some more information regarding the run command -
We use below command -
docker run -it --rm -v ${PWD}/docker:/exporter --env-file ./docker/.env -e mvn_flags='-DexcludedGroups=com.sap.psr.vulas.shared.categories.Slow -DreuseForks=False' vulas-build-img

After this command, we even checked but couldn't see .jar or .war files in cli-scanner folder. Infact all folders have pom.xml and src folder only and not any .jar or .war file. Not sure the issue of container restarting is because of this.

Result of cli-scanner folder -
root@demos:/opt/VAT/vulnerability-assessment-tool/cli-scanner# ls
pom.xml src

Stackoverflow and test failure for mocking during Dynamic instrumentation (JUnit)

I am scanning this repo with this tool. I have already performed the app and a2c scan. However, the build doesn't succeed while performing the test scan.

When I run mvn test normally for this project, the build succeeds without any test failure.

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for OpenMRS 2.1.3:
[INFO] 
[INFO] OpenMRS ............................................ SUCCESS [  0.964 s]
[INFO] openmrs-tools ...................................... SUCCESS [  0.703 s]
[INFO] openmrs-test ....................................... SUCCESS [  0.008 s]
[INFO] openmrs-api ........................................ SUCCESS [02:40 min]
[INFO] openmrs-web ........................................ SUCCESS [ 13.850 s]
[INFO] openmrs-webapp ..................................... SUCCESS [  0.811 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:56 min

However, when I run mvn -Dvulas vulas:prepare-vulas-agent test vulas:upload the build doesn't succed throwing a testcase failure. Shortly before, it shows stackoverflow error during occurred during execution of instrumentation code in JAVA METH.
Here's part of the error results:

java.lang.StackOverflowError occurred during execution of instrumentation code in JAVA METH [org.apache.commons.lang.text.StrSubstitutor.getEscapeChar()]: null
java.lang.StackOverflowError occurred during execution of instrumentation code in JAVA METH [org.apache.commons.lang.text.StrMatcher$StringMatcher.isMatch(char[],int,int,int)]: null
java.lang.StackOverflowError occurred during execution of instrumentation code in JAVA METH [org.apache.commons.lang.text.StrMatcher$StringMatcher.isMatch(char[],int,int,int)]: null
java.lang.NoClassDefFoundError occurred during execution of instrumentation code in JAVA CONS [org.apache.xerces.jaxp.SAXParserFactoryImpl()]: Could not initialize class com.sap.psr.vulas.java.JarAnalyzer
java.lang.NoClassDefFoundError occurred during execution of instrumentation code in JAVA INIT [org.springframework.core.JdkVersion.<clinit>]: Could not initialize class com.sap.psr.vulas.java.JarAnalyzer
java.lang.NoClassDefFoundError occurred during execution of instrumentation code in JAVA METH [org.springframework.core.JdkVersion.getJavaVersion()]: Could not initialize class com.sap.psr.vulas.java.JarAnalyzer
java.lang.NoClassDefFoundError occurred during execution of instrumentation code in JAVA METH [org.springframework.core.JdkVersion.getJavaVersion()]: Could not initialize class com.sap.psr.vulas.java.JarAnalyzer
Tests run: 2, Failures: 0, Errors: 2, Skipped: 0, Time elapsed: 5.434 sec <<< FAILURE! - in org.openmrs.util.JavaVersionTest
validateJavaVersion_shouldFailIfTheCurrentJVMVersionIsEarlierThanJava6(org.openmrs.util.JavaVersionTest)  Time elapsed: 5.335 sec  <<< ERROR!
java.lang.Exception: Unexpected exception, expected<org.openmrs.api.APIException> but was<org.mockito.exceptions.misusing.MissingMethodInvocationException>
	at org.powermock.api.mockito.PowerMockito.when(PowerMockito.java:495)
	at org.openmrs.util.JavaVersionTest.validateJavaVersion_shouldFailIfTheCurrentJVMVersionIsEarlierThanJava6(JavaVersionTest.java:38)

validateJavaVersion_shouldPassIfTheCurrentJVMVersionIsLaterThanJava5(org.openmrs.util.JavaVersionTest)  Time elapsed: 0.001 sec  <<< ERROR!
org.mockito.exceptions.misusing.MissingMethodInvocationException: 
when() requires an argument which has to be 'a method call on a mock'.
For example:
    when(mock.getArticles()).thenReturn(articles);

Also, this error might show up because:
1. you stub either of: final/private/equals()/hashCode() methods.
   Those methods *cannot* be stubbed/verified.
2. inside when() you don't call method on mock but on some other object.
3. the parent of the mocked class is not public.
   It is a limitation of the mock engine.

	at org.powermock.api.mockito.PowerMockito.when(PowerMockito.java:495)
	at org.openmrs.util.JavaVersionTest.validateJavaVersion_shouldPassIfTheCurrentJVMVersionIsLaterThanJava5(JavaVersionTest.java:47)

Running org.openmrs.util.GraphTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in org.openmrs.util.GraphTest
Running org.openmrs.util.DrugsByNameComparatorTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in org.openmrs.util.DrugsByNameComparatorTest
Running org.openmrs.util.HandlerUtilTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.177 sec - in org.openmrs.util.HandlerUtilTest
Running org.openmrs.util.PersonByNameComparatorTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.006 sec - in org.openmrs.util.PersonByNameComparatorTest
Running org.openmrs.util.UpgradeUtilTest
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.262 sec - in org.openmrs.util.UpgradeUtilTest
Running org.openmrs.util.SecurityTest
Tests run: 7, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.125 sec - in org.openmrs.util.SecurityTest
Running org.openmrs.util.DoubleRangeTest
Tests run: 28, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.019 sec - in org.openmrs.util.DoubleRangeTest
Running org.openmrs.util.ReflectTest
Tests run: 18, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.012 sec <<< FAILURE! - in org.openmrs.util.ReflectTest
isCollectionField_shouldReturnTrueIfGivenFieldIsCollectionAndItsElementTypeIsGivenParameterized(org.openmrs.util.ReflectTest)  Time elapsed: 0.005 sec  <<< FAILURE!
junit.framework.ComparisonFailure: expected:<[subClassField]> but was:<[VUL_CLS_INS]>
	at junit.framework.Assert.assertEquals(Assert.java:100)
	at junit.framework.Assert.assertEquals(Assert.java:107)
	at org.openmrs.util.ReflectTest.isCollectionField_shouldReturnTrueIfGivenFieldIsCollectionAndItsElementTypeIsGivenParameterized(ReflectTest.java:162)

Running org.openmrs.util.ExceptionUtilTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.008 sec - in org.openmrs.util.ExceptionUtilTest
Running org.openmrs.util.LocaleUtilityTest
Tests run: 21, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.419 sec - in org.openmrs.util.LocaleUtilityTest
Running org.openmrs.util.ProviderByPersonNameComparatorTest
Tests run: 6, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.005 sec - in org.openmrs.util.ProviderByPersonNameComparatorTest
Running org.openmrs.util.DateUtilTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in org.openmrs.util.DateUtilTest
Running org.openmrs.util.HttpClientTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec - in org.openmrs.util.HttpClientTest
Running org.openmrs.util.HttpUrlTest
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0 sec - in org.openmrs.util.HttpUrlTest
Running org.openmrs.util.OpenmrsUtilTest
Tests run: 47, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 1.948 sec - in org.openmrs.util.OpenmrsUtilTest

Results :

Failed tests: 
  ReflectTest.isCollectionField_shouldReturnTrueIfGivenFieldIsCollectionAndItsElementTypeIsGivenParameterized:162 expected:<[subClassField]> but was:<[VUL_CLS_INS]>
Tests in error: 
  ObsTest.isDirty_shouldReturnFalsWhenAnImmutableFieldIsChangedFromANonNullToANullValueForNewObs:775->createObs:82->setFieldValue:95->generateValue:136 » Instantiation
  ObsTest.isDirty_shouldReturnFalseWhenAnyImmutableFieldHasBeenChangedForNewObs:700->createObs:82->setFieldValue:95->generateValue:136 » Instantiation
  ObsTest.isDirty_shouldReturnFalseWhenNoChangeHasBeenMade:668->createObs:82->setFieldValue:95->generateValue:136 » Instantiation
  ObsTest.isDirty_shouldReturnTrueWhenAnImmutableFieldIsChangedFromANonNullToANullValueForEditedObs:763->createObs:82->setFieldValue:95->generateValue:136 » Instantiation
  ObsTest.isDirty_shouldReturnTrueWhenAnyImmutableFieldHasBeenChangedForEditedObs:689->createObs:82->setFieldValue:95->generateValue:136 » Instantiation
  ObsTest.setFormField_shouldMarkTheObsAsDirtyWhenTheValueHasBeenChanged:822->createObs:82->setFieldValue:95->generateValue:136 » Instantiation
  ObsTest.setFormField_shouldNotMarkTheObsAsDirtyWhenTheValueHasNotBeenChanged:811->createObs:82->setFieldValue:95->generateValue:136 » Instantiation
  ObsTest.setValueBoolean_shouldNotSetValueForNonBooleanConcept:1098->createObs:82->setFieldValue:95->generateValue:136 » Instantiation
  ModuleExtensionsTest.before:37 » IllegalArgument Cannot subclass final class c...
  ModuleExtensionsTest.before:37 » IllegalArgument Cannot subclass final class c...
  ModuleExtensionsTest.before:37 » IllegalArgument Cannot subclass final class c...
  ModuleExtensionsTest.before:37 » IllegalArgument Cannot subclass final class c...
  JavaVersionTest.validateJavaVersion_shouldFailIfTheCurrentJVMVersionIsEarlierThanJava6 » 
  JavaVersionTest.validateJavaVersion_shouldPassIfTheCurrentJVMVersionIsLaterThanJava5:47 » MissingMethodInvocation
  AllergyValidatorTest.validate_shouldRejectADuplicateAllergen:150 MissingMethodInvocation
  AllergyValidatorTest.validate_shouldRejectADuplicateNonCodedAllergen:174 MissingMethodInvocation

Tests run: 3447, Failures: 1, Errors: 16, Skipped: 35

[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for OpenMRS 2.1.3:
[INFO] 
[INFO] OpenMRS ............................................ SUCCESS [  3.348 s]
[INFO] openmrs-tools ...................................... SUCCESS [  1.522 s]
[INFO] openmrs-test ....................................... SUCCESS [  0.892 s]
[INFO] openmrs-api ........................................ FAILURE [05:28 min]
[INFO] openmrs-web ........................................ SKIPPED
[INFO] openmrs-webapp ..................................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  05:34 min
[INFO] Finished at: 2020-04-07T07:33:06-07:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project openmrs-api: There are test failures.
[ERROR] 
[ERROR] Please refer to /home/nasifimtiaz/git/openmrs-core/api/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command
[ERROR]   mvn <goals> -rf :openmrs-api

What I am understanding is that the use of mocking in the testing is may be conflicting with how Steady works. Is there any workaround for this?

Limit shared TravisCI resource to 1 build per run

Is your feature request related to a problem? Please describe.
Because of the way TravisCI works with open source, the SAP org is limited to 5 concurrent jobs. This can prevent other repos from getting any resources for extended periods of time.

Describe the solution you'd like
Would you be willing to look into changing the travis configuration so jobs run serially or limit the number of concurrent jobs, so that TravisCI resources can be distributed a bit more?

Describe alternatives you've considered
There really aren't other options with TravisCI since the SAP org is open source.

Additional context
When one or two repos take all 5 concurrent jobs, it really becomes a bottleneck for other repos.

See the (admittedly aged) tweet here:

https://twitter.com/travisci/status/424990533447327744

Error building master and 3.0.13

Describe the bug

Building from the root of the repository with maven always produces the following error.

[main] INFO  com.sap.psr.vulas.backend.requests.BasicHttpRequest  - HTTP OPTIONS [uri=http://localhost:23723/backend/apps/app-group-304862/app-artifact-304862/app-version]
[main] ERROR com.sap.psr.vulas.backend.requests.BasicHttpRequest  - Got error [-1] when calling [OPTIONS] on [http://localhost:23723/backend/apps/app-group-304862/app-artifact-304862/app-version]: Connection refused
java.lang.NullPointerException
	at com.sap.psr.vulas.shared.util.FileUtil.writeToFile(FileUtil.java:262)
	at com.sap.psr.vulas.backend.requests.BasicHttpRequest.send(BasicHttpRequest.java:167)
	at com.sap.psr.vulas.backend.BackendConnector.isAppExisting(BackendConnector.java:172)
	at com.sap.psr.vulas.backend.BackendConnector.getAppDeps(BackendConnector.java:397)
	at com.sap.psr.vulas.monitor.InstrumentationControl.<init>(InstrumentationControl.java:131)
	at com.sap.psr.vulas.monitor.InstrumentationControl.getInstance(InstrumentationControl.java:364)
	at com.sap.psr.vulas.java.JarAnalyzer.setInstrument(JarAnalyzer.java:122)
	at com.sap.psr.vulas.java.WarAnalyzerTest.testInstrument(WarAnalyzerTest.java:55)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:365)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:273)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:159)
	at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:383)
	at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:344)
	at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:125)
	at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:417)
[ERROR] Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 4.691 s <<< FAILURE! - in com.sap.psr.vulas.java.WarAnalyzerTest
[ERROR] testInstrument(com.sap.psr.vulas.java.WarAnalyzerTest)  Time elapsed: 0.173 s  <<< FAILURE!

To Reproduce

Run mvn compile at root of the repo.

Vulas version

  • Vulas version 3.0.13 and master branch

Additional context
Building on OSX 10.13.6 High Sierra

JDKS:

java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)

Error during docker compose up

Getting the below error during docker-compose up
vulnerability-assessment-tool/docker/rest-backend/conf/restbackend.properties: environment variable name 'vulas.backend.cveCache.refetchAllMs ' may not contain whitespace.

To Reproduce
Steps to reproduce the behavior:

Just go to docker folder and try to run docker-compose up --build as given in https://eclipse.github.io/steady/admin/tutorials/docker/.

Expected behavior
Check if the containers are up and running

Vulas version

  • Vulas 3.1.9

Create JSON files to mark repackaging libraries as non-vulnerable

Is your feature request related to a problem? Please describe.
Sine version 3.1.0, Steady also detects repackaged libraries (where the original Java package names have been modified before being rebundled/included) by checking whether a given Java archive contains pom.xml files of other projects. For every repackaged library, all its vulnerabilities are then reported for the rebundling library. However, this ignores that the repackaging library could use the vulnerable, repackaged library in a secure way, thus, the vulnerability will never be exploitable (regardless of how the repackaging library is used by applications). To overcome this problem, a Steady administrator has to mark the repackaging library as non-vulnerable with respect the vulnerability of the repackaged library.

Describe the solution you'd like
To reduce manual efforts of application developers and Steady admins, it would be nice if a JSON file and shell script can be generated during the execution of the REPORT goal (for all exempted vulnerabilities). The application developer will be able to use both those files in order to mark the repackaging library as non-vulnerable himself (by performing a HTTP POST request to the rest-backend).

Describe alternatives you've considered
None.

Additional context
Todo: Provide example

The search for constructs does not work

Describe the bug

The search for constructs does not seem to work.

To Reproduce
Go to tab Search and enter the fully-qualified name of a Java class that you know is present in one of the application's dependencies.

Expected behavior
When hitting the button Search constructs, the corresponding archive (dependency) should show up.

Vulas version
3.0.17 (4e5e240c6f04dc7054343cdcf854c033e56d43a4)

Path not shown in case of square brackets in construct qnames

Describe the bug

Path information is not shown in case the fully-qualified name of the vulnerable construct contains square brackets, e.g., org.apache.commons.fileupload.MultipartStream(InputStream,byte[],int,ProgressNotifier). The reason is probably due to the missing encoding of the qname in the request URL.

To Reproduce
Try to display the path of such a vulnerable construct, e.g., in CVE-2014-0050.

Vulas version
3.1.1

In case of bugs in a Web frontend
All browsers

New version of PatchAnalyzer to work on directories (instead of repos)

Is your feature request related to a problem? Please describe.
To populate Steady's vulnerability database, the so-called PatchAnalyzer uses the 3rd party dependencies org.eclipse.jgit and svnkit to retrieve source code from SVN and Git repositories. This both represents a restriction and duplicates work that is better done by the respective native clients.

Describe the solution you'd like
The PatchAnalyzer should be refactored to work on source code present in the file system. It should not need to care about how those files get there (typically, this will be done by calling native SCM clients beforehand).

This requires to rework the existing command line options, esp. in regards to the location of the source code related to one or more fix commits in a given source code repository.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Example: Suppose the Java classes Foo and Bar have been changed by commits 1 and 2 in order to fix a vulnerability CVE-1234 in an open source project maintained at repo. In the following directory structure, the file repo/1/before/Foo.java represents the (vulnerable) source code of Foo before the fix has been applied, and repo/1/after/Foo.java represents its fixed source code.

repo
|-- 1
|   |-- before
|   |    `-- Foo.java
|   `-- after
|        `-- Foo.java
`-- 2
    |-- before
    |    `-- Bar.java
    `-- after
         `-- Bar.java

The invocation of PatchAnalyzer then could look as follows (to be discussed):

java PatchAnalyzer -d ./repo/1 -d ./repo/2 -b CVE-1234 -u http://gitlab.com/baz/repo

Additional notes:

  • Even though the repository URL will not be used any more to actually retrieve source code, it probably still makes sense to keep that as reference.
  • Rather than changing the existing Maven module patch-analyzer, I suggest to create a new module such that both can be used (for some time) in parallel.
  • To allow for the possibility to keep folder names different from commits identifiers, one could think of a command line option as follows -d ./repo/abc=1.
  • To allow for the grouping of fix commits, e.g., in different branches, one could further extend the -d option as follows: -d ./repo/abc=1:master

Allow to analyze Gradle projects without applying a plugin

Is your feature request related to a problem? Please describe.

Sometimes it's not possible to modify the build system of the Gradle project to assess. In such cases it would be nice if the project could still be assessed.

Describe the solution you'd like

I'm proposing to use the Analyzer library from the OSS Review Toolkit which is able to report (transitive) dependencies of Gradle (and more) projects by inspecting the project from the outside, without the need to apply a plugin.

Describe alternatives you've considered

None.

Additional context

I'm the lead developer of the OSS Review Toolkit (ORT). Feel free to reach out to me if such an integration would require changes on our side.

CVE cache size set to -1 when used in rest-backend

Describe the bug
The generic cache class in module shared has a field max_size, which is - depending on the constructor used - initialized with -1. This is the case when the class is used in the scope of the rest-backend, and results in wrong behavior when cache entries are read (too many entries get deleted).

To Reproduce
Steps to reproduce the behavior: The wrong behavior (too many cache deletes) can be observed in the logs of the rest-backend.

Expected behavior
Do not impose a size limit if max_size==-1, use the provided size otherwise.

Vulas version

  • 3.x before 3.0.10

Docker build failure

Describe the bug
Can't build docker

To Reproduce
Just follow the guide in the docker folder.

  Downloading https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)
Collecting certifi>=2017.4.17 (from requests)
  Downloading https://files.pythonhosted.org/packages/df/f7/04fee6ac349e915b82171f8e23cee63644d83663b34c539f7a09aed18f9e/certifi-2018.8.24-py2.py3-none-any.whl (147kB)
Collecting chardet<3.1.0,>=3.0.2 (from requests)
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
Installing collected packages: urllib3, idna, certifi, chardet, requests
Successfully installed certifi-2018.8.24 chardet-3.0.4 idna-2.7 requests-2.19.1 urllib3-1.23
 ---> 1e6e7409866b
Removing intermediate container aee8680791e6
Step 13/14 : RUN rm rest-lib-utils/src/main/resources/vulas-rest-lib-utils-sap.properties
 ---> Running in 7de5fb7d7f6f
rm: can't remove 'rest-lib-utils/src/main/resources/vulas-rest-lib-utils-sap.properties': No such file or directory
The command '/bin/sh -c rm rest-lib-utils/src/main/resources/vulas-rest-lib-utils-sap.properties' returned a non-zero code: 1
am@piccolino:~/vulnerability-assessment-tool$ 

Vulnerabilities for rebundled libraries cannot be marked as FP

As of version 3.1.0, the tool reports vulnerabilities for rebundled libraries. However this is done assuming that the entire library is rebundled. In case only a subset of the constructs are actually rebundled, the reported finding could be a false positive in case the vulnerable code was not included.

In the current implementation, such pairs ('outer library', 'vulnerability') cannot be marked as FP:

  • The pair can only be saved as affected library using the rest endpoint
  • the affected library is not consumed when computing the results.

TODO :

  • evaluate whether to add the "new" pairs to the bug frontend
  • when computing vulnerable dependencies for rebundled libraries, add a check for existing affected libraries (affected= false)

Note that even after fixing the bug, the feature will not be able to cover the following case:

  • outer library rebundles a slice of libraries A and B,
  • both A and B are subject to vulnerability X,
  • outer library rebundles the vulnerable code from A but not from B.
    --> We cannot mark the finding as FP for B and not for A in the context of outlet library.

Performance improvements in result consumption

Is your feature request related to a problem? Please describe.
REST endpoints providing scan results takes "long". Requests for application-specific results takes in average 2 seconds; requests involving multiple applications may go up to minutes.
Such performances are critical for the Web UI and the integration with external tools.

Describe the solution you'd like
The idea is to add a timestamp to the Application entity to be able to understand whether the application results underwent any change.

Benefits:

  1. The Web frontend can cache the application-specific results and only query the backend if the timestamp changed.

  2. The REST endpoints /hubintegration/apps can be enhanced to /hubintegration/apps?asof=<UNIXTIMESTAMP> to only get application whose results changed.

Required changes:

  1. Frontend: Add cache, processing of application timestamp, new mechanism to compute alert on applications (discussed with @Naramsim )
  2. Backend: timstamp field on application entity, plus mechanism to invalidate it (aka update) when (a) application is scanned, (b) vulnerability whose construct changes are contained in the application dependencies is added, (c) affected library for lib or library_id in the application dependencies is added/modified

Describe alternatives you've considered
Materialized view but they are not performant enough

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.