### Setup PostgreSQL Database Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Installs PostgreSQL and creates the required user and database. ```bash sudo apt install postgresql sudo -u postgres createuser -P Enter password for new role: sudo -u postgres createdb -O ``` -------------------------------- ### Start all services Source: https://www.vulnerability-lookup.org/documentation/_sources/command-line-interface.md Initializes all project services. ```bash $ poetry run start ``` -------------------------------- ### Install Dependencies and Initialize Environment Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Installs project dependencies and sets the home directory environment variable. ```bash poetry install ``` ```bash echo VULNERABILITYLOOKUP_HOME="$(pwd)" >> .env ``` -------------------------------- ### Install VulnMCP Source: https://www.vulnerability-lookup.org/user-manual/ai Clone the repository and install dependencies using Poetry. ```bash git clone https://github.com/vulnerability-lookup/VulnMCP.git cd VulnMCP poetry install ``` -------------------------------- ### Install Meilisearch locally Source: https://www.vulnerability-lookup.org/documentation/_sources/fulltextsearch.md Downloads and installs the latest stable Meilisearch release using curl. ```bash sudo apt-get update sudo apt install curl -y curl -L https://install.meilisearch.com | sh ``` -------------------------------- ### Manage website service Source: https://www.vulnerability-lookup.org/documentation/_sources/command-line-interface.md Starts or restarts the website service. ```bash $ poetry run start_website ``` ```bash $ poetry run restart_website ``` -------------------------------- ### Start backend and website services Source: https://www.vulnerability-lookup.org/documentation/minimal-publication.html Initializes the backend services and the website using poetry. ```bash poetry run run_backend --start poetry run start_website ``` -------------------------------- ### GET /user/setup-2fa Source: https://www.vulnerability-lookup.org/documentation/_sources/webservice.md Endpoint to set up two-factor authentication. ```APIDOC ## GET /user/setup-2fa ### Description Set-up TFA with QRCode (or token) provided by the server. ### Method GET ### Endpoint /user/setup-2fa ``` -------------------------------- ### Manage feeders Source: https://www.vulnerability-lookup.org/documentation/_sources/command-line-interface.md Starts or stops all enabled feeders. ```bash $ poetry run feeders_manager --start $ poetry run feeders_manager --stop ``` -------------------------------- ### Set up development environment Source: https://www.vulnerability-lookup.org/documentation/_sources/contributing.md Commands to clone the repository, install dependencies via Poetry, and initialize pre-commit hooks. ```bash git clone --recursive https://github.com/vulnerability-lookup/vulnerability-lookup.git cd vulnerability-lookup/ poetry install --with dev pre-commit install ``` -------------------------------- ### Manage Application Lifecycle Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Use these commands to start, stop, or update the application from the project directory. ```bash poetry run start ``` ```bash poetry run stop ``` ```bash poetry run update ``` -------------------------------- ### Start and stop services Source: https://www.vulnerability-lookup.org/documentation/command-line-interface.html Commands to manage the lifecycle of the project services. ```bash $ poetry run start ``` ```bash $ poetry run stop ``` -------------------------------- ### Install Meilisearch for Systemd Source: https://www.vulnerability-lookup.org/documentation/_sources/fulltextsearch.md Downloads and moves the binary to the system path for service management. ```bash sudo apt-get update sudo apt install curl -y curl -L https://install.meilisearch.com | sh mv ./meilisearch /usr/local/bin/ ``` -------------------------------- ### Manage backend services Source: https://www.vulnerability-lookup.org/documentation/_sources/command-line-interface.md Starts or stops Valkey and Kvrocks backend services. ```bash $ poetry run run_backend --start $ poetry run run_backend --stop ``` -------------------------------- ### Install Valkey Dependencies Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md System packages required to build Valkey from source. ```bash sudo apt-get update sudo apt install build-essential tcl ``` -------------------------------- ### Run Meilisearch binary Source: https://www.vulnerability-lookup.org/documentation/_sources/fulltextsearch.md Starts the Meilisearch instance using a specific configuration file. ```bash ./meilisearch --config-file-path="./config.toml" ``` -------------------------------- ### GET /api/system/redis_up Source: https://www.vulnerability-lookup.org/user-manual/system-monitoring Checks if the Redis instance is operational. ```APIDOC ## GET /api/system/redis_up ### Description Checks if the Redis instance is operational. ### Method GET ### Endpoint /api/system/redis_up ### Response #### Success Response (200) - **status** (boolean) - Returns true if Redis is up. ``` -------------------------------- ### Manage systemd service Source: https://www.vulnerability-lookup.org/documentation/_sources/notification.md Commands to reload, enable, and start the notification service. ```bash sudo systemctl daemon-reload sudo systemctl enable vulnerability-lookup-notify.service sudo systemctl start vulnerability-lookup-notify.service systemctl status vulnerability-lookup-notify.service ``` -------------------------------- ### Register Meilisearch as a systemd service Source: https://www.vulnerability-lookup.org/documentation/_sources/fulltextsearch.md Creates the service unit file and enables the service to start on boot. ```bash cat << EOF > /etc/systemd/system/meilisearch.service [Unit] Description=Meilisearch After=systemd-user-sessions.service [Service] Type=simple WorkingDirectory=/var/lib/meilisearch ExecStart=/usr/local/bin/meilisearch --config-file-path /etc/meilisearch.toml User=meilisearch Group=meilisearch Restart=on-failure [Install] WantedBy=multi-user.target EOF systemctl enable meilisearch systemctl start meilisearch ``` -------------------------------- ### Launch notification service with poetry Source: https://www.vulnerability-lookup.org/documentation/_sources/notification.md Command to start the watchlist notification service using poetry. ```bash poetry run flask --app website.app notify_users ``` -------------------------------- ### Install Kvrocks Dependencies Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md System packages required to build Kvrocks from source. ```bash sudo apt-get update sudo apt install git gcc g++ make cmake autoconf automake libtool python3 libssl-dev ``` -------------------------------- ### GET /api/sighting/ Source: https://www.vulnerability-lookup.org/documentation/_sources/api.md Retrieve sightings for a vulnerability with pagination support. ```APIDOC ## GET /api/sighting/ ### Description Retrieves a paginated list of sightings for a specific vulnerability. ### Method GET ### Endpoint /api/sighting/ ### Parameters #### Query Parameters - **vuln_id** (string) - Optional - The vulnerability ID to filter sightings. - **page** (integer) - Optional - The page number for pagination. - **per_page** (integer) - Optional - The number of items per page. ``` -------------------------------- ### GET /sightings/feed. Source: https://www.vulnerability-lookup.org/user-manual/feed-syndication Retrieves recent sightings. ```APIDOC ## GET /sightings/feed. ### Description Retrieves recent sightings in the specified format. ### Method GET ### Endpoint /sightings/feed. ### Parameters #### Path Parameters - **format** (string) - Required - The feed format, either 'rss' or 'atom'. #### Query Parameters - **vulnerability** (string) - Optional - Filter by a specific vulnerability ID. ``` -------------------------------- ### GET /known-exploited-vulnerabilities-catalog/feed.atom Source: https://www.vulnerability-lookup.org/documentation/feeds.html Retrieves KEV catalog feeds. ```APIDOC ## GET /known-exploited-vulnerabilities-catalog/feed.atom ### Description Retrieves a KEV catalog feed, optionally filtered by a specific catalog UUID. ### Method GET ### Endpoint https://vulnerability.circl.lu/known-exploited-vulnerabilities-catalog/feed.atom ### Parameters #### Query Parameters - **catalog_uuid** (string) - Optional - The UUID of the specific BCP-07 catalog. ``` -------------------------------- ### GET /bundles/feed.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves recent bundles. ```APIDOC ## GET /bundles/feed.{format} ### Description Returns recent bundles. ### Method GET ### Endpoint /bundles/feed.{format} ### Parameters #### Path Parameters - **format** (string) - Required - The feed format, either 'rss' or 'atom'. #### Query Parameters - **user** (string) - Optional - Narrows results to one author. ``` -------------------------------- ### GET /api/system/checkProcess Source: https://www.vulnerability-lookup.org/user-manual/system-monitoring Retrieves the heartbeat timestamps for all system processes. ```APIDOC ## GET /api/system/checkProcess ### Description Retrieves the heartbeat timestamps for all system processes. ### Method GET ### Endpoint /api/system/checkProcess ### Parameters #### Request Headers - **X-API-KEY** (string) - Required - API key for authentication. ### Response #### Success Response (200) - **process_heartbeats** (object) - A map of process names to their last heartbeat timestamp strings. ``` -------------------------------- ### API Response Example Source: https://www.vulnerability-lookup.org/2025/07/11/vulnerability-lookup-2-13-0 Sample JSON output returned by the vulnerability API endpoint. ```json [ { "dataType": "CVE_RECORD", "dataVersion": "5.1", "cveMetadata": { "cveId": "CVE-2006-10001", "assignerOrgId": "1af790b2-7ee1-4545-860a-a788eba489b5", "state": "PUBLISHED", "assignerShortName": "VulDB", "dateReserved": "2023-03-04T10:47:33.154Z", "datePublished": "2023-03-05T20:31:03.187Z", "dateUpdated": "2024-08-07T20:57:41.047Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "1af790b2-7ee1-4545-860a-a788eba489b5", "shortName": "VulDB", "dateUpdated": "2023-10-12T08:05:39.323Z" }, "title": "Subscribe to Comments Plugin subscribe-to-comments.php cross site scripting", "problemTypes": [ { "descriptions": [ { "type": "CWE", "cweId": "CWE-79", "lang": "en", "description": "CWE-79 Cross Site Scripting" } ] } ], "affected": [ { "vendor": "n/a", "product": "Subscribe to Comments Plugin", "versions": [ { "version": "2.0.0", "status": "affected" }, { "version": "2.0.1", "status": "affected" }, { "version": "2.0.2", "status": "affected" }, { "version": "2.0.3", "status": "affected" }, { "version": "2.0.4", "status": "affected" }, { "version": "2.0.5", "status": "affected" }, { "version": "2.0.6", "status": "affected" }, { "version": "2.0.7", "status": "affected" } ] } ], "descriptions": [ { "lang": "en", "value": "A vulnerability, which was classified as problematic, was found in Subscribe to Comments Plugin up to 2.0.7 on WordPress. This affects an unknown part of the file subscribe-to-comments.php. The manipulation leads to cross site scripting. It is possible to initiate the attack remotely. Upgrading to version 2.0.8 is able to address this issue. The identifier of the patch is 9683bdf462fcac2f32b33be98f0b96497fbd1bb6. It is recommended to upgrade the affected component. The identifier VDB-222321 was assigned to this vulnerability." }, { "lang": "de", "value": "Es wurde eine problematische Schwachstelle in Subscribe to Comments Plugin bis 2.0.7 für WordPress gefunden. Hiervon betroffen ist ein unbekannter Codeblock der Datei subscribe-to-comments.php. Dank der Manipulation mit unbekannten Daten kann eine cross site scripting-Schwachstelle ausgenutzt werden. Der Angriff kann über das Netzwerk angegangen werden. Ein Aktualisieren auf die Version 2.0.8 vermag dieses Problem zu lösen. Der Patch wird als 9683bdf462fcac2f32b33be98f0b96497fbd1bb6 bezeichnet. Als bestmögliche Massnahme wird das Einspielen eines Upgrades empfohlen." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "baseScore": 3.5, "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:N", "baseSeverity": "LOW" } }, { "cvssV3_0": { "version": "3.0", "baseScore": 3.5, "vectorString": "CVSS:3.0/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:L/A:N", "baseSeverity": "LOW" } }, { "cvssV2_0": { "version": "2.0", "baseScore": 4 } } ] } } } ] ``` -------------------------------- ### Manage Systemd Service Source: https://www.vulnerability-lookup.org/documentation/_sources/sync.md Commands to reload, enable, start, and check the status of the systemd sync service. ```bash sudo systemctl daemon-reload sudo systemctl enable vulnerability-lookup-sync.service sudo systemctl start vulnerability-lookup-sync.service systemctl status vulnerability-lookup-sync.service ``` -------------------------------- ### GET /sightings/feed.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves recent sightings across all vulnerabilities. ```APIDOC ## GET /sightings/feed.{format} ### Description Returns recent sightings. ### Method GET ### Endpoint /sightings/feed.{format} ### Parameters #### Path Parameters - **format** (string) - Required - The feed format, either 'rss' or 'atom'. #### Query Parameters - **vulnerability** (string) - Optional - Narrows results to a single vulnerability. ``` -------------------------------- ### GET /sightings/feed.atom Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves sightings for a specific vulnerability or product. ```APIDOC ## GET /sightings/feed.atom ### Description Retrieves aggregated sightings data. ### Method GET ### Endpoint https://vulnerability.circl.lu/sightings/feed.atom ### Parameters #### Query Parameters - **vulnerability** (string) - Optional - Filter by specific vulnerability ID ``` -------------------------------- ### Verify CSAF Downloader Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Check the version of the CSAF downloader to ensure it is correctly installed. ```bash $ ./bin-linux-amd64/csaf_downloader --version 3.5.1 ``` -------------------------------- ### Example Inference Output Source: https://www.vulnerability-lookup.org/user-manual/ai Sample output generated by the severity classification model. ```text Predictions: tensor([[2.5910e-04, 2.1585e-03, 1.3680e-02, 9.8390e-01]]) Predicted severity: critical ``` -------------------------------- ### GET /api/comment/ Source: https://www.vulnerability-lookup.org/documentation/_sources/api.md Retrieve and filter comments associated with vulnerabilities. ```APIDOC ## GET /api/comment/ ### Description Retrieves a list of comments, optionally filtered by metadata using JSONB containment. ### Method GET ### Endpoint /api/comment/ ### Parameters #### Query Parameters - **meta** (string) - Optional - A JSON value matched against the comment's meta field. ``` -------------------------------- ### GET /user/{login}.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves recent activity for a specific user. ```APIDOC ## GET /user/{login}.{format} ### Description Returns recent activity (sightings, comments, bundles) for a given user. ### Method GET ### Endpoint /user/{login}.{format} ### Parameters #### Path Parameters - **login** (string) - Required - The user login identifier. - **format** (string) - Required - The feed format, either 'rss' or 'atom'. ``` -------------------------------- ### GET /kev-catalogs/feed.{format} Source: https://www.vulnerability-lookup.org/documentation/feeds.html Retrieves BCP-07 entries aggregated across every catalog known to the instance. ```APIDOC ## GET /kev-catalogs/feed.{format} ### Description Retrieves BCP-07 entries aggregated across all known catalogs, ordered by newest status update first. Each entry title is prefixed with its originating catalog. ### Method GET ### Endpoint /kev-catalogs/feed.{format} ### Parameters #### Query Parameters - **page** (integer) - Optional - Page number for pagination - **per_page** (integer) - Optional - Number of entries per page (default 20) ``` -------------------------------- ### Querying Vulnerability Advisories via Kvrocks Source: https://www.vulnerability-lookup.org/2025/09/19/vulnerability-lookup-2-16-0 Examples of queries for retrieving vulnerability advisory counts and sorted indexes by state and source. ```text GET published:count:github:2025-09 ``` ```text ZREVRANGE index:csaf_certbund:published 0 9 WITHSCORES ``` ```text ZREVRANGE vendors:ranking:2025-08 0 9 WITHSCORES ``` -------------------------------- ### Initialize Database and Create Administrator Source: https://www.vulnerability-lookup.org/documentation/_sources/minimal-publication.md Run these commands to initialize the database schema and create the initial administrative user account. ```bash poetry run flask --app website.app db_init poetry run flask --app website.app db stamp head poetry run flask --app website.app create_admin --login admin --email admin@example.org --password '' ``` -------------------------------- ### GET /api/stats/vulnerability/most_sighted Source: https://www.vulnerability-lookup.org/2025/10/24/workshop-at-hack-lu-2025 Retrieves the most sighted vulnerabilities. ```APIDOC ## GET /api/stats/vulnerability/most_sighted ### Description Returns the most sighted vulnerabilities within a specific timeframe. ### Method GET ### Endpoint https://vulnerability.circl.lu/api/stats/vulnerability/most_sighted ### Parameters #### Query Parameters - **date_from** (string) - Optional - Start date for the query (YYYY-MM-DD). - **output** (string) - Optional - The format of the output (e.g., markdown). ``` -------------------------------- ### Sample Atom feed response Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Example structure of an Atom feed response returned by the API. ```xml https://vulnerability.circl.lu/rss/recent/all/10 Most recent entries from all 2024-11-26T08:03:09.000211+00:00 Vulnerability-Lookup info@circl.lu Contains only the most 10 recent entries. https://vulnerability.circl.lu/vuln/ghsa-x53h-2cjp-mwcx ghsa-x53h-2cjp-mwcx 2024-11-26T08:03:09.013675+00:00 ``` -------------------------------- ### GET /kev-catalogs/feed.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves BCP-07 entries aggregated across all known catalogs, ordered by newest status update first. ```APIDOC ## GET /kev-catalogs/feed.{format} ### Description Retrieves BCP-07 entries aggregated across every catalog the instance knows about. Each entry title is prefixed with its originating catalog. ### Method GET ### Endpoint /kev-catalogs/feed.{format} ### Parameters #### Query Parameters - **page** (integer) - Optional - Page number for pagination. - **per_page** (integer) - Optional - Number of entries per page (default 20). ``` -------------------------------- ### GET /api/vulnerability/{cve} Source: https://www.vulnerability-lookup.org/2025/10/24/workshop-at-hack-lu-2025 Retrieves vulnerability sightings for a specific CVE identifier. ```APIDOC ## GET /api/vulnerability/{cve} ### Description Retrieves a list of sightings associated with a specific vulnerability identifier. ### Method GET ### Endpoint https://vulnerability.circl.lu/api/vulnerability/{cve} ### Parameters #### Path Parameters - **cve** (string) - Required - The CVE identifier (e.g., CVE-2024-5261) #### Query Parameters - **with_sightings** (boolean) - Optional - Set to true to include sighting details in the response. ``` -------------------------------- ### GET /api/sighting/ Source: https://www.vulnerability-lookup.org/2025/10/24/workshop-at-hack-lu-2025 Pivots from a source URL to retrieve associated vulnerabilities or filters sightings by date and status. ```APIDOC ## GET /api/sighting/ ### Description Allows pivoting from a specific source URL to find related vulnerabilities, or filtering sightings based on date ranges and advisory status. ### Method GET ### Endpoint https://vulnerability.circl.lu/api/sighting/ ### Parameters #### Query Parameters - **source** (string) - Optional - The source URL to pivot from. - **date_from** (string) - Optional - Start date for filtering (YYYY-MM-DD). - **date_to** (string) - Optional - End date for filtering (YYYY-MM-DD). - **advisory_status** (string) - Optional - Filter by status (e.g., unpublished). ``` -------------------------------- ### GET /recent/{source}.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves recent vulnerabilities per source or across all sources. ```APIDOC ## GET /recent/{source}.{format} ### Description Returns recent vulnerabilities for a specific source or all sources. ### Method GET ### Endpoint /recent/{source}.{format} ### Parameters #### Path Parameters - **source** (string) - Required - The source identifier (e.g., 'all', 'cvelistv5', 'nvd'). - **format** (string) - Required - The feed format, either 'rss' or 'atom'. #### Query Parameters - **vendor** (string) - Optional - Filters results by vendor-id. - **vulnerability** (string) - Optional - Returns vulnerabilities linked to the given vuln-id. ``` -------------------------------- ### Initialize CNA configuration file Source: https://www.vulnerability-lookup.org/documentation/_sources/cna.md Copy the sample configuration file to the active configuration path. ```bash cp config/cna.json.sample config/cna.json ``` -------------------------------- ### GET /pubsub/subscribe/{channel} Source: https://www.vulnerability-lookup.org/documentation/_sources/streaming.md Establishes an authenticated connection to a specific Pub/Sub channel to receive real-time updates. ```APIDOC ## GET /pubsub/subscribe/{channel} ### Description Connects to the authenticated HTTP subscribing interface to receive stream updates for a specific channel. ### Method GET ### Endpoint /pubsub/subscribe/{channel} ### Parameters #### Path Parameters - **channel** (string) - Required - The channel to subscribe to (e.g., vulnerability, comment, bundle, sighting). ### Request Example curl -H "X-API-KEY: " http://127.0.0.1:10001/pubsub/subscribe/comment ``` -------------------------------- ### GET /sightings/cpesearch/{cpe}/feed.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves recent sightings for a specific CPE. ```APIDOC ## GET /sightings/cpesearch/{cpe}/feed.{format} ### Description Returns recent sightings for any vulnerability affecting the given CPE. ### Method GET ### Endpoint /sightings/cpesearch/{cpe}/feed.{format} ### Parameters #### Path Parameters - **cpe** (string) - Required - The CPE identifier. - **format** (string) - Required - The feed format, either 'rss' or 'atom'. ``` -------------------------------- ### GET /api/sighting/ Source: https://www.vulnerability-lookup.org/user-manual/correlations Finds correlations between vulnerabilities by searching for sightings associated with a specific source URL. ```APIDOC ## GET /api/sighting/ ### Description Queries sightings based on a source URL to identify vulnerabilities that have been reported in that source. ### Method GET ### Endpoint https://vulnerability.circl.lu/api/sighting/ ### Parameters #### Query Parameters - **source** (string) - Required - The URL of the source to search for sightings. ### Response #### Success Response (200) - **data** (array) - A list of objects containing vulnerability identifiers linked to the provided source. ``` -------------------------------- ### GET /known-exploited-vulnerabilities.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves the classic CISA KEV list. Entries include cveID, vulnerability name, description, and date added. ```APIDOC ## GET /known-exploited-vulnerabilities.{format} ### Description Retrieves the classic CISA KEV list. This feed allows for a large window of entries and is cached briefly. ### Method GET ### Endpoint /known-exploited-vulnerabilities.{format} ### Parameters #### Query Parameters - **page** (integer) - Optional - Page number for pagination. - **per_page** (integer) - Optional - Number of entries per page (up to 3000). ``` -------------------------------- ### Copy standard configuration files Source: https://www.vulnerability-lookup.org/documentation/_sources/minimal-publication.md Initialize the configuration directory by copying sample files to their active locations. ```bash cp config/generic.json.sample config/generic.json cp config/logging.json.sample config/logging.json cp config/website.py.sample config/website.py cp config/stream.json.sample config/stream.json cp config/fulltextsearch.json.sample config/fulltextsearch.json cp config/modules.cfg.sample config/modules.cfg ``` -------------------------------- ### GET /known-exploited-vulnerabilities-catalog/feed.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves recent entries from a GCVE BCP-07 KEV catalog. ```APIDOC ## GET /known-exploited-vulnerabilities-catalog/feed.{format} ### Description Returns recent entries from a specific GCVE BCP-07 KEV catalog. ### Method GET ### Endpoint /known-exploited-vulnerabilities-catalog/feed.{format} ### Parameters #### Path Parameters - **format** (string) - Required - The feed format, either 'rss' or 'atom'. #### Query Parameters - **catalog_uuid** (string) - Optional - Selects a specific catalog; if omitted, returns the local catalog. ``` -------------------------------- ### Initialize Database Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Initializes the database schema and creates the version table. ```bash poetry run flask --app website.app db_init # initialize database poetry run flask --app website.app db stamp head # create alembic_version table ``` -------------------------------- ### GET /kev-catalogs/feed.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves aggregated KEV entries across all known GCVE BCP-07 catalogs. ```APIDOC ## GET /kev-catalogs/feed.{format} ### Description Returns aggregated KEV entries from all known GCVE BCP-07 catalogs. ### Method GET ### Endpoint /kev-catalogs/feed.{format} ### Parameters #### Path Parameters - **format** (string) - Required - The feed format, either 'rss' or 'atom'. ``` -------------------------------- ### Build Valkey from Source Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Commands to clone, checkout, and compile the Valkey repository. ```bash git clone https://github.com/valkey-io/valkey cd valkey git checkout 9.0.1 make # Optionally, run the tests: make test cd .. ``` -------------------------------- ### GET /comments/feed.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves recent comments. ```APIDOC ## GET /comments/feed.{format} ### Description Returns recent comments. ### Method GET ### Endpoint /comments/feed.{format} ### Parameters #### Path Parameters - **format** (string) - Required - The feed format, either 'rss' or 'atom'. #### Query Parameters - **user** (string) - Optional - Narrows results to one author. ``` -------------------------------- ### Configure Meilisearch directories and config Source: https://www.vulnerability-lookup.org/documentation/_sources/fulltextsearch.md Prepares the data directories and downloads the configuration file to the system directory. ```bash mkdir /var/lib/meilisearch/data /var/lib/meilisearch/dumps /var/lib/meilisearch/snapshots chown -R meilisearch:meilisearch /var/lib/meilisearch chmod 750 /var/lib/meilisearch curl https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml > /etc/meilisearch.toml ``` -------------------------------- ### GET /known-exploited-vulnerabilities-catalog/feed.atom Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves KEV catalog feeds, optionally filtered by a specific catalog UUID. ```APIDOC ## GET /known-exploited-vulnerabilities-catalog/feed.atom ### Description Retrieves KEV catalog feeds. ### Method GET ### Endpoint https://vulnerability.circl.lu/known-exploited-vulnerabilities-catalog/feed.atom ### Parameters #### Query Parameters - **catalog_uuid** (string) - Optional - Filter by specific catalog UUID ``` -------------------------------- ### GET /known-exploited-vulnerabilities.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves recent entries from the CISA Known Exploited Vulnerabilities catalog. ```APIDOC ## GET /known-exploited-vulnerabilities.{format} ### Description Returns recent entries from the CISA KEV list. ### Method GET ### Endpoint /known-exploited-vulnerabilities.{format} ### Parameters #### Path Parameters - **format** (string) - Required - The feed format, either 'rss' or 'atom'. ``` -------------------------------- ### GET /known-exploited-vulnerabilities.atom Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves the CISA Known Exploited Vulnerabilities (KEV) list in Atom format. ```APIDOC ## GET /known-exploited-vulnerabilities.atom ### Description Retrieves the CISA Known Exploited Vulnerabilities (KEV) list. ### Method GET ### Endpoint https://vulnerability.circl.lu/known-exploited-vulnerabilities.atom ``` -------------------------------- ### Copy Configuration Files Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Copies sample configuration files to their active locations. ```bash cp config/generic.json.sample config/generic.json cp config/logging.json.sample config/logging.json cp config/website.py.sample config/website.py cp config/stream.json.sample config/stream.json cp config/fulltextsearch.json.sample config/fulltextsearch.json ``` -------------------------------- ### GET /api/system/checkSMTP Source: https://www.vulnerability-lookup.org/user-manual/system-monitoring Checks the status of the SMTP notification system. ```APIDOC ## GET /api/system/checkSMTP ### Description Checks the status of the SMTP notification system. ### Method GET ### Endpoint /api/system/checkSMTP ### Parameters #### Request Headers - **X-API-KEY** (string) - Required - API key for authentication. ### Response #### Success Response (200) - **status** (boolean) - Returns true if SMTP is operational. ``` -------------------------------- ### GET /known-exploited-vulnerabilities-catalog/feed.{format} Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves a GCVE BCP-07 KEV catalog feed. Returns the local catalog by default or a specific catalog if a UUID is provided. ```APIDOC ## GET /known-exploited-vulnerabilities-catalog/feed.{format} ### Description Retrieves a single GCVE BCP-07 KEV catalog. Entries are ordered by status_updated_at and include status, exploitation flag, characteristics, evidence count, and timestamps. ### Method GET ### Endpoint /known-exploited-vulnerabilities-catalog/feed.{format} ### Parameters #### Query Parameters - **catalog_uuid** (string) - Optional - The UUID of the specific catalog to follow. - **page** (integer) - Optional - Page number for pagination. - **per_page** (integer) - Optional - Number of entries per page (default 20). ``` -------------------------------- ### GET /api/vulnerability/{cve_id} Source: https://www.vulnerability-lookup.org/user-manual/correlations Retrieves details for a specific vulnerability, including associated sightings when the with_sightings parameter is set to true. ```APIDOC ## GET /api/vulnerability/{cve_id} ### Description Retrieves information about a specific vulnerability. By setting the with_sightings query parameter to true, the response includes a list of sightings associated with the vulnerability. ### Method GET ### Endpoint https://vulnerability.circl.lu/api/vulnerability/{cve_id} ### Parameters #### Path Parameters - **cve_id** (string) - Required - The identifier of the vulnerability (e.g., CVE-2024-5261). #### Query Parameters - **with_sightings** (boolean) - Optional - If set to true, includes sightings in the response. ### Response #### Success Response (200) - **vulnerability-lookup:sightings** (array) - A list of sighting objects associated with the vulnerability. ``` -------------------------------- ### GET /recent/{source}.atom Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves recent vulnerability entries in Atom format. You can fetch all sources or a specific source. ```APIDOC ## GET /recent/{source}.atom ### Description Retrieves recent vulnerability entries in Atom format. ### Method GET ### Endpoint https://vulnerability.circl.lu/recent/{source}.atom ### Parameters #### Path Parameters - **source** (string) - Required - The vulnerability source (e.g., 'all', 'pysec', 'cvelistv5') #### Query Parameters - **vendor** (string) - Optional - Filter by vendor name - **per_page** (integer) - Optional - Number of items per page - **page** (integer) - Optional - Page number - **vulnerability** (string) - Optional - Filter by specific vulnerability ID ``` -------------------------------- ### Initialize Submodules Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Updates and initializes project submodules. ```bash git submodule update --init ``` -------------------------------- ### GET /api/vulnerability/{id} Source: https://www.vulnerability-lookup.org/documentation/_sources/api.md Look up a specific vulnerability by its ID. ```APIDOC ## GET /api/vulnerability/{id} ### Description Retrieves details for a specific vulnerability using its unique identifier. ### Method GET ### Endpoint /api/vulnerability/{id} ### Parameters #### Path Parameters - **id** (string) - Required - The vulnerability identifier (e.g., CVE-2024-38063) ``` -------------------------------- ### GET /known-exploited-vulnerabilities.atom Source: https://www.vulnerability-lookup.org/documentation/feeds.html Retrieves feeds related to known exploited vulnerabilities. ```APIDOC ## GET /known-exploited-vulnerabilities.atom ### Description Retrieves the CISA KEV list feed. ### Method GET ### Endpoint https://vulnerability.circl.lu/known-exploited-vulnerabilities.atom ``` -------------------------------- ### Initialize the Database Source: https://www.vulnerability-lookup.org/documentation/_sources/webservice.md Command to initialize the database using the Flask application context. ```bash $ poetry run flask --app website.app db_init ``` -------------------------------- ### Download Meilisearch configuration Source: https://www.vulnerability-lookup.org/documentation/_sources/fulltextsearch.md Fetches the default configuration file from the official repository. ```bash curl https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml > config.toml ``` -------------------------------- ### GET /api/stats/vendors/ranking Source: https://www.vulnerability-lookup.org/2025/10/24/workshop-at-hack-lu-2025 Retrieves the ranking of vendors based on vulnerability counts. ```APIDOC ## GET /api/stats/vendors/ranking ### Description Returns a ranked list of vendors based on the number of associated vulnerabilities. ### Method GET ### Endpoint https://vulnerability.circl.lu/api/stats/vendors/ranking ### Parameters #### Query Parameters - **limit** (integer) - Optional - The number of results to return. - **output** (string) - Optional - The format of the output (e.g., json). - **period** (string) - Optional - The time period for the ranking (e.g., YYYY-MM). ### Response #### Success Response (200) - **vendor** (string) - The name of the vendor. - **count** (number) - The vulnerability count. ``` -------------------------------- ### GET /api/stats/cwe/most_used Source: https://www.vulnerability-lookup.org/2025/10/24/workshop-at-hack-lu-2025 Retrieves the most used CWEs based on vulnerability data. ```APIDOC ## GET /api/stats/cwe/most_used ### Description Returns a list of the most frequently used CWEs. ### Method GET ### Endpoint https://vulnerability.circl.lu/api/stats/cwe/most_used ### Parameters #### Query Parameters - **limit** (integer) - Optional - The number of results to return. - **output** (string) - Optional - The format of the output (e.g., json). ### Response #### Success Response (200) - **cwe** (string) - The CWE identifier. - **count** (number) - The frequency count. ``` -------------------------------- ### Configure minimal instance settings Source: https://www.vulnerability-lookup.org/documentation/_sources/minimal-publication.md Set essential parameters in config/generic.json to enable publication features while disabling unnecessary services like full-text search. ```json { "public_domain": "vuln-publication.example.org", "user_accounts": true, "fulltextsearch": false, "external_crontab": false, "local_instance_name": "YOURORG", "local_instance_uuid": "8627204d-fee7-4bdf-8707-5f0833b57c82", "local_instance_vulnid_pattern": "^YOURORG-SA-[0-9]{4}-[0-9]{4,19}$", "local_instance_vulnid_example": "YOURORG-SA-yyyy-nnnn" } ``` -------------------------------- ### Database operations Source: https://www.vulnerability-lookup.org/documentation/_sources/command-line-interface.md Commands for initializing, backing up, and visualizing the database. ```bash $ poetry run flask --app website.app db_init ``` ```bash $ poetry run flask --app website.app db_backup ``` ```bash $ poetry run flask --app website.app db_diagram ``` -------------------------------- ### Build Kvrocks from Source Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Commands to clone, checkout, and compile the Kvrocks repository. ```bash git clone https://github.com/apache/kvrocks.git cd kvrocks git checkout v2.14.0 ./x.py build cd .. ``` -------------------------------- ### Create Admin User Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Creates the initial administrative user account. ```bash poetry run flask --app website.app create_admin --login admin --email admin@example.org --password ``` -------------------------------- ### Initialize PyVulnerabilityLookup Source: https://www.vulnerability-lookup.org/user-manual/pyvulnerabilitylookup Instantiate the client using the service URL and an optional API token. ```python from pyvulnerabilitylookup import PyVulnerabilityLookup vuln_lookup = PyVulnerabilityLookup("https://vulnerability.circl.lu/", token="") ``` -------------------------------- ### GET /api/cna_credential/ Source: https://www.vulnerability-lookup.org/documentation/_sources/cna.md Retrieves details for a single CNA credential by its ID. ```APIDOC ## GET /api/cna_credential/ ### Description Retrieves the details of a single CNA credential. ### Method GET ### Endpoint /api/cna_credential/ ### Parameters - **id** (path) - Required - The unique identifier of the credential. - **X-API-KEY** (header) - Required - Admin API key for authentication. ``` -------------------------------- ### Update documentation Source: https://www.vulnerability-lookup.org/documentation/_sources/command-line-interface.md Builds the HTML documentation. ```bash $ cd docs; poetry run make html ``` -------------------------------- ### Import Optional Data Source: https://www.vulnerability-lookup.org/documentation/_sources/minimal-publication.md Populate the database with standard OSI-approved licenses and language definitions. ```bash poetry run flask --app website.app import_osi_approved_licenses poetry run flask --app website.app import_languages ``` -------------------------------- ### Launch Sync Service with Poetry Source: https://www.vulnerability-lookup.org/documentation/_sources/sync.md Commands to execute the synchronization service using poetry, supporting various modes and configurations. ```bash poetry run flask --app website.app sync ``` ```bash poetry run flask --app website.app sync --interval 0 ``` ```bash poetry run flask --app website.app sync --interval 1800 ``` ```bash poetry run flask --app website.app sync --login myuser ``` ```bash poetry run flask --app website.app sync --log-file /var/log/vulnerability-lookup_sync.log ``` -------------------------------- ### Background services Source: https://www.vulnerability-lookup.org/documentation/_sources/command-line-interface.md Commands for launching notification and synchronization services. ```bash $ poetry run flask --app website.app notify_users ``` ```bash $ poetry run flask --app website.app sync ``` -------------------------------- ### GET /comments/feed.atom Source: https://www.vulnerability-lookup.org/documentation/_sources/feeds.md Retrieves recent comments across the instance, optionally filtered by user. ```APIDOC ## GET /comments/feed.atom ### Description Retrieves recent comments. ### Method GET ### Endpoint https://vulnerability.circl.lu/comments/feed.atom ### Parameters #### Query Parameters - **user** (string) - Optional - Filter by username ``` -------------------------------- ### Query change-aware browse API for Microsoft products Source: https://www.vulnerability-lookup.org/2026/06/19/vulnerability-lookup-5-2-0 Demonstrates how to use the new browse API with a 'since' parameter to fetch product changes filtered by a query string. ```bash $ curl -s 'https://vulnerability.circl.lu/api/browse/vendors/microsoft/products?q=windows&since=2026-06-18&page=1&per_page=10' | jq { "metadata": { "count": 19, "page": 1, "per_page": 10 }, "data": [ { "name": "windows 10 version 1607", "last_change": "2026-06-18T22:26:33.618000+00:00" }, { "name": "windows 10 version 1809", "last_change": "2026-06-18T22:26:33.618000+00:00" }, { "name": "windows 10 version 21h2", "last_change": "2026-06-18T22:26:33.618000+00:00" }, { "name": "windows 10 version 22h2", "last_change": "2026-06-18T22:26:33.618000+00:00" }, { "name": "windows 11 version 23h2", "last_change": "2026-06-18T22:26:33.618000+00:00" }, { "name": "windows 11 version 24h2", "last_change": "2026-06-18T22:26:33.618000+00:00" }, { "name": "windows 11 version 25h2", "last_change": "2026-06-18T22:26:33.618000+00:00" }, { "name": "windows 11 version 26h1", "last_change": "2026-06-18T22:26:33.618000+00:00" }, { "name": "windows server 2012", "last_change": "2026-06-18T22:26:33.618000+00:00" }, { "name": "windows server 2012 (server core installation)", "last_change": "2026-06-18T22:26:33.618000+00:00" } ] } ``` -------------------------------- ### Update the application Source: https://www.vulnerability-lookup.org/documentation/_sources/update.md Run these commands from the project root to update the application environment. ```bash $ cd vulnerability-lookup/ $ poetry run update ``` -------------------------------- ### Configure Modules Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Copies the module configuration file for editing. ```bash cp config/modules.cfg.sample config/modules.cfg ``` -------------------------------- ### GET/POST /user/signup Source: https://www.vulnerability-lookup.org/documentation/_sources/webservice.md Endpoint for user registration using login and email. ```APIDOC ## GET/POST /user/signup ### Description Sign-up with login and email. A confirmation email is sent to the user with a token in a URL. ### Method GET, POST ### Endpoint /user/signup ``` -------------------------------- ### Configure systemd Service Source: https://www.vulnerability-lookup.org/documentation/_sources/installation.md Create this unit file to run the application as a background service. ```ini [Unit] Description=Vulnerability-Lookup Web service After=network.target [Service] Type=forking User= Group= WorkingDirectory= Environment="VULNERABILITYLOOKUP_HOME=" Environment="PATH=/bin:/home//.local/bin:/usr/bin" ExecStart=/bin/bash -c "exec poetry run start" ExecStop=/bin/bash -c "exec poetry run stop" StandardOutput=append:/var/log/vulnerability-lookup_message.log StandardError=append:/var/log/vulnerability-lookup_error.log [Install] WantedBy=multi-user.target ``` -------------------------------- ### User management Source: https://www.vulnerability-lookup.org/documentation/_sources/command-line-interface.md Commands for creating, listing, deleting, and retrieving API keys for users. ```bash $ poetry run flask --app website.app create_user --login --email --password ``` ```bash $ poetry run flask --app website.app create_admin --login --email --password ``` ```bash $ poetry run flask --app website.app user_list ``` ```bash $ poetry run flask --app website.app user_delete --login ``` ```bash $ poetry run flask --app website.app user_get_api_key --login ``` -------------------------------- ### Tune PostgreSQL Configuration Parameters Source: https://www.vulnerability-lookup.org/documentation/_sources/performance-tuning.md Recommended settings for memory, WAL, and autovacuum to optimize database performance. ```ini # Connection / memory max_connections = 200 # keep moderate when using PgBouncer shared_buffers = 64GB # ~25% of RAM work_mem = 64MB # per query memory; adjust if heavy queries maintenance_work_mem = 4GB # WAL / checkpoints wal_buffers = 16MB checkpoint_completion_target = 0.9 max_wal_size = 4GB min_wal_size = 1GB # Autovacuum autovacuum = on autovacuum_max_workers = 10 autovacuum_naptime = 10s autovacuum_vacuum_cost_limit = 2000 # Logging log_connections = on log_disconnections = on log_min_duration_statement = 2000 # log slow queries > 2s ``` -------------------------------- ### Subscribe via FediVuln Source: https://www.vulnerability-lookup.org/documentation/_sources/streaming.md Use the FediVuln CLI tool to subscribe to a specific channel. ```bash $ FediVuln-Publish -t comment ``` -------------------------------- ### PyVulnerabilityLookup Initialization Source: https://www.vulnerability-lookup.org/user-manual/sightings Initializes the PyVulnerabilityLookup client with a base URL and an API token. ```APIDOC from pyvulnerabilitylookup import PyVulnerabilityLookup vuln_lookup = PyVulnerabilityLookup("https://vulnerability.circl.lu/", token="") ``` -------------------------------- ### Follow Service Logs Source: https://www.vulnerability-lookup.org/documentation/installation.html View the application logs in real-time using journalctl. ```bash sudo journalctl -u vulnerability-lookup-web.service -f ``` -------------------------------- ### Create Meilisearch system user Source: https://www.vulnerability-lookup.org/documentation/_sources/fulltextsearch.md Sets up a dedicated system user to run the Meilisearch service securely. ```bash useradd -d /var/lib/meilisearch -s /bin/false -m -r meilisearch chown meilisearch:meilisearch /usr/local/bin/meilisearch ``` -------------------------------- ### Upgrade Database Schema Source: https://www.vulnerability-lookup.org/2026/05/21/vulnerability-lookup-4-6-0 Run this command after updating the application to apply the new composite index on the sighting table. ```bash poetry run flask --app website.app db upgrade ```