Lucene search

K
nessusThis script is Copyright (C) 2024 and is owned by Tenable, Inc. or an Affiliate thereof.REDHAT_UNPATCHED-NASM-RHEL7.NASL
HistoryMay 11, 2024 - 12:00 a.m.

RHEL 7 : nasm (Unpatched Vulnerability)

2024-05-1100:00:00
This script is Copyright (C) 2024 and is owned by Tenable, Inc. or an Affiliate thereof.
www.tenable.com
1
rhel 7 host
unpatched vulnerabilities
nasm package
denial of service attacks
remote code execution
use-after-free
heap buffer overflow
illegal address access
heap over-read

8.2 High

AI Score

Confidence

High

The remote Redhat Enterprise Linux 7 host has one or more packages installed that are affected by multiple vulnerabilities that have been acknowledged by the vendor but will not be patched.

  • nasm: use-after-free in paste_tokens in asm/preproc.c (CVE-2019-8343)

  • nasm: heap buffer overflow in expand_mmacro() asm/preproc.c (CVE-2023-31722)

  • In Netwide Assembler (NASM) 2.14rc0, there are multiple heap use after free vulnerabilities in the tool nasm. The related heap is allocated in the token() function and freed in the detoken() function (called by pp_getline()) - it is used again at multiple positions later that could cause multiple damages. For example, it causes a corrupted double-linked list in detoken(), a double free or corruption in delete_Token(), and an out-of-bounds write in detoken(). It has a high possibility to lead to a remote code execution attack. (CVE-2017-10686)

  • In Netwide Assembler (NASM) 2.14rc0, preproc.c allows remote attackers to cause a denial of service (heap- based buffer overflow and application crash) or possibly have unspecified other impact via a crafted file.
    (CVE-2017-11111)

  • In Netwide Assembler (NASM) 2.14rc0, there is an illegal address access in the function paste_tokens() in preproc.c, aka a NULL pointer dereference. It will lead to remote denial of service. (CVE-2017-14228)

  • In Netwide Assembler (NASM) 2.14rc0, there is a SEGV on unknown address that will cause a remote denial of service attack, because asm/preproc.c mishandles macro calls that have the wrong number of arguments.
    (CVE-2017-17810)

  • In Netwide Assembler (NASM) 2.14rc0, there is a heap-based buffer overflow that will cause a remote denial of service attack, related to a strcpy in paste_tokens in asm/preproc.c, a similar issue to CVE-2017-11111. (CVE-2017-17811)

  • In Netwide Assembler (NASM) 2.14rc0, there is a heap-based buffer over-read in the function detoken() in asm/preproc.c that will cause a remote denial of service attack. (CVE-2017-17812)

  • In Netwide Assembler (NASM) 2.14rc0, there is a use-after-free in the pp_list_one_macro function in asm/preproc.c that will cause a remote denial of service attack, related to mishandling of line-syntax errors. (CVE-2017-17813)

  • In Netwide Assembler (NASM) 2.14rc0, there is a use-after-free in do_directive in asm/preproc.c that will cause a remote denial of service attack. (CVE-2017-17814)

  • In Netwide Assembler (NASM) 2.14rc0, there is an illegal address access in is_mmacro() in asm/preproc.c that will cause a remote denial of service attack, because of a missing check for the relationship between minimum and maximum parameter counts. (CVE-2017-17815)

  • In Netwide Assembler (NASM) 2.14rc0, there is a use-after-free in pp_getline in asm/preproc.c that will cause a remote denial of service attack. (CVE-2017-17816)

  • In Netwide Assembler (NASM) 2.14rc0, there is a use-after-free in pp_verror in asm/preproc.c that will cause a remote denial of service attack. (CVE-2017-17817)

  • In Netwide Assembler (NASM) 2.14rc0, there is a heap-based buffer over-read that will cause a remote denial of service attack, related to a while loop in paste_tokens in asm/preproc.c. (CVE-2017-17818)

  • In Netwide Assembler (NASM) 2.14rc0, there is an illegal address access in the function find_cc() in asm/preproc.c that will cause a remote denial of service attack, because pointers associated with skip_white_ calls are not validated. (CVE-2017-17819)

  • In Netwide Assembler (NASM) 2.14rc0, there is a use-after-free in pp_list_one_macro in asm/preproc.c that will lead to a remote denial of service attack, related to mishandling of operand-type errors.
    (CVE-2017-17820)

  • NASM nasm-2.13.03 nasm- 2.14rc15 version 2.14rc15 and earlier contains a memory corruption (crashed) of nasm when handling a crafted file due to function assemble_file(inname, depend_ptr) at asm/nasm.c:482.
    vulnerability in function assemble_file(inname, depend_ptr) at asm/nasm.c:482. that can result in aborting/crash nasm program. This attack appear to be exploitable via a specially crafted asm file…
    (CVE-2018-1000667)

  • nasm version 2.14.01rc5, 2.15 contains a Buffer Overflow vulnerability in asm/stdscan.c:130 that can result in Stack-overflow caused by triggering endless macro generation, crash the program. This attack appear to be exploitable via a crafted nasm input file. (CVE-2018-1000886)

  • Netwide Assembler (NASM) 2.14rc0 has a division-by-zero vulnerability in the expr5 function in asm/eval.c via a malformed input file. (CVE-2018-10016)

  • Netwide Assembler (NASM) 2.14rc0 has an endless while loop in the assemble_file function of asm/nasm.c because of a globallineno integer overflow. (CVE-2018-10316)

  • Netwide Assembler (NASM) 2.14rc15 has a buffer over-read in x86/regflags.c. (CVE-2018-16382)

  • Netwide Assembler (NASM) through 2.14rc16 has memory leaks that may lead to DoS, related to nasm_malloc in nasmlib/malloc.c. (CVE-2018-19213)

  • Netwide Assembler (NASM) 2.14rc15 has a heap-based buffer over-read in expand_mmac_params in asm/preproc.c for insufficient input. (CVE-2018-19214)

  • Netwide Assembler (NASM) 2.14rc16 has a heap-based buffer over-read in expand_mmac_params in asm/preproc.c for the special cases of the % and $ and ! characters. (CVE-2018-19215)

  • There is an illegal address access at asm/preproc.c (function: is_mmacro) in Netwide Assembler (NASM) 2.14rc16 that will cause a denial of service (out-of-bounds array access) because a certain conversion can result in a negative integer. (CVE-2018-19755)

  • There is a use-after-free at asm/preproc.c (function pp_getline) in Netwide Assembler (NASM) 2.14rc16 that will cause a denial of service during a line-number increment attempt. (CVE-2018-20535)

  • There is a use-after-free at asm/preproc.c (function pp_getline) in Netwide Assembler (NASM) 2.14rc16 that will cause a denial of service during certain finishes tests. (CVE-2018-20538)

  • Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in asm/preproc.c, related to an unterminated string. (CVE-2018-8881)

  • Netwide Assembler (NASM) 2.13.02rc2 has a stack-based buffer under-read in the function ieee_shr in asm/float.c via a large shift value. (CVE-2018-8882)

  • Netwide Assembler (NASM) 2.13.02rc2 has a buffer over-read in the parse_line function in asm/parser.c via uncontrolled access to nasm_reg_flags. (CVE-2018-8883)

  • A Use After Free vulnerability in function new_Token in asm/preproc.c in nasm 2.14.02 allows attackers to cause a denial of service via crafted nasm command. (CVE-2020-18780)

  • Buffer Overflow in Netwide Assembler (NASM) v2.15.xx allows attackers to cause a denial of service via ‘crc64i’ in the component ‘nasmlib/crc64’. This issue is different than CVE-2019-7147. (CVE-2020-18974)

  • A Segmentation Fault issue discovered in in ieee_segment function in outieee.c in nasm 2.14.03 and 2.15 allows remote attackers to cause a denial of service via crafted assembly file. (CVE-2020-21528)

  • Buffer Overflow vulnerability in hash_findi function in hashtbl.c in nasm 2.15rc0 allows remote attackers to cause a denial of service via crafted asm file. (CVE-2020-21685)

  • A stack-use-after-scope issue discovered in expand_mmac_params function in preproc.c in nasm before 2.15.04 allows remote attackers to cause a denial of service via crafted asm file. (CVE-2020-21686)

  • Buffer Overflow vulnerability in scan function in stdscan.c in nasm 2.15rc0 allows remote attackers to cause a denial of service via crafted asm file. (CVE-2020-21687)

  • An issue was discovered in NASM version 2.16rc0. There are memory leaks in nasm_calloc() in nasmlib/alloc.c. (CVE-2021-33450)

  • An issue was discovered in NASM version 2.16rc0. There are memory leaks in nasm_malloc() in nasmlib/alloc.c. (CVE-2021-33452)

  • Buffer overflow vulnerability in quote_for_pmake in asm/nasm.c in nasm before 2.15.05 allows attackers to cause a denial of service via crafted file. (CVE-2022-29654)

  • nasm v2.16 was discovered to contain a stack overflow in the Ndisasm component (CVE-2022-41420)

  • NASM v2.16 was discovered to contain a null pointer deference in the NASM component (CVE-2022-44368)

  • NASM 2.16 (development) is vulnerable to 476: Null Pointer Dereference via output/outaout.c.
    (CVE-2022-44369)

  • NASM v2.16 was discovered to contain a heap buffer overflow in the component quote_for_pmake() asm/nasm.c:856 (CVE-2022-44370)

  • NASM v2.16 was discovered to contain a global buffer overflow in the component dbgdbg_typevalue at /output/outdbg.c. (CVE-2022-46456)

  • NASM v2.16 was discovered to contain a segmentation violation in the component ieee_write_file at /output/outieee.c. (CVE-2022-46457)

  • Null pointer dereference in ieee_write_file in nasm 2.16rc0 allows attackers to cause a denial of service (crash). (CVE-2023-38665)

  • Stack-based buffer over-read in function disasm in nasm 2.16 allows attackers to cause a denial of service. (CVE-2023-38667)

  • Stack-based buffer over-read in disasm in nasm 2.16 allows attackers to cause a denial of service (crash).
    (CVE-2023-38668)

Note that Nessus has not tested for these issues but has instead relied on the package manager’s report that the package is installed.

#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The descriptive text and package checks in this plugin were
# extracted from Red Hat Security Advisory nasm. The text
# itself is copyright (C) Red Hat, Inc.
##

include('compat.inc');

if (description)
{
  script_id(195742);
  script_version("1.0");
  script_set_attribute(attribute:"plugin_modification_date", value:"2024/05/11");

  script_cve_id(
    "CVE-2017-10686",
    "CVE-2017-11111",
    "CVE-2017-14228",
    "CVE-2017-17810",
    "CVE-2017-17811",
    "CVE-2017-17812",
    "CVE-2017-17813",
    "CVE-2017-17814",
    "CVE-2017-17815",
    "CVE-2017-17816",
    "CVE-2017-17817",
    "CVE-2017-17818",
    "CVE-2017-17819",
    "CVE-2017-17820",
    "CVE-2018-8881",
    "CVE-2018-8882",
    "CVE-2018-8883",
    "CVE-2018-10016",
    "CVE-2018-10316",
    "CVE-2018-16382",
    "CVE-2018-19213",
    "CVE-2018-19214",
    "CVE-2018-19215",
    "CVE-2018-19755",
    "CVE-2018-20535",
    "CVE-2018-20538",
    "CVE-2018-1000667",
    "CVE-2018-1000886",
    "CVE-2019-8343",
    "CVE-2020-18780",
    "CVE-2020-18974",
    "CVE-2020-21528",
    "CVE-2020-21685",
    "CVE-2020-21686",
    "CVE-2020-21687",
    "CVE-2021-33450",
    "CVE-2021-33452",
    "CVE-2022-29654",
    "CVE-2022-41420",
    "CVE-2022-44368",
    "CVE-2022-44369",
    "CVE-2022-44370",
    "CVE-2022-46456",
    "CVE-2022-46457",
    "CVE-2023-31722",
    "CVE-2023-38665",
    "CVE-2023-38667",
    "CVE-2023-38668"
  );

  script_name(english:"RHEL 7 : nasm (Unpatched Vulnerability)");

  script_set_attribute(attribute:"synopsis", value:
"The remote Red Hat 7 host is affected by multiple vulnerabilities that will not be patched.");
  script_set_attribute(attribute:"description", value:
"The remote Redhat Enterprise Linux 7 host has one or more packages installed that are affected by multiple
vulnerabilities that have been acknowledged by the vendor but will not be patched.

  - nasm: use-after-free in paste_tokens in asm/preproc.c (CVE-2019-8343)

  - nasm: heap buffer overflow in expand_mmacro() asm/preproc.c (CVE-2023-31722)

  - In Netwide Assembler (NASM) 2.14rc0, there are multiple heap use after free vulnerabilities in the tool
    nasm. The related heap is allocated in the token() function and freed in the detoken() function (called by
    pp_getline()) - it is used again at multiple positions later that could cause multiple damages. For
    example, it causes a corrupted double-linked list in detoken(), a double free or corruption in
    delete_Token(), and an out-of-bounds write in detoken(). It has a high possibility to lead to a remote
    code execution attack. (CVE-2017-10686)

  - In Netwide Assembler (NASM) 2.14rc0, preproc.c allows remote attackers to cause a denial of service (heap-
    based buffer overflow and application crash) or possibly have unspecified other impact via a crafted file.
    (CVE-2017-11111)

  - In Netwide Assembler (NASM) 2.14rc0, there is an illegal address access in the function paste_tokens() in
    preproc.c, aka a NULL pointer dereference. It will lead to remote denial of service. (CVE-2017-14228)

  - In Netwide Assembler (NASM) 2.14rc0, there is a SEGV on unknown address that will cause a remote denial
    of service attack, because asm/preproc.c mishandles macro calls that have the wrong number of arguments.
    (CVE-2017-17810)

  - In Netwide Assembler (NASM) 2.14rc0, there is a heap-based buffer overflow that will cause a remote denial
    of service attack, related to a strcpy in paste_tokens in asm/preproc.c, a similar issue to
    CVE-2017-11111. (CVE-2017-17811)

  - In Netwide Assembler (NASM) 2.14rc0, there is a heap-based buffer over-read in the function detoken() in
    asm/preproc.c that will cause a remote denial of service attack. (CVE-2017-17812)

  - In Netwide Assembler (NASM) 2.14rc0, there is a use-after-free in the pp_list_one_macro function in
    asm/preproc.c that will cause a remote denial of service attack, related to mishandling of line-syntax
    errors. (CVE-2017-17813)

  - In Netwide Assembler (NASM) 2.14rc0, there is a use-after-free in do_directive in asm/preproc.c that will
    cause a remote denial of service attack. (CVE-2017-17814)

  - In Netwide Assembler (NASM) 2.14rc0, there is an illegal address access in is_mmacro() in asm/preproc.c
    that will cause a remote denial of service attack, because of a missing check for the relationship between
    minimum and maximum parameter counts. (CVE-2017-17815)

  - In Netwide Assembler (NASM) 2.14rc0, there is a use-after-free in pp_getline in asm/preproc.c that will
    cause a remote denial of service attack. (CVE-2017-17816)

  - In Netwide Assembler (NASM) 2.14rc0, there is a use-after-free in pp_verror in asm/preproc.c that will
    cause a remote denial of service attack. (CVE-2017-17817)

  - In Netwide Assembler (NASM) 2.14rc0, there is a heap-based buffer over-read that will cause a remote
    denial of service attack, related to a while loop in paste_tokens in asm/preproc.c. (CVE-2017-17818)

  - In Netwide Assembler (NASM) 2.14rc0, there is an illegal address access in the function find_cc() in
    asm/preproc.c that will cause a remote denial of service attack, because pointers associated with
    skip_white_ calls are not validated. (CVE-2017-17819)

  - In Netwide Assembler (NASM) 2.14rc0, there is a use-after-free in pp_list_one_macro in asm/preproc.c that
    will lead to a remote denial of service attack, related to mishandling of operand-type errors.
    (CVE-2017-17820)

  - NASM nasm-2.13.03 nasm- 2.14rc15 version 2.14rc15 and earlier contains a memory corruption (crashed) of
    nasm when handling a crafted file due to function assemble_file(inname, depend_ptr) at asm/nasm.c:482.
    vulnerability in function assemble_file(inname, depend_ptr) at asm/nasm.c:482. that can result in
    aborting/crash nasm program. This attack appear to be exploitable via a specially crafted asm file..
    (CVE-2018-1000667)

  - nasm version 2.14.01rc5, 2.15 contains a Buffer Overflow vulnerability in asm/stdscan.c:130 that can
    result in Stack-overflow caused by triggering endless macro generation, crash the program. This attack
    appear to be exploitable via a crafted nasm input file. (CVE-2018-1000886)

  - Netwide Assembler (NASM) 2.14rc0 has a division-by-zero vulnerability in the expr5 function in asm/eval.c
    via a malformed input file. (CVE-2018-10016)

  - Netwide Assembler (NASM) 2.14rc0 has an endless while loop in the assemble_file function of asm/nasm.c
    because of a globallineno integer overflow. (CVE-2018-10316)

  - Netwide Assembler (NASM) 2.14rc15 has a buffer over-read in x86/regflags.c. (CVE-2018-16382)

  - Netwide Assembler (NASM) through 2.14rc16 has memory leaks that may lead to DoS, related to nasm_malloc in
    nasmlib/malloc.c. (CVE-2018-19213)

  - Netwide Assembler (NASM) 2.14rc15 has a heap-based buffer over-read in expand_mmac_params in asm/preproc.c
    for insufficient input. (CVE-2018-19214)

  - Netwide Assembler (NASM) 2.14rc16 has a heap-based buffer over-read in expand_mmac_params in asm/preproc.c
    for the special cases of the % and $ and ! characters. (CVE-2018-19215)

  - There is an illegal address access at asm/preproc.c (function: is_mmacro) in Netwide Assembler (NASM)
    2.14rc16 that will cause a denial of service (out-of-bounds array access) because a certain conversion can
    result in a negative integer. (CVE-2018-19755)

  - There is a use-after-free at asm/preproc.c (function pp_getline) in Netwide Assembler (NASM) 2.14rc16 that
    will cause a denial of service during a line-number increment attempt. (CVE-2018-20535)

  - There is a use-after-free at asm/preproc.c (function pp_getline) in Netwide Assembler (NASM) 2.14rc16 that
    will cause a denial of service during certain finishes tests. (CVE-2018-20538)

  - Netwide Assembler (NASM) 2.13.02rc2 has a heap-based buffer over-read in the function tokenize in
    asm/preproc.c, related to an unterminated string. (CVE-2018-8881)

  - Netwide Assembler (NASM) 2.13.02rc2 has a stack-based buffer under-read in the function ieee_shr in
    asm/float.c via a large shift value. (CVE-2018-8882)

  - Netwide Assembler (NASM) 2.13.02rc2 has a buffer over-read in the parse_line function in asm/parser.c via
    uncontrolled access to nasm_reg_flags. (CVE-2018-8883)

  - A Use After Free vulnerability in function new_Token in asm/preproc.c in nasm 2.14.02 allows attackers to
    cause a denial of service via crafted nasm command. (CVE-2020-18780)

  - Buffer Overflow in Netwide Assembler (NASM) v2.15.xx allows attackers to cause a denial of service via
    'crc64i' in the component 'nasmlib/crc64'. This issue is different than CVE-2019-7147. (CVE-2020-18974)

  - A Segmentation Fault issue discovered in in ieee_segment function in outieee.c in nasm 2.14.03 and 2.15
    allows remote attackers to cause a denial of service via crafted assembly file. (CVE-2020-21528)

  - Buffer Overflow vulnerability in hash_findi function in hashtbl.c in nasm 2.15rc0 allows remote attackers
    to cause a denial of service via crafted asm file. (CVE-2020-21685)

  - A stack-use-after-scope issue discovered in expand_mmac_params function in preproc.c in nasm before
    2.15.04 allows remote attackers to cause a denial of service via crafted asm file. (CVE-2020-21686)

  - Buffer Overflow vulnerability in scan function in stdscan.c in nasm 2.15rc0 allows remote attackers to
    cause a denial of service via crafted asm file. (CVE-2020-21687)

  - An issue was discovered in NASM version 2.16rc0. There are memory leaks in nasm_calloc() in
    nasmlib/alloc.c. (CVE-2021-33450)

  - An issue was discovered in NASM version 2.16rc0. There are memory leaks in nasm_malloc() in
    nasmlib/alloc.c. (CVE-2021-33452)

  - Buffer overflow vulnerability in quote_for_pmake in asm/nasm.c in nasm before 2.15.05 allows attackers to
    cause a denial of service via crafted file. (CVE-2022-29654)

  - nasm v2.16 was discovered to contain a stack overflow in the Ndisasm component (CVE-2022-41420)

  - NASM v2.16 was discovered to contain a null pointer deference in the NASM component (CVE-2022-44368)

  - NASM 2.16 (development) is vulnerable to 476: Null Pointer Dereference via output/outaout.c.
    (CVE-2022-44369)

  - NASM v2.16 was discovered to contain a heap buffer overflow in the component quote_for_pmake()
    asm/nasm.c:856 (CVE-2022-44370)

  - NASM v2.16 was discovered to contain a global buffer overflow in the component dbgdbg_typevalue at
    /output/outdbg.c. (CVE-2022-46456)

  - NASM v2.16 was discovered to contain a segmentation violation in the component ieee_write_file at
    /output/outieee.c. (CVE-2022-46457)

  - Null pointer dereference in ieee_write_file in nasm 2.16rc0 allows attackers to cause a denial of service
    (crash). (CVE-2023-38665)

  - Stack-based buffer over-read in function disasm in nasm 2.16 allows attackers to cause a denial of
    service. (CVE-2023-38667)

  - Stack-based buffer over-read in disasm in nasm 2.16 allows attackers to cause a denial of service (crash).
    (CVE-2023-38668)

Note that Nessus has not tested for these issues but has instead relied on the package manager's report that the package
is installed.");
  script_set_attribute(attribute:"solution", value:
"The vendor has acknowledged the vulnerabilities but no solution has been provided. Refer to the vendor for remediation
guidance.");
  script_set_cvss_base_vector("CVSS2#AV:N/AC:M/Au:N/C:P/I:P/A:P");
  script_set_cvss_temporal_vector("CVSS2#E:POC/RL:OF/RC:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H");
  script_set_cvss3_temporal_vector("CVSS:3.0/E:P/RL:O/RC:C");
  script_set_attribute(attribute:"cvss_score_source", value:"CVE-2019-8343");
  script_set_attribute(attribute:"cvss3_score_source", value:"CVE-2023-31722");

  script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
  script_set_attribute(attribute:"exploit_available", value:"true");
  script_set_attribute(attribute:"vendor_unpatched", value:"true");

  script_set_attribute(attribute:"vuln_publication_date", value:"2017/06/29");
  script_set_attribute(attribute:"plugin_publication_date", value:"2024/05/11");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:5");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:6");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:7");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:redhat:enterprise_linux:8");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:redhat:enterprise_linux:nasm");
  script_set_attribute(attribute:"generated_plugin", value:"current");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Red Hat Local Security Checks");

  script_copyright(english:"This script is Copyright (C) 2024 and is owned by Tenable, Inc. or an Affiliate thereof.");

  script_dependencies("ssh_get_info.nasl", "redhat_repos.nasl");
  script_require_keys("Host/local_checks_enabled", "Host/RedHat/release", "Host/RedHat/rpm-list", "Host/cpu");

  exit(0);
}


include('rpm.inc');
include('rhel.inc');

if (!get_kb_item("global_settings/vendor_unpatched"))
exit(0, "Unpatched Vulnerabilities Detection not active.");

if (!get_kb_item('Host/local_checks_enabled')) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var os_release = get_kb_item('Host/RedHat/release');
if (isnull(os_release) || 'Red Hat' >!< os_release) audit(AUDIT_OS_NOT, 'Red Hat');
var os_ver = pregmatch(pattern: "Red Hat Enterprise Linux.*release ([0-9]+(\.[0-9]+)?)", string:os_release);
if (isnull(os_ver)) audit(AUDIT_UNKNOWN_APP_VER, 'Red Hat');
os_ver = os_ver[1];
if (!rhel_check_release(operator: 'ge', os_version: os_ver, rhel_version: '7')) audit(AUDIT_OS_NOT, 'Red Hat 7.x', 'Red Hat ' + os_ver);

if (!get_kb_item('Host/RedHat/rpm-list')) audit(AUDIT_PACKAGE_LIST_MISSING);

var cpu = get_kb_item('Host/cpu');
if (isnull(cpu)) audit(AUDIT_UNKNOWN_ARCH);
if ('x86_64' >!< cpu && cpu !~ "^i[3-6]86$" && 's390' >!< cpu && 'aarch64' >!< cpu && 'ppc' >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, 'Red Hat', cpu);

var constraints = [
  {
    'pkgs': [
      {'reference':'nasm', 'release':'7', 'rpm_spec_vers_cmp':TRUE, 'unpatched_pkg':'nasm'}
    ]
  }
];


var flag = 0;
foreach var constraint_array ( constraints ) {
  var repo_relative_urls = NULL;
  var enterprise_linux_flag = rhel_repo_urls_has_content_dist_rhel(repo_urls:repo_relative_urls);
  foreach var pkg ( constraint_array['pkgs'] ) {
    var unpatched_pkg = NULL;
    var _release = NULL;
    var sp = NULL;
    var el_string = NULL;
    var rpm_spec_vers_cmp = NULL;
    var exists_check = NULL;
    var cves = NULL;
    if (!empty_or_null(pkg['unpatched_pkg'])) unpatched_pkg = pkg['unpatched_pkg'];
    if (!empty_or_null(pkg['release'])) _release = 'RHEL' + pkg['release'];
    if (!empty_or_null(pkg['sp'])) sp = pkg['sp'];
    if (!empty_or_null(pkg['rpm_spec_vers_cmp'])) rpm_spec_vers_cmp = pkg['rpm_spec_vers_cmp'];
    if (!empty_or_null(pkg['exists_check'])) exists_check = pkg['exists_check'];
    if (!empty_or_null(pkg['cves'])) cves = pkg['cves'];
    if (unpatched_pkg &&
        _release &&
        (!exists_check || rpm_exists(release:_release, rpm:exists_check)) &&
        unpatched_package_exists(release:_release, package:unpatched_pkg, cves: cves)) flag++;
  }
}

if (flag)
{
  var extra = NULL;
  security_report_v4(
      port       : 0,
      severity   : SECURITY_WARNING,
      extra      : unpatched_packages_report()
  );
  exit(0);
}
else
{
  var tested = pkg_tests_get();
  if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
  else audit(AUDIT_PACKAGE_NOT_INSTALLED, 'nasm');
}
VendorProductVersionCPE
redhatenterprise_linux5cpe:/o:redhat:enterprise_linux:5
redhatenterprise_linux6cpe:/o:redhat:enterprise_linux:6
redhatenterprise_linux7cpe:/o:redhat:enterprise_linux:7
redhatenterprise_linux8cpe:/o:redhat:enterprise_linux:8
redhatenterprise_linuxnasmp-cpe:/a:redhat:enterprise_linux:nasm

References