Skip to content

Vilicus is an open source tool that orchestrates security scans of container images(docker/oci) and centralizes all results into a database for further analysis and metrics.

License

Notifications You must be signed in to change notification settings

edersonbrilhante/vilicus

Repository files navigation

Vilicus

Table of Contents


Overview

Vilicus is an open source tool that orchestrates security scans of container images(docker/oci) and centralizes all results into a database for further analysis and metrics. It can perform using Anchore, Clair and Trivy.

How does it work?

There many tools to scan container images, but sometimes the results can be diferent in each one them. So the main goal of this project is to help development teams improve the quality of their container images by finding vulnerabilities and thus addressing them with anagnostic sight from vendors.

Here you can find articles comparing the scanning tools:


Architecture

Kiku


Development

Run deployment manually

docker-compose -f deployments/docker-compose.yaml up -d

Usage

Requirements

  • Disk Space ~30GB:
    • Docker System:
      • Images ~14GB
      • Containers ~11GB
      • Local Volumes ~200MB
  • Docker
  • Docker Compose
  • Bash
  • Wget

Using vilicus client

Run these following commands:

export TEMPLATE=<template>
export OUTPUT=<output>
export IMAGE=<public_image>|<vilicus_local_image>
wget -O run-job.sh https://raw.githubusercontent.com/edersonbrilhante/vilicus/main/scripts/run-job.sh
chmod +x ./run-job.sh
./run-job.sh

The result will be stored in into the file set by the environment variable OUTPUT.

Templates and Outputs

Gitlab
Template: /opt/vilicus/contrib/gitlab.tpl
Output: /artifacts/gl-container-scanning-report.json

Sarif
Template: /opt/vilicus/contrib/sarif.tpl
Output: /artifacts/result.sarif

Public image and Local images

Vilicus provides support images hosted in public repository and local builds. Public image is an image hosted in public repository such as DockerHub. To scan images in self-hosted registry or local build you must tag the image to the vilicus local registry.

Self-hosted registry docker tag <self-hosted-registry>/<image:tag> localhost:5000/<image:tag>

Local build docker build -t localhost:5000/<image:tag> -f <Dockerfile> <context>

Free Online Service

Vilicus also provides a free online service.

How it works?

This service is a serverless full-stack application with backend workers and database only using git and ci/cd runners.

The Frontend is hosted in GitHub Pages. This frontend is a landing page with a free service to scan or display the vulnerabilities in container images.

The results of container image scans are stored in a GitLab Repository.

When the user asks to show the results from an image, the frontend consumes the GitLab API to retrieve the file with vulns from this image. In case this image is not scanned yet, the user has the option to schedule a scan using a google form.

When this form is filled, the data is sent to a Google Spreadsheet.

A GitHub Workflow runs every 5 minutes to check if there are new answers in this Spreadsheet. For each new image in the Spreadsheet, this workflow triggers another Workflow to scan the image and save the result in the GitLab Repository.