This is a rails/postgres application that will serve json data from the following data sources: - Cves - Cpes - CNA security advisories - GHSA Github security advisories - Github repositories that track public exploits for cves. - A list of github usernames github API data.
Find a file
2022-04-19 00:28:04 -05:00
app add github_advisory_importer_worker 2022-04-19 00:28:04 -05:00
bin make an importers dir in lib dir 2022-04-09 23:08:48 -05:00
config if you create a text file at ./data/github_usernames.txt with one username per line GithubUserImporter will use this data to import a GithubUser for each one 2022-04-11 20:53:20 -05:00
data make empty data dir 2022-04-11 21:04:54 -05:00
db added cvemon in a worker now with upsert_all 2022-04-19 00:18:29 -05:00
lib added cvemon in a worker now with upsert_all 2022-04-19 00:18:29 -05:00
log init commit rails new data_importer 2022-03-30 22:12:56 -05:00
public init commit rails new data_importer 2022-03-30 22:12:56 -05:00
storage init commit rails new data_importer 2022-03-30 22:12:56 -05:00
test make json rendering for cpes and cves 2022-04-04 13:18:03 -05:00
tmp init commit rails new data_importer 2022-03-30 22:12:56 -05:00
.gitignore make empty data dir 2022-04-11 21:04:54 -05:00
.ruby-version init commit rails new data_importer 2022-03-30 22:12:56 -05:00
config.ru init commit rails new data_importer 2022-03-30 22:12:56 -05:00
crontab.yaml begin with workers. first add a cna worker 2022-04-18 17:27:31 -05:00
docker-compose.yml begin with workers. first add a cna worker 2022-04-18 17:27:31 -05:00
Dockerfile added files for importing cves from cvelist repo to database 2022-04-01 13:36:20 -05:00
entrypoint.sh docker-compose and postgres basic rails app skeleton 2022-03-30 22:52:39 -05:00
Gemfile added faktory 2022-04-18 15:14:54 -05:00
Gemfile.lock added faktory 2022-04-18 15:14:54 -05:00
package.json init commit rails new data_importer 2022-03-30 22:12:56 -05:00
Rakefile init commit rails new data_importer 2022-03-30 22:12:56 -05:00
README.md update readme 2022-04-12 14:55:04 -05:00

data_importer

This is a rails/postgres application that will serve json data from the following data sources:

  • Cves
  • Cpes
  • CNA security advisories
  • GHSA Github security advisories
  • Github repositories that track public exploits for cves.
  • A list of github usernames github API data.

Check the HTTP API section below for specific endpoints that can be queried via http.

Supported data models:

Initial Setup

Environment files

Create the following file that will contain the environment variables we need to login to APIs: credentials.env

# Twitter stuff doesnt work right now.
# twitter_bearer_token=
# twitter_api_key=
# twitter_access_token_secret=
# twitter_access_token=
# twitter_api_key_secret=

github_api_token=

Build container

docker-compose build

Database creation and seeding initial data

docker-compose run web rake db:create
docker-compose run web rake db:migrate
docker-compose run web rake db:seed

Launch Pry console

docker-compose run web rails console

HTTP API

For now unauthenticated api over localhost:3000 until I put in some basic token auth. All response data is json rendered.

Cves

  get "/cves", to: "cves#index"
  get "/cves/:cve_id", to: "cves#show"
  get "/cves/years/:year", to: "cves#show_year"

Cpes

  get "/cpes", to: "cpes#index"
  get "/cpes/:id", to: "cpes#show"

Cnas

  get "/cnas", to: "cnas#index"
  get "/cnas/:id", to: "cnas#show"
  get "/cnas/cna/:cna_id", to: "cnas#show_for_cna"

GithubAdvisories

  get "/github_advisories", to: "github_advisories#index"
  get "/github_advisories/:ghsa_id", to: "github_advisories#show"

GithubUsers

Create a text file named ./data/github_usernames.txt with one username per line There is a seed task that will read this file and perform an API call to github API and store the data in DB for each user. The API calls made are using the following graphQL endpoints:

  • User Note: the following keys are returned - github_id, login, name, avatar_url, bio, bio_html, location
  • RepositoryInfo Note: An array is returned of each public repository of the user.
  get "/github_users", to: "github_users#index"
  get "/github_users/:username", to: "github_users#show"

GithubPocs

  get "/github_pocs", to: "github_pocs#index"
  get "/github_pocs/:id", to: "github_pocs#show"
  get "/github_pocs/cve/:cve_id", to: "github_pocs#show_for_cve"
  get "/github_pocs/years/:year", to: "github_pocs#show_year"

InthewildCveExploits

  get "/inthewild_cve_exploits", to: "inthewild_cve_exploits#index"
  get "/inthewild_cve_exploits/:cve_id", to: "inthewild_cve_exploits#show"

TrickestPocCves

  get "/trickest_poc_cves", to: "trickest_poc_cves#index"
  get "/trickest_poc_cves/:id", to: "trickest_poc_cves#show"
  get "/trickest_poc_cves/cve/:cve_id", to: "trickest_poc_cves#show_for_cve"
  get "/trickest_poc_cves/years/:year", to: "trickest_poc_cves#show_year"

CvemonCves

  get "/cvemon_cves", to: "cvemon_cves#index"
  get "/cvemon_cves/:id", to: "cvemon_cves#show"
  get "/cvemon_cves/cve/:cve_id", to: "cvemon_cves#show_for_cve"
  get "/cvemon_cves/years/:year", to: "cvemon_cves#show_year"