vulndb/schema.sql (63 lines of code) (raw):
-- Copyright (c) Facebook, Inc. and its affiliates.
--
-- Licensed under the Apache License, Version 2.0 (the "License");
-- you may not use this file except in compliance with the License.
-- You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
CREATE DATABASE IF NOT EXISTS vulndb;
USE vulndb;
DROP TABLE IF EXISTS
`snooze`,
`custom_data`,
`vendor_data`,
`vendor`
;
CREATE TABLE `vendor` (
`version` INT NOT NULL AUTO_INCREMENT COMMENT 'ID of the dataset',
`ts` TIMESTAMP NOT NULL COMMENT 'Time of the dataset import',
`ready` BOOL NOT NULL COMMENT 'Indicates the dataset is ready to use',
`owner` VARCHAR(64) NOT NULL COMMENT 'Point of contact for dataset',
`provider` VARCHAR(64) NOT NULL COMMENT 'Short name of dataset provider',
PRIMARY KEY (`version`),
KEY (`provider`)
)
ENGINE InnoDB
DEFAULT CHARACTER SET utf8mb4
COMMENT 'Vendors providing vulnerability datasets'
;
CREATE TABLE `vendor_data` (
`version` INT NOT NULL COMMENT 'ID of the vendor dataset',
`cve_id` VARCHAR(128) NOT NULL COMMENT 'Common Vulnerability and Exposure (CVE) ID',
`published` TIMESTAMP NOT NULL COMMENT 'Timestamp of vulnerability publication' DEFAULT CURRENT_TIMESTAMP,
`modified` TIMESTAMP NOT NULL COMMENT 'Timestamp of vulnerability last modification' DEFAULT CURRENT_TIMESTAMP,
`base_score` FLOAT(3,1) NOT NULL COMMENT 'Base score from CVSS 3.0 or 2.0 fallback',
`summary` TEXT NOT NULL COMMENT 'Description of the vulnerability',
`cve_json` MEDIUMBLOB NOT NULL COMMENT 'JSON record containing raw CVE data',
PRIMARY KEY (`version`, `cve_id`)
)
ENGINE InnoDB
DEFAULT CHARACTER SET utf8mb4
COMMENT 'Vulnerability data from vendors'
;
CREATE TABLE `custom_data` (
`owner` VARCHAR(64) NOT NULL COMMENT 'Point of contact for dataset',
`provider` VARCHAR(64) NOT NULL COMMENT 'Short name of data provider',
`cve_id` VARCHAR(128) NOT NULL COMMENT 'Common Vulnerability and Exposure ID',
`published` TIMESTAMP NOT NULL COMMENT 'Timestamp of vulnerability publication' DEFAULT CURRENT_TIMESTAMP,
`modified` TIMESTAMP NOT NULL COMMENT 'Timestamp of customized last modification' DEFAULT CURRENT_TIMESTAMP,
`base_score` FLOAT(3,1) NOT NULL COMMENT 'Base score from CVSS 3.0 or 2.0 fallback',
`summary` TEXT NOT NULL COMMENT 'Description of the vulnerability',
`cve_json` MEDIUMBLOB NOT NULL COMMENT 'JSON record containing raw CVE data',
PRIMARY KEY (`cve_id`)
)
ENGINE InnoDB
DEFAULT CHARACTER SET utf8mb4
COMMENT 'Custom vulnerability data including overrides'
;
CREATE TABLE `snooze` (
`owner` VARCHAR(64) NOT NULL COMMENT 'Point of contact for snooze',
`collector` varchar(64) NOT NULL COMMENT 'Unique name of the data collector',
`provider` VARCHAR(32) NOT NULL COMMENT 'Short name of data provider',
`cve_id` VARCHAR(128) NOT NULL COMMENT 'Common Vulnerability and Exposure ID',
`deadline` TIMESTAMP NULL COMMENT 'Timestamp of snooze expiration' DEFAULT CURRENT_TIMESTAMP,
`metadata` BLOB NULL COMMENT 'Opaque metadata for snooze management',
PRIMARY KEY (`provider`, `cve_id`)
)
ENGINE InnoDB
DEFAULT CHARACTER SET utf8mb4
COMMENT 'Vulnerability records to ignore for a period of time'
;