project-kb

module
v0.6.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 27, 2020 License: Apache-2.0

README

project "KB"

Go Report Card Go License PRs Welcome GitHub All Releases

Project KB supports the creation, management and aggregation of a distributed, collaborative knowledge base of vulnerabilities that affect open-source software.

This repository contains both a tool and vulnerability data.

Additionally, the MSR2019 folder contains the package associated with the paper we published at the Mining Software Repository conference in 2019 (see below).

Why this project

In order to feed Eclipse Steady with fresh data, we have spent a considerable amount of time, in the past few years, mining and curating a knowledge base of vulnerabilities that affect open-source components. We know that other parties have been doing the same, in academia as well as in the industry. From this experience, we have learnt that with the growing size of open source ecosystems and the pace at which new vulnerabilities are discovered, the old approach cannot scale. We are also more and more convinced that vulnerability knowledge-bases about open-source should be open-source themselves and adopt the same community-oriented model that governs the rest of the open-source ecosystem.

These considerations have pushed us to release our vulnerability knowledge base in early 2019. In June 2020, we made a further step releasing tool support to make the creation, aggregation, and consumption of vulnerability data much easier.

We hope this will encourage more contributors to join our efforts to build a collaborative, comprehensive knowledge base where each party remains in control of the data they produce and of how they aggregate and consume data from the other sources.

What can project "KB" be used for, in practice

(work in progress)

Project "KB" consists essentially of two things: a tool and a knowledge base.

The tool (kaybee) allows users to do the following:

  • create vulnerability statements; a vulnerability statement is a plain-text file in yaml format that contains data about a given vulnerability, such as the commits that provide a fix for it, a set of notes and references to related Web pages, a list of open-source components that are directly affected by the vulnerability at hand, and so on.
  • fetch vulnerability statements from one or more remote sources (git repositories)
  • merge the content of multiple sources of statements, based on a conflict resolution policy
  • export the result of the merge operation to a variety of different formats

The knowledge base, offers a set of vulnerability statements that can be consumed using the kaybee tool.

Getting started

Installing the kaybee tool

There is nothing to install actually, just download a binary compatible with your operating system, make sure it has execution permissions if applicable, and then run it.

Optionally, for your convenience, you may want to make sure that the binary is in your $PATH.

For example, in Linux you would put the following line in your .bashrc file:

export PATH=$PATH:/usr/local/bin/kaybee

(please, make sure you adjust the path to the kaybee binary as necessary)

Alternatively, you can clone this repository and build it yourself (you will need go and make). You can do so with the make command; inspecting the Makefile first is a good idea.

Usage

Once you have downloaded or built the binary, you can see the list of supported commands with:

kaybee --help

Documentation

Please check out the project "KB" home page.

Importing vulnerability data in Eclipse Steady

The steps that are required to import the knowledge base in Eclipse Steady are described in this tutorial. Further information can be found here.

Publications

In early 2019, a snapshot of the knowlege base from project "KB" was described in:

If you use the dataset for your research work, please cite it as:

@inproceedings{ponta2019msr,
    author={Serena E. Ponta and Henrik Plate and Antonino Sabetta and Michele Bezzi and
    C´edric Dangremont},
    title={A Manually-Curated Dataset of Fixes to Vulnerabilities of Open-Source Software},
    booktitle={Proceedings of the 16th International Conference on Mining Software Repositories}, 
    year=2019,
    month=May,
}

MSR 2019 DATA SHOWCASE SUBMISSION: please find here the data and the scripts described in that paper

Credits

Note that 3rd party information from NVD and MITRE might have been used as input for compiling this knowledge base. See MITRE's Terms of Use for more information. See also this notice.

Features

  • Creation of vulnerability statements
  • Retrieval and reconciliation of statement from multiple repositories, based on user-specified policies
  • Export to arbitrary formats with the built-in templating engine

Requirements

None, the kaybee binary is self-contained. Binary versions for Windows, Linux, MacOS are available for download.

Limitations

This project is work-in-progress. The vulnerability knowledge base only contains information about vulnerabilities in Java and Python open source components.

Known Issues

The list of current issues is available here.

Feel free to open a new issue if you think you found a bug or if you have a feature request.

How to obtain support

For the time being, please use GitHub issues both to report bugs and to request help. Documentation and better support channels will come soon.

Contributing

See here.

License

Copyright (c) 2020 SAP SE or an SAP affiliate company. All rights reserved.

This project is licensed under the Apache Software License, v.2 except as noted otherwise in the LICENSE file.

Directories

Path Synopsis
cmd
Package cmd contains all commands
Package cmd contains all commands
internal/conf
Package conf contains code related to the configuration of the tool, which in turns specifies which upstream sources to fetch statements from, which sources are trusted, and how to merge statements according to one or more strategies
Package conf contains code related to the configuration of the tool, which in turns specifies which upstream sources to fetch statements from, which sources are trusted, and how to merge statements according to one or more strategies
internal/tasks
Package tasks contains all implementations of tasks; these are instantiated and run from the main package
Package tasks contains all implementations of tasks; these are instantiated and run from the main package

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL