Greenbone Vulnerability Manager  9.0.1
manage_sql_secinfo.h
1 /* Copyright (C) 2010-2019 Greenbone Networks GmbH
2  *
3  * SPDX-License-Identifier: GPL-2.0-or-later
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 /*
21  * @file manage_sql_secinfo.h
22  * @brief Manager Manage library: SQL backend headers.
23  */
24 
25 #include <glib.h>
26 #ifndef _GVMD_MANAGE_SQL_SECINFO_H
27 #define _GVMD_MANAGE_SQL_SECINFO_H
28 
32 #define SECINFO_SQL_RESULT_HAS_CERT_BUNDS \
33  "(SELECT EXISTS (SELECT * FROM cert_bund_cves" \
34  " WHERE cve_name IN (SELECT ref_id" \
35  " FROM vt_refs" \
36  " WHERE vt_oid = results.nvt" \
37  " AND type = 'cve')))"
38 
42 #define SECINFO_SQL_RESULT_HAS_DFN_CERTS \
43  "(SELECT EXISTS (SELECT * FROM dfn_cert_cves" \
44  " WHERE cve_name IN (SELECT ref_id" \
45  " FROM vt_refs" \
46  " WHERE vt_oid = results.nvt" \
47  " AND type = 'cve')))"
48 
52 #define CVE_INFO_ITERATOR_FILTER_COLUMNS \
53  { GET_ITERATOR_FILTER_COLUMNS, "vector", \
54  "complexity", "authentication", "confidentiality_impact", \
55  "integrity_impact", "availability_impact", "products", \
56  "cvss", "description", "severity", "published", NULL }
57 
61 #define CVE_INFO_ITERATOR_COLUMNS \
62  { \
63  GET_ITERATOR_COLUMNS_PREFIX (""), \
64  { "''", "_owner", KEYWORD_TYPE_STRING }, \
65  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
66  { "vector", NULL, KEYWORD_TYPE_STRING }, \
67  { "complexity", NULL, KEYWORD_TYPE_STRING }, \
68  { "authentication", NULL, KEYWORD_TYPE_STRING }, \
69  { "confidentiality_impact", NULL, KEYWORD_TYPE_STRING }, \
70  { "integrity_impact", NULL, KEYWORD_TYPE_STRING }, \
71  { "availability_impact", NULL, KEYWORD_TYPE_STRING }, \
72  { "products", NULL, KEYWORD_TYPE_STRING }, \
73  { "cvss", NULL, KEYWORD_TYPE_DOUBLE }, \
74  { "description", NULL, KEYWORD_TYPE_STRING }, \
75  { "cvss", "severity", KEYWORD_TYPE_DOUBLE }, \
76  { "creation_time", "published", KEYWORD_TYPE_INTEGER }, \
77  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
78  }
79 
83 #define CPE_INFO_ITERATOR_FILTER_COLUMNS \
84  { GET_ITERATOR_FILTER_COLUMNS, "title", "status", \
85  "deprecated_by_id", "max_cvss", "cves", "nvd_id", \
86  "severity", NULL }
87 
91 #define CPE_INFO_ITERATOR_COLUMNS \
92  { \
93  GET_ITERATOR_COLUMNS_PREFIX (""), \
94  { "''", "_owner", KEYWORD_TYPE_STRING }, \
95  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
96  { "title", NULL, KEYWORD_TYPE_STRING }, \
97  { "status", NULL, KEYWORD_TYPE_STRING }, \
98  { "deprecated_by_id", NULL, KEYWORD_TYPE_INTEGER }, \
99  { "max_cvss", NULL, KEYWORD_TYPE_DOUBLE }, \
100  { "cve_refs", "cves", KEYWORD_TYPE_INTEGER }, \
101  { "nvd_id", NULL, KEYWORD_TYPE_INTEGER }, \
102  { "max_cvss", "severity", KEYWORD_TYPE_DOUBLE }, \
103  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
104  }
105 
109 #define OVALDEF_INFO_ITERATOR_FILTER_COLUMNS \
110  { GET_ITERATOR_FILTER_COLUMNS, "version", "deprecated", \
111  "class", "title", "description", "file", \
112  "status", "max_cvss", "cves", "severity", NULL }
113 
117 #define OVALDEF_INFO_ITERATOR_COLUMNS \
118  { \
119  GET_ITERATOR_COLUMNS_PREFIX (""), \
120  { "''", "_owner", KEYWORD_TYPE_STRING }, \
121  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
122  { "version", NULL, KEYWORD_TYPE_INTEGER }, \
123  { "deprecated", NULL, KEYWORD_TYPE_INTEGER }, \
124  { "def_class", "class", KEYWORD_TYPE_STRING }, \
125  { "title", NULL, KEYWORD_TYPE_STRING }, \
126  { "description", NULL, KEYWORD_TYPE_STRING }, \
127  { "xml_file", "file", KEYWORD_TYPE_STRING }, \
128  { "status", NULL, KEYWORD_TYPE_STRING }, \
129  { "max_cvss", NULL, KEYWORD_TYPE_DOUBLE }, \
130  { "cve_refs", "cves", KEYWORD_TYPE_INTEGER }, \
131  { "max_cvss", "severity", KEYWORD_TYPE_DOUBLE }, \
132  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
133  }
134 
138 #define CERT_BUND_ADV_INFO_ITERATOR_FILTER_COLUMNS \
139  { GET_ITERATOR_FILTER_COLUMNS, "title", "summary", \
140  "cves", "max_cvss", "severity", NULL }
141 
145 #define CERT_BUND_ADV_INFO_ITERATOR_COLUMNS \
146  { \
147  GET_ITERATOR_COLUMNS_PREFIX (""), \
148  { "''", "_owner", KEYWORD_TYPE_STRING }, \
149  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
150  { "title", NULL, KEYWORD_TYPE_STRING }, \
151  { "summary", NULL, KEYWORD_TYPE_STRING }, \
152  { "cve_refs", "cves", KEYWORD_TYPE_INTEGER }, \
153  { "max_cvss", NULL, KEYWORD_TYPE_DOUBLE }, \
154  { "max_cvss", "severity", KEYWORD_TYPE_DOUBLE }, \
155  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
156  }
157 
161 #define DFN_CERT_ADV_INFO_ITERATOR_FILTER_COLUMNS \
162  { GET_ITERATOR_FILTER_COLUMNS, "title", "summary", \
163  "cves", "max_cvss", "severity", NULL }
164 
168 #define DFN_CERT_ADV_INFO_ITERATOR_COLUMNS \
169  { \
170  GET_ITERATOR_COLUMNS_PREFIX (""), \
171  { "''", "_owner", KEYWORD_TYPE_STRING }, \
172  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
173  { "title", NULL, KEYWORD_TYPE_STRING }, \
174  { "summary", NULL, KEYWORD_TYPE_STRING }, \
175  { "cve_refs", "cves", KEYWORD_TYPE_INTEGER }, \
176  { "max_cvss", NULL, KEYWORD_TYPE_DOUBLE }, \
177  { "max_cvss", "severity", KEYWORD_TYPE_DOUBLE }, \
178  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
179  }
180 
184 #define ALL_INFO_ITERATOR_FILTER_COLUMNS \
185  { GET_ITERATOR_FILTER_COLUMNS, "type", "extra", "severity", NULL }
186 
190 #define ALL_INFO_ITERATOR_COLUMNS \
191  { \
192  { "id", NULL, KEYWORD_TYPE_INTEGER }, \
193  { "uuid", NULL, KEYWORD_TYPE_STRING }, \
194  { "name", NULL, KEYWORD_TYPE_STRING }, \
195  { "comment", NULL, KEYWORD_TYPE_STRING }, \
196  { "iso_time (created)", NULL, KEYWORD_TYPE_STRING }, \
197  { "iso_time (modified)", NULL, KEYWORD_TYPE_STRING }, \
198  { "created", NULL, KEYWORD_TYPE_INTEGER }, \
199  { "modified", NULL, KEYWORD_TYPE_INTEGER }, \
200  { "''", "_owner", KEYWORD_TYPE_STRING }, \
201  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
202  { "type", NULL, KEYWORD_TYPE_STRING }, \
203  { "extra", NULL, KEYWORD_TYPE_STRING }, \
204  { "severity", NULL, KEYWORD_TYPE_DOUBLE }, \
205  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
206  }
207 
211 #define ALL_INFO_ITERATOR_COLUMNS_ARGS(type, extra, severity) \
212  { \
213  { "id", NULL, KEYWORD_TYPE_INTEGER }, \
214  { "uuid", NULL, KEYWORD_TYPE_STRING }, \
215  { "name", NULL, KEYWORD_TYPE_STRING }, \
216  { "comment", NULL, KEYWORD_TYPE_STRING }, \
217  { "iso_time (created)", NULL, KEYWORD_TYPE_STRING }, \
218  { "iso_time (modified)", NULL, KEYWORD_TYPE_STRING }, \
219  { "created", NULL, KEYWORD_TYPE_INTEGER }, \
220  { "modified", NULL, KEYWORD_TYPE_INTEGER }, \
221  { "''", "_owner", KEYWORD_TYPE_STRING }, \
222  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
223  { type, "type", KEYWORD_TYPE_STRING }, \
224  { extra, "extra", KEYWORD_TYPE_STRING }, \
225  { severity, "severity", KEYWORD_TYPE_DOUBLE }, \
226  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
227  }
228 
232 #define ALL_INFO_UNION_COLUMNS \
233  "(SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner, 'cve' AS type," \
234  " description AS extra, cvss AS severity" \
235  " FROM cves" \
236  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
237  " 'cpe' AS type, title AS extra, max_cvss AS severity" \
238  " FROM cpes" \
239  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
240  " 'nvt' AS type, tag AS extra," \
241  " CAST (cvss_base AS float) AS severity" \
242  " FROM nvts" \
243  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
244  " 'cert_bund_adv' AS type, title AS extra," \
245  " max_cvss AS severity" \
246  " FROM cert_bund_advs" \
247  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
248  " 'dfn_cert_adv' AS type, title AS extra," \
249  " max_cvss AS severity" \
250  " FROM dfn_cert_advs" \
251  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
252  " 'ovaldef' AS type, title AS extra, max_cvss AS severity" \
253  " FROM ovaldefs)" \
254  " AS allinfo"
255 
259 #define ALL_INFO_UNION_COLUMNS_LIMIT \
260  "(SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
261  " CAST ('' AS text) AS _owner," \
262  " CAST ('cve' AS text) AS type," \
263  " description as extra, cvss as severity" \
264  " FROM cves" \
265  " %s%s" \
266  " %s" \
267  " %s)" \
268  " AS union_sub_1" \
269  " UNION ALL" \
270  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
271  " CAST ('' AS text) AS _owner," \
272  " CAST ('cpe' AS text) AS type, title as extra," \
273  " max_cvss as severity" \
274  " FROM cpes" \
275  " %s%s" \
276  " %s" \
277  " %s)" \
278  " AS union_sub_2" \
279  " UNION ALL" \
280  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
281  " CAST ('' AS text) AS _owner," \
282  " CAST ('nvt' AS text) AS type," \
283  " tag AS extra," \
284  " CAST (cvss_base AS float) as severity" \
285  " FROM nvts" \
286  " %s%s" \
287  " %s" \
288  " %s)" \
289  " AS union_sub_3" \
290  " UNION ALL" \
291  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
292  " CAST ('' AS text) AS _owner," \
293  " CAST ('cert_bund_adv' AS text) AS type," \
294  " title as extra," \
295  " max_cvss as severity" \
296  " FROM cert_bund_advs" \
297  " %s%s" \
298  " %s" \
299  " %s)" \
300  " AS union_sub_4" \
301  " UNION ALL" \
302  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
303  " CAST ('' AS text) AS _owner," \
304  " CAST ('dfn_cert_adv' AS text) AS type," \
305  " title as extra," \
306  " max_cvss as severity" \
307  " FROM dfn_cert_advs" \
308  " %s%s" \
309  " %s" \
310  " %s)" \
311  " AS union_sub_5" \
312  " UNION ALL" \
313  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
314  " CAST ('' AS text) AS _owner," \
315  " CAST ('ovaldef' AS text) AS type, title as extra," \
316  " max_cvss as severity" \
317  " FROM ovaldefs" \
318  " %s%s" \
319  " %s" \
320  " %s)" \
321  " AS union_sub_6)" \
322  " AS allinfo"
323 
327 #define SECINFO_COMMIT_SIZE_DEFAULT 0
328 
329 void
330 manage_sync_scap (sigset_t *);
331 
332 int
333 manage_rebuild_scap (GSList *, const gchar *, const char *);
334 
335 void
336 manage_sync_cert (sigset_t *);
337 
338 int
340 
341 int
343 
344 int
345 get_secinfo_commit_size ();
346 
347 void
349 
350 #endif /* not _GVMD_MANAGE_SQL_SECINFO_H */
set_secinfo_commit_size
void set_secinfo_commit_size(int new_commit_size)
Set the SecInfo update commit size.
Definition: manage_sql_secinfo.c:5306
manage_sync_scap
void manage_sync_scap(sigset_t *sigmask_current)
Sync the SCAP DB.
Definition: manage_sql_secinfo.c:5182
manage_rebuild_scap
int manage_rebuild_scap(GSList *log_config, const gchar *database, const char *type)
Rebuild part of the SCAP DB.
Definition: manage_sql_secinfo.c:5248
check_scap_db_version
int check_scap_db_version()
Ensure SCAP db is at the right version, and in the right mode.
Definition: manage_sql_secinfo.c:4805
check_cert_db_version
int check_cert_db_version()
Ensure CERT db is at the right version, and in the right mode.
Definition: manage_sql_secinfo.c:4509
manage_sync_cert
void manage_sync_cert(sigset_t *sigmask_current)
Sync the CERT DB.
Definition: manage_sql_secinfo.c:4788