Greenbone Vulnerability Manager  8.0.0~git
manage_sql_secinfo.h
1 /* Copyright (C) 2010-2018 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 <signal.h>
26 
27 #ifndef _GVMD_MANAGE_SQL_SECINFO_H
28 #define _GVMD_MANAGE_SQL_SECINFO_H
29 
33 #define SECINFO_SQL_RESULT_HAS_CERT_BUNDS \
34  "(SELECT EXISTS (SELECT * FROM cert_bund_cves" \
35  " WHERE cve_name IN (SELECT cve_name" \
36  " FROM nvt_cves" \
37  " WHERE oid = results.nvt)))"
38 
42 #define SECINFO_SQL_RESULT_HAS_DFN_CERTS \
43  "(SELECT EXISTS (SELECT * FROM dfn_cert_cves" \
44  " WHERE cve_name IN (SELECT cve_name" \
45  " FROM nvt_cves" \
46  " WHERE oid = results.nvt)))"
47 
51 #define CVE_INFO_ITERATOR_FILTER_COLUMNS \
52  { \
53  GET_ITERATOR_FILTER_COLUMNS, "vector", "complexity", "authentication", \
54  "confidentiality_impact", "integrity_impact", "availability_impact", \
55  "products", "cvss", "description", "severity", "published", NULL \
56  }
57 
61 #define CVE_INFO_ITERATOR_COLUMNS \
62  { \
63  GET_ITERATOR_COLUMNS_PREFIX (""), {"''", "_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  { \
77  NULL, NULL, KEYWORD_TYPE_UNKNOWN \
78  } \
79  }
80 
84 #define CPE_INFO_ITERATOR_FILTER_COLUMNS \
85  { \
86  GET_ITERATOR_FILTER_COLUMNS, "title", "status", "deprecated_by_id", \
87  "max_cvss", "cves", "nvd_id", "severity", NULL \
88  }
89 
93 #define CPE_INFO_ITERATOR_COLUMNS \
94  { \
95  GET_ITERATOR_COLUMNS_PREFIX (""), {"''", "_owner", KEYWORD_TYPE_STRING}, \
96  {"0", NULL, KEYWORD_TYPE_INTEGER}, {"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  { \
104  NULL, NULL, KEYWORD_TYPE_UNKNOWN \
105  } \
106  }
107 
111 #define OVALDEF_INFO_ITERATOR_FILTER_COLUMNS \
112  { \
113  GET_ITERATOR_FILTER_COLUMNS, "version", "deprecated", "class", "title", \
114  "description", "file", "status", "max_cvss", "cves", "severity", NULL \
115  }
116 
120 #define OVALDEF_INFO_ITERATOR_COLUMNS \
121  { \
122  GET_ITERATOR_COLUMNS_PREFIX (""), {"''", "_owner", KEYWORD_TYPE_STRING}, \
123  {"0", NULL, KEYWORD_TYPE_INTEGER}, \
124  {"version", NULL, KEYWORD_TYPE_INTEGER}, \
125  {"deprecated", NULL, KEYWORD_TYPE_INTEGER}, \
126  {"def_class", "class", KEYWORD_TYPE_STRING}, \
127  {"title", NULL, KEYWORD_TYPE_STRING}, \
128  {"description", NULL, KEYWORD_TYPE_STRING}, \
129  {"xml_file", "file", KEYWORD_TYPE_STRING}, \
130  {"status", NULL, KEYWORD_TYPE_STRING}, \
131  {"max_cvss", NULL, KEYWORD_TYPE_DOUBLE}, \
132  {"cve_refs", "cves", KEYWORD_TYPE_INTEGER}, \
133  {"max_cvss", "severity", KEYWORD_TYPE_DOUBLE}, \
134  { \
135  NULL, NULL, KEYWORD_TYPE_UNKNOWN \
136  } \
137  }
138 
142 #define CERT_BUND_ADV_INFO_ITERATOR_FILTER_COLUMNS \
143  { \
144  GET_ITERATOR_FILTER_COLUMNS, "title", "summary", "cves", "max_cvss", \
145  "severity", NULL \
146  }
147 
151 #define CERT_BUND_ADV_INFO_ITERATOR_COLUMNS \
152  { \
153  GET_ITERATOR_COLUMNS_PREFIX (""), {"''", "_owner", KEYWORD_TYPE_STRING}, \
154  {"0", NULL, KEYWORD_TYPE_INTEGER}, {"title", NULL, KEYWORD_TYPE_STRING}, \
155  {"summary", NULL, KEYWORD_TYPE_STRING}, \
156  {"cve_refs", "cves", KEYWORD_TYPE_INTEGER}, \
157  {"max_cvss", NULL, KEYWORD_TYPE_DOUBLE}, \
158  {"max_cvss", "severity", KEYWORD_TYPE_DOUBLE}, \
159  { \
160  NULL, NULL, KEYWORD_TYPE_UNKNOWN \
161  } \
162  }
163 
167 #define DFN_CERT_ADV_INFO_ITERATOR_FILTER_COLUMNS \
168  { \
169  GET_ITERATOR_FILTER_COLUMNS, "title", "summary", "cves", "max_cvss", \
170  "severity", NULL \
171  }
172 
176 #define DFN_CERT_ADV_INFO_ITERATOR_COLUMNS \
177  { \
178  GET_ITERATOR_COLUMNS_PREFIX (""), {"''", "_owner", KEYWORD_TYPE_STRING}, \
179  {"0", NULL, KEYWORD_TYPE_INTEGER}, {"title", NULL, KEYWORD_TYPE_STRING}, \
180  {"summary", NULL, KEYWORD_TYPE_STRING}, \
181  {"cve_refs", "cves", KEYWORD_TYPE_INTEGER}, \
182  {"max_cvss", NULL, KEYWORD_TYPE_DOUBLE}, \
183  {"max_cvss", "severity", KEYWORD_TYPE_DOUBLE}, \
184  { \
185  NULL, NULL, KEYWORD_TYPE_UNKNOWN \
186  } \
187  }
188 
192 #define ALL_INFO_ITERATOR_FILTER_COLUMNS \
193  { \
194  GET_ITERATOR_FILTER_COLUMNS, "type", "extra", "severity", NULL \
195  }
196 
200 #define ALL_INFO_ITERATOR_COLUMNS \
201  { \
202  {"id", NULL, KEYWORD_TYPE_INTEGER}, {"uuid", NULL, KEYWORD_TYPE_STRING}, \
203  {"name", NULL, KEYWORD_TYPE_STRING}, \
204  {"comment", NULL, KEYWORD_TYPE_STRING}, \
205  {"iso_time (created)", NULL, KEYWORD_TYPE_STRING}, \
206  {"iso_time (modified)", NULL, KEYWORD_TYPE_STRING}, \
207  {"created", NULL, KEYWORD_TYPE_INTEGER}, \
208  {"modified", NULL, KEYWORD_TYPE_INTEGER}, \
209  {"''", "_owner", KEYWORD_TYPE_STRING}, \
210  {"0", NULL, KEYWORD_TYPE_INTEGER}, {"type", NULL, KEYWORD_TYPE_STRING}, \
211  {"extra", NULL, KEYWORD_TYPE_STRING}, \
212  {"severity", NULL, KEYWORD_TYPE_DOUBLE}, \
213  { \
214  NULL, NULL, KEYWORD_TYPE_UNKNOWN \
215  } \
216  }
217 
221 #define ALL_INFO_ITERATOR_COLUMNS_ARGS(type, extra, severity) \
222  { \
223  {"id", NULL, KEYWORD_TYPE_INTEGER}, {"uuid", NULL, KEYWORD_TYPE_STRING}, \
224  {"name", NULL, KEYWORD_TYPE_STRING}, \
225  {"comment", NULL, KEYWORD_TYPE_STRING}, \
226  {"iso_time (created)", NULL, KEYWORD_TYPE_STRING}, \
227  {"iso_time (modified)", NULL, KEYWORD_TYPE_STRING}, \
228  {"created", NULL, KEYWORD_TYPE_INTEGER}, \
229  {"modified", NULL, KEYWORD_TYPE_INTEGER}, \
230  {"''", "_owner", KEYWORD_TYPE_STRING}, \
231  {"0", NULL, KEYWORD_TYPE_INTEGER}, {type, "type", KEYWORD_TYPE_STRING}, \
232  {extra, "extra", KEYWORD_TYPE_STRING}, \
233  {severity, "severity", KEYWORD_TYPE_DOUBLE}, \
234  { \
235  NULL, NULL, KEYWORD_TYPE_UNKNOWN \
236  } \
237  }
238 
242 #define ALL_INFO_UNION_COLUMNS \
243  "(SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner, 'cve' AS type," \
244  " description AS extra, cvss AS severity" \
245  " FROM cves" \
246  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
247  " 'cpe' AS type, title AS extra, max_cvss AS severity" \
248  " FROM cpes" \
249  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
250  " 'nvt' AS type, tag AS extra," \
251  " CAST (cvss_base AS float) AS severity" \
252  " FROM nvts" \
253  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
254  " 'cert_bund_adv' AS type, title AS extra," \
255  " max_cvss AS severity" \
256  " FROM cert_bund_advs" \
257  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
258  " 'dfn_cert_adv' AS type, title AS extra," \
259  " max_cvss AS severity" \
260  " FROM dfn_cert_advs" \
261  " UNION ALL SELECT " GET_ITERATOR_COLUMNS_STRING ", '' AS _owner," \
262  " 'ovaldef' AS type, title AS extra, max_cvss AS severity" \
263  " FROM ovaldefs)" \
264  " AS allinfo"
265 
269 #define ALL_INFO_UNION_COLUMNS_LIMIT \
270  "(SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
271  " CAST ('' AS text) AS _owner," \
272  " CAST ('cve' AS text) AS type," \
273  " description as extra, cvss as severity" \
274  " FROM cves" \
275  " %s%s" \
276  " %s" \
277  " %s)" \
278  " AS union_sub_1" \
279  " UNION ALL" \
280  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
281  " CAST ('' AS text) AS _owner," \
282  " CAST ('cpe' AS text) AS type, title as extra," \
283  " max_cvss as severity" \
284  " FROM cpes" \
285  " %s%s" \
286  " %s" \
287  " %s)" \
288  " AS union_sub_2" \
289  " UNION ALL" \
290  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
291  " CAST ('' AS text) AS _owner," \
292  " CAST ('nvt' AS text) AS type," \
293  " tag AS extra," \
294  " CAST (cvss_base AS float) as severity" \
295  " FROM nvts" \
296  " %s%s" \
297  " %s" \
298  " %s)" \
299  " AS union_sub_3" \
300  " UNION ALL" \
301  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
302  " CAST ('' AS text) AS _owner," \
303  " CAST ('cert_bund_adv' AS text) AS type," \
304  " title as extra," \
305  " max_cvss as severity" \
306  " FROM cert_bund_advs" \
307  " %s%s" \
308  " %s" \
309  " %s)" \
310  " AS union_sub_4" \
311  " UNION ALL" \
312  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
313  " CAST ('' AS text) AS _owner," \
314  " CAST ('dfn_cert_adv' AS text) AS type," \
315  " title as extra," \
316  " max_cvss as severity" \
317  " FROM dfn_cert_advs" \
318  " %s%s" \
319  " %s" \
320  " %s)" \
321  " AS union_sub_5" \
322  " UNION ALL" \
323  " SELECT * FROM (SELECT " GET_ITERATOR_COLUMNS_STRING "," \
324  " CAST ('' AS text) AS _owner," \
325  " CAST ('ovaldef' AS text) AS type, title as extra," \
326  " max_cvss as severity" \
327  " FROM ovaldefs" \
328  " %s%s" \
329  " %s" \
330  " %s)" \
331  " AS union_sub_6)" \
332  " AS allinfo"
333 
337 #define SECINFO_COMMIT_SIZE_DEFAULT 0
338 
339 void
340 manage_sync_scap (sigset_t *);
341 
342 void
343 manage_sync_cert (sigset_t *);
344 
345 int
347 
348 int
350 
351 int
352 get_secinfo_commit_size ();
353 
354 void
356 
357 #endif /* not _GVMD_MANAGE_SQL_SECINFO_H */
int check_cert_db_version()
Ensure CERT db is at the right version, and in the right mode.
Definition: manage_sql_secinfo.c:3803
void manage_sync_scap(sigset_t *sigmask_current)
Sync the SCAP DB.
Definition: manage_sql_secinfo.c:4404
void manage_sync_cert(sigset_t *sigmask_current)
Sync the CERT DB.
Definition: manage_sql_secinfo.c:4078
int check_scap_db_version()
Ensure SCAP db is at the right version, and in the right mode.
Definition: manage_sql_secinfo.c:4092
void set_secinfo_commit_size(int new_commit_size)
Set the SecInfo update commit size.
Definition: manage_sql_secinfo.c:4416