You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
End-to-end CVE history support and hardens loading/startup
- Added end-to-end cvehist support: DB table/migration, models, loader, CLI search, and /api/search/cvehist.
- Extended search filters for CVE history: CVE ID, change dates, change-event, and change-type.
- Hardened loading: upserts for CVE/CPE/history, timeouts, resume support, and cleaner EPSS sync/error handling.
- Improved startup: DB schema migration now runs automatically before the web app starts.
- Updated config/docs for the CVE history API and new load/search commands.
This fetches changes since the last successful update (for CVE/CPE), with an upper limit of `fetch.max.days.period` (default 120 days) enforced by the loader.
160
+
This fetches changes since the last successful update (for CVE/CVE history/CPE), with an upper limit of `fetch.max.days.period` (default 120 days) enforced by the loader.
161
161
162
162
If there is a need to repopulate the DB for the CWE/CAPEC info, then `--full` and `--drop` options are available for the load command. `--full` ignores the fact the data is already present and `--drop` drops existing data before loading. When using `--data epss` in combination with `--epss-now`, the loader fetches EPSS data for the current date; otherwise it defaults to the previous day.
163
163
@@ -195,6 +195,14 @@ Additional filters are available for CVE search:
195
195
--last-mod-start-date # retrieve only those CVEs that are last modified after the start date
196
196
--last-mod-end-date # retrieve only those CVEs that are last modified before the end date
197
197
```
198
+
199
+
- search for the data: **get CVE history rows for a CVE or change pattern**
Above will return the matching CVE history change records. `cvehist` supports filtering by CVE ID, change date range, `--change-event`, and `--change-type`.
205
+
198
206
- search for the data: **get the valid list of CPE names for a query on part/vendor/product/version etc**.
199
207
200
208
```
@@ -216,6 +224,7 @@ The following endpoints are exposed through HTTP requests
Copy file name to clipboardExpand all lines: src/common/models/models.py
+6-2Lines changed: 6 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -75,6 +75,8 @@ class SearchInfoType(str, Enum):
75
75
cpe="cpe"
76
76
capec="capec"
77
77
status="status"
78
+
cvehist="cvehist"
79
+
78
80
79
81
80
82
classCveSeverityV2(str, Enum):
@@ -129,6 +131,8 @@ class SearchOptions(BaseModel):
129
131
lastModEndDate: Optional[date] =Field(default=None, description="Last modified end date", alias="last-mod-end-date")
130
132
pubStartDate: Optional[date] =Field(default=None, description="CVE Published start date", alias="pub-start-date")
131
133
pubEndDate: Optional[date] =Field(default=None, description="CVE Published start date", alias="pub-end-date")
134
+
changeEvent: Optional[str] =Field(default=None, description="Regexp to filter CVE history by change event name (e.g. 'CVE Modified', 'Initial Analysis')", cli=('--change-event',),alias="change-event")
135
+
changeType: Optional[str] =Field(default=None, description="Regexp to filter CVE history by change detail type (e.g. 'Reference', 'CVSS V3.1')", cli=('--change-type',), alias="change-type")
132
136
vulnerable: Optional[bool] =Field(default=True, description="CVE found by the CPEs that are marked as vulnerable", alias="vulnerable")
133
137
pageSize: Optional[int] =Field(description="Number of results per page", default=100, alias="page-size", ge=10, le=3000)
0 commit comments