0
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
1 {#
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
2 # Description:
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
3 # Template macros for generation of NASL documents
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
4 #
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
5 # Authors:
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
6 # BenoƮt Allard <benoit.allard@greenbone.net>
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
7 #
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
8 # Copyright:
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
9 # Copyright (C) 2014 Greenbone Networks GmbH
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
10 #
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
11 # This program is free software; you can redistribute it and/or
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
12 # modify it under the terms of the GNU General Public License
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
13 # as published by the Free Software Foundation; either version 2
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
14 # of the License, or (at your option) any later version.
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
15 #
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
16 # This program is distributed in the hope that it will be useful,
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
19 # GNU General Public License for more details.
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
20 #
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
21 # You should have received a copy of the GNU General Public License
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
22 # along with this program; if not, write to the Free Software
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
23 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
24 -#}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
25
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
26 {% macro isrpmvuln(plist, ptree) %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
27 {%- set done = [] %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
28 {% for prod in plist %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
29 {%- set os, package = ptree.decomposeProduct(prod._productid) %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
30 {%- if os is not none %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
31 {%- set rls = os._name | release_map %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
32 {%- set rpm = package._name | for_rpmvuln %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
33 {%- if rls != 'UNKNOWN' %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
34 {%- if (rls, rpm) not in done %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
35 # {{ package._name }} on {{ os._name }}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
36 if ((res = isrpmvuln(pkg:"{{ package._name | package_name }}", rpm:"{{ rpm }}", rls:"{{ rls }}")) != NULL)
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
37 {
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
38 security_message(data:res);
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
39 exit(0);
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
40 }
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
41 {{- done.append((rls, rpm)) or '' }}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
42 {%- endif %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
43 {%- else %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
44 # Unknown release: {{ os._name }}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
45 {%- endif %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
46 {%- endif %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
47 {%- endfor %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
48 {% endmacro %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
49
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
50 {% macro notes(cvrf, name) %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
51 {%- for note in cvrf._notes %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
52 {%- if note._type == name or note._title == name %}{{ note._note.replace('"', "'") }}{% endif %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
53 {%- endfor %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
54 {%- for vulnerability in cvrf._vulnerabilities %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
55 {%- for note in vulnerability._notes %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
56 {%- if note._type == name or note._title == name %}{{ note._note.replace('"', "'") }}{% endif %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
57 {%- endfor %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
58 {%- endfor %}
|
Benoît Allard <benoit.allard@greenbone.net>
parents:
diff
changeset
|
59 {% endmacro %}
|