euvd

module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 14, 2025 License: MIT

README

EUVD - EU Vulnerability Database API Client

This Go package provides an idiomatic API client library and command-line interface for the EU Vulnerability Database (EUVD) API.

Installation

To install the library:

go get codeberg.org/hrbrmstr/euvd

To install the CLI:

go install codeberg.org/hrbrmstr/euvd/cmd/euvdcli@latest

Library Usage

package main

import (
	"context"
	"fmt"
	"log"
	"time"

	"codeberg.org/hrbrmstr/euvd/pkg/euvd"
)

func main() {
	// Create a new client
	client, err := euvd.NewClient()
	if err != nil {
		log.Fatalf("Failed to create client: %v", err)
	}

	// Set a timeout for our context
	ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
	defer cancel()

	// Get the latest vulnerabilities
	vulnerabilities, err := client.GetLatestVulnerabilities(ctx)
	if err != nil {
		log.Fatalf("Failed to get latest vulnerabilities: %v", err)
	}

	// Print the results
	for _, vuln := range vulnerabilities {
		fmt.Printf("%s: %s (Score: %.1f)\n", vuln.ID, vuln.Description, vuln.BaseScore)
	}

	// Search for vulnerabilities with flexible filters
	fromScore := 8.0
	exploited := true
	searchOpts := &euvd.SearchOptions{
		FromScore: &fromScore,
		Exploited: &exploited,
		Text:      "remote code execution",
		Size:      10,
	}

	results, err := client.SearchVulnerabilities(ctx, searchOpts)
	if err != nil {
		log.Fatalf("Failed to search vulnerabilities: %v", err)
	}

	fmt.Printf("Found %d vulnerabilities\n", results.Total)
}

CLI Usage

The euvdcli tool provides command-line access to the EUVD API:

Usage: euvdcli [options] <command> [command options]

Options:
  -baseurl string
        Base URL for the EUVD API (default "https://euvdservices.enisa.europa.eu/api")
  -format string
        Output format (json or text) (default "json")
  -timeout duration
        Timeout for API requests (default 30s)

Commands:
  latest                  Get latest vulnerabilities
  exploited               Get exploited vulnerabilities
  critical                Get critical vulnerabilities
  search [options]        Search for vulnerabilities
  vuln --id=<CVE-ID>      Get vulnerability by CVE ID
  euvdid --id=<EUVD-ID>   Get vulnerability by EUVD ID
  advisory --id=<ADV-ID>  Get advisory by ID

Examples

Get the latest vulnerabilities in human-readable format:

euvdcli -format text latest

Search for high-severity exploited vulnerabilities:

euvdcli search --fromscore=8.0 --exploited=true --text="remote" --size=5

Get details about a specific vulnerability:

euvdcli vuln --id=CVE-2024-0864

Get an advisory by ID:

euvdcli advisory --id=cisco-sa-ata19x-multi-RDTEqRsy

API Documentation

The full API documentation is available at: https://euvd.enisa.europa.eu/apidoc

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Directories

Path Synopsis
cmd
euvdcli command
pkg

Jump to

Keyboard shortcuts

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