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.