Greenbone Vulnerability Manager  9.0.0
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 #ifndef _GVMD_MANAGE_SQL_SECINFO_H
26 #define _GVMD_MANAGE_SQL_SECINFO_H
27 
31 #define SECINFO_SQL_RESULT_HAS_CERT_BUNDS \
32  "(SELECT EXISTS (SELECT * FROM cert_bund_cves" \
33  " WHERE cve_name IN (SELECT ref_id" \
34  " FROM vt_refs" \
35  " WHERE vt_oid = results.nvt" \
36  " AND type = 'cve')))"
37 
41 #define SECINFO_SQL_RESULT_HAS_DFN_CERTS \
42  "(SELECT EXISTS (SELECT * FROM dfn_cert_cves" \
43  " WHERE cve_name IN (SELECT ref_id" \
44  " FROM vt_refs" \
45  " WHERE vt_oid = results.nvt" \
46  " AND type = 'cve')))"
47 
51 #define CVE_INFO_ITERATOR_FILTER_COLUMNS \
52  { GET_ITERATOR_FILTER_COLUMNS, "vector", \
53  "complexity", "authentication", "confidentiality_impact", \
54  "integrity_impact", "availability_impact", "products", \
55  "cvss", "description", "severity", "published", NULL }
56 
60 #define CVE_INFO_ITERATOR_COLUMNS \
61  { \
62  GET_ITERATOR_COLUMNS_PREFIX (""), \
63  { "''", "_owner", KEYWORD_TYPE_STRING }, \
64  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
65  { "vector", NULL, KEYWORD_TYPE_STRING }, \
66  { "complexity", NULL, KEYWORD_TYPE_STRING }, \
67  { "authentication", NULL, KEYWORD_TYPE_STRING }, \
68  { "confidentiality_impact", NULL, KEYWORD_TYPE_STRING }, \
69  { "integrity_impact", NULL, KEYWORD_TYPE_STRING }, \
70  { "availability_impact", NULL, KEYWORD_TYPE_STRING }, \
71  { "products", NULL, KEYWORD_TYPE_STRING }, \
72  { "cvss", NULL, KEYWORD_TYPE_DOUBLE }, \
73  { "description", NULL, KEYWORD_TYPE_STRING }, \
74  { "cvss", "severity", KEYWORD_TYPE_DOUBLE }, \
75  { "creation_time", "published", KEYWORD_TYPE_INTEGER }, \
76  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
77  }
78 
82 #define CPE_INFO_ITERATOR_FILTER_COLUMNS \
83  { GET_ITERATOR_FILTER_COLUMNS, "title", "status", \
84  "deprecated_by_id", "max_cvss", "cves", "nvd_id", \
85  "severity", NULL }
86 
90 #define CPE_INFO_ITERATOR_COLUMNS \
91  { \
92  GET_ITERATOR_COLUMNS_PREFIX (""), \
93  { "''", "_owner", KEYWORD_TYPE_STRING }, \
94  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
95  { "title", NULL, KEYWORD_TYPE_STRING }, \
96  { "status", NULL, KEYWORD_TYPE_STRING }, \
97  { "deprecated_by_id", NULL, KEYWORD_TYPE_INTEGER }, \
98  { "max_cvss", NULL, KEYWORD_TYPE_DOUBLE }, \
99  { "cve_refs", "cves", KEYWORD_TYPE_INTEGER }, \
100  { "nvd_id", NULL, KEYWORD_TYPE_INTEGER }, \
101  { "max_cvss", "severity", KEYWORD_TYPE_DOUBLE }, \
102  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
103  }
104 
108 #define OVALDEF_INFO_ITERATOR_FILTER_COLUMNS \
109  { GET_ITERATOR_FILTER_COLUMNS, "version", "deprecated", \
110  "class", "title", "description", "file", \
111  "status", "max_cvss", "cves", "severity", NULL }
112 
116 #define OVALDEF_INFO_ITERATOR_COLUMNS \
117  { \
118  GET_ITERATOR_COLUMNS_PREFIX (""), \
119  { "''", "_owner", KEYWORD_TYPE_STRING }, \
120  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
121  { "version", NULL, KEYWORD_TYPE_INTEGER }, \
122  { "deprecated", NULL, KEYWORD_TYPE_INTEGER }, \
123  { "def_class", "class", KEYWORD_TYPE_STRING }, \
124  { "title", NULL, KEYWORD_TYPE_STRING }, \
125  { "description", NULL, KEYWORD_TYPE_STRING }, \
126  { "xml_file", "file", KEYWORD_TYPE_STRING }, \
127  { "status", NULL, KEYWORD_TYPE_STRING }, \
128  { "max_cvss", NULL, KEYWORD_TYPE_DOUBLE }, \
129  { "cve_refs", "cves", KEYWORD_TYPE_INTEGER }, \
130  { "max_cvss", "severity", KEYWORD_TYPE_DOUBLE }, \
131  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
132  }
133 
137 #define CERT_BUND_ADV_INFO_ITERATOR_FILTER_COLUMNS \
138  { GET_ITERATOR_FILTER_COLUMNS, "title", "summary", \
139  "cves", "max_cvss", "severity", NULL }
140 
144 #define CERT_BUND_ADV_INFO_ITERATOR_COLUMNS \
145  { \
146  GET_ITERATOR_COLUMNS_PREFIX (""), \
147  { "''", "_owner", KEYWORD_TYPE_STRING }, \
148  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
149  { "title", NULL, KEYWORD_TYPE_STRING }, \
150  { "summary", NULL, KEYWORD_TYPE_STRING }, \
151  { "cve_refs", "cves", KEYWORD_TYPE_INTEGER }, \
152  { "max_cvss", NULL, KEYWORD_TYPE_DOUBLE }, \
153  { "max_cvss", "severity", KEYWORD_TYPE_DOUBLE }, \
154  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
155  }
156 
160 #define DFN_CERT_ADV_INFO_ITERATOR_FILTER_COLUMNS \
161  { GET_ITERATOR_FILTER_COLUMNS, "title", "summary", \
162  "cves", "max_cvss", "severity", NULL }
163 
167 #define DFN_CERT_ADV_INFO_ITERATOR_COLUMNS \
168  { \
169  GET_ITERATOR_COLUMNS_PREFIX (""), \
170  { "''", "_owner", KEYWORD_TYPE_STRING }, \
171  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
172  { "title", NULL, KEYWORD_TYPE_STRING }, \
173  { "summary", NULL, KEYWORD_TYPE_STRING }, \
174  { "cve_refs", "cves", KEYWORD_TYPE_INTEGER }, \
175  { "max_cvss", NULL, KEYWORD_TYPE_DOUBLE }, \
176  { "max_cvss", "severity", KEYWORD_TYPE_DOUBLE }, \
177  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
178  }
179 
183 #define ALL_INFO_ITERATOR_FILTER_COLUMNS \
184  { GET_ITERATOR_FILTER_COLUMNS, "type", "extra", "severity", NULL }
185 
189 #define ALL_INFO_ITERATOR_COLUMNS \
190  { \
191  { "id", NULL, KEYWORD_TYPE_INTEGER }, \
192  { "uuid", NULL, KEYWORD_TYPE_STRING }, \
193  { "name", NULL, KEYWORD_TYPE_STRING }, \
194  { "comment", NULL, KEYWORD_TYPE_STRING }, \
195  { "iso_time (created)", NULL, KEYWORD_TYPE_STRING }, \
196  { "iso_time (modified)", NULL, KEYWORD_TYPE_STRING }, \
197  { "created", NULL, KEYWORD_TYPE_INTEGER }, \
198  { "modified", NULL, KEYWORD_TYPE_INTEGER }, \
199  { "''", "_owner", KEYWORD_TYPE_STRING }, \
200  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
201  { "type", NULL, KEYWORD_TYPE_STRING }, \
202  { "extra", NULL, KEYWORD_TYPE_STRING }, \
203  { "severity", NULL, KEYWORD_TYPE_DOUBLE }, \
204  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
205  }
206 
210 #define ALL_INFO_ITERATOR_COLUMNS_ARGS(type, extra, severity) \
211  { \
212  { "id", NULL, KEYWORD_TYPE_INTEGER }, \
213  { "uuid", NULL, KEYWORD_TYPE_STRING }, \
214  { "name", NULL, KEYWORD_TYPE_STRING }, \
215  { "comment", NULL, KEYWORD_TYPE_STRING }, \
216  { "iso_time (created)", NULL, KEYWORD_TYPE_STRING }, \
217  { "iso_time (modified)", NULL, KEYWORD_TYPE_STRING }, \
218  { "created", NULL, KEYWORD_TYPE_INTEGER }, \
219  { "modified", NULL, KEYWORD_TYPE_INTEGER }, \
220  { "''", "_owner", KEYWORD_TYPE_STRING }, \
221  { "0", NULL, KEYWORD_TYPE_INTEGER }, \
222  { type, "type", KEYWORD_TYPE_STRING }, \
223  { extra, "extra", KEYWORD_TYPE_STRING }, \
224  { severity, "severity", KEYWORD_TYPE_DOUBLE }, \
225  { NULL, NULL, KEYWORD_TYPE_UNKNOWN } \
226  }
227 
231 #define ALL_INFO_UNION_COLUMNS \
232  "(SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner, 'cve' AS type," \
233  " description AS extra, cvss AS severity" \
234  " FROM cves" \
235  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
236  " 'cpe' AS type, title AS extra, max_cvss AS severity" \
237  " FROM cpes" \
238  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
239  " 'nvt' AS type, tag AS extra," \
240  " CAST (cvss_base AS float) AS severity" \
241  " FROM nvts" \
242  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
243  " 'cert_bund_adv' AS type, title AS extra," \
244  " max_cvss AS severity" \
245  " FROM cert_bund_advs" \
246  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
247  " 'dfn_cert_adv' AS type, title AS extra," \
248  " max_cvss AS severity" \
249  " FROM dfn_cert_advs" \
250  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
251  " 'ovaldef' AS type, title AS extra, max_cvss AS severity" \
252  " FROM ovaldefs)" \
253  " AS allinfo"
254 
258 #define ALL_INFO_UNION_COLUMNS_LIMIT \
259  "(SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
260  " CAST ('' AS text) AS _owner," \
261  " CAST ('cve' AS text) AS type," \
262  " description as extra, cvss as severity" \
263  " FROM cves" \
264  " %s%s" \
265  " %s" \
266  " %s)" \
267  " AS union_sub_1" \
268  " UNION ALL" \
269  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
270  " CAST ('' AS text) AS _owner," \
271  " CAST ('cpe' AS text) AS type, title as extra," \
272  " max_cvss as severity" \
273  " FROM cpes" \
274  " %s%s" \
275  " %s" \
276  " %s)" \
277  " AS union_sub_2" \
278  " UNION ALL" \
279  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
280  " CAST ('' AS text) AS _owner," \
281  " CAST ('nvt' AS text) AS type," \
282  " tag AS extra," \
283  " CAST (cvss_base AS float) as severity" \
284  " FROM nvts" \
285  " %s%s" \
286  " %s" \
287  " %s)" \
288  " AS union_sub_3" \
289  " UNION ALL" \
290  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
291  " CAST ('' AS text) AS _owner," \
292  " CAST ('cert_bund_adv' AS text) AS type," \
293  " title as extra," \
294  " max_cvss as severity" \
295  " FROM cert_bund_advs" \
296  " %s%s" \
297  " %s" \
298  " %s)" \
299  " AS union_sub_4" \
300  " UNION ALL" \
301  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
302  " CAST ('' AS text) AS _owner," \
303  " CAST ('dfn_cert_adv' AS text) AS type," \
304  " title as extra," \
305  " max_cvss as severity" \
306  " FROM dfn_cert_advs" \
307  " %s%s" \
308  " %s" \
309  " %s)" \
310  " AS union_sub_5" \
311  " UNION ALL" \
312  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
313  " CAST ('' AS text) AS _owner," \
314  " CAST ('ovaldef' AS text) AS type, title as extra," \
315  " max_cvss as severity" \
316  " FROM ovaldefs" \
317  " %s%s" \
318  " %s" \
319  " %s)" \
320  " AS union_sub_6)" \
321  " AS allinfo"
322 
326 #define SECINFO_COMMIT_SIZE_DEFAULT 0
327 
328 void
329 manage_sync_scap (sigset_t *);
330 
331 void
332 manage_sync_cert (sigset_t *);
333 
334 int
336 
337 int
339 
340 int
341 get_secinfo_commit_size ();
342 
343 void
345 
346 #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:4433
manage_sync_scap
void manage_sync_scap(sigset_t *sigmask_current)
Sync the SCAP DB.
Definition: manage_sql_secinfo.c:4419
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:4100
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:3804
manage_sync_cert
void manage_sync_cert(sigset_t *sigmask_current)
Sync the CERT DB.
Definition: manage_sql_secinfo.c:4083