ISC BIND Malformed IXFR DoS (CVE-2021-25214)

2021-04-30T00:00:00
ID BIND9_91712_CVE-2021-25214.NASL
Type nessus
Reporter This script is Copyright (C) 2021 and is owned by Tenable, Inc. or an Affiliate thereof.
Modified 2021-05-13T00:00:00

Description

According to its self-reported version, the ISC Bind present on the remote host is affected by a denial of service vulnerability:

  • Incremental zone transfers (IXFR) provide a way of transferring changed portion(s) of a zone between servers. An IXFR stream containing SOA records with an owner name other than the transferred zone's apex may cause the receiving named server to inadvertently remove the SOA record for the zone in question from the zone database. When a vulnerable version of named receives a malformed IXFR triggering the flaw, the named process will terminate due to a failed assertion the next time the transferred secondary zone is refreshed.

Note that Nessus has not tested for this issue but has instead relied only on the application's self-reported version number.

                                        
                                            ##
# (C) Tenable Network Security, Inc.
##

include('compat.inc');

if (description)
{
  script_id(149212);
  script_version("1.3");
  script_set_attribute(attribute:"plugin_modification_date", value:"2021/05/13");

  script_cve_id("CVE-2021-25214");
  script_xref(name:"IAVA", value:"2021-A-0206");

  script_name(english:"ISC BIND Malformed IXFR DoS (CVE-2021-25214)");

  script_set_attribute(attribute:"synopsis", value:
"The remote name server is affected by a denial of service vulnerability.");
  script_set_attribute(attribute:"description", value:
"According to its self-reported version, the ISC Bind present on the remote
host is affected by a denial of service vulnerability:

- Incremental zone transfers (IXFR) provide a way of transferring changed
portion(s) of a zone between servers.  An IXFR stream containing SOA records
with an owner name other than the transferred zone's apex may cause the
receiving named server to inadvertently remove the SOA record for the zone in
question from the zone database.  When a vulnerable version of named receives
a malformed IXFR triggering the flaw, the named process will terminate due to
a failed assertion the next time the transferred secondary zone is refreshed.

Note that Nessus has not tested for this issue but has instead relied only on
the application's self-reported version number.");
  script_set_attribute(attribute:"see_also", value:"https://kb.isc.org/docs/cve-2021-25214");
  script_set_attribute(attribute:"solution", value:
"Upgrade to the patched release most closely related to your current version of BIND.");
  script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:S/C:N/I:N/A:P");
  script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H");
  script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C");
  script_set_attribute(attribute:"cvss_score_source", value:"CVE-2021-25214");

  script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");

  script_set_attribute(attribute:"vuln_publication_date", value:"2021/04/28");
  script_set_attribute(attribute:"patch_publication_date", value:"2021/04/28");
  script_set_attribute(attribute:"plugin_publication_date", value:"2021/04/30");

  script_set_attribute(attribute:"potential_vulnerability", value:"true");
  script_set_attribute(attribute:"plugin_type", value:"remote");
  script_set_attribute(attribute:"cpe", value:"cpe:/a:isc:bind");
  script_set_attribute(attribute:"stig_severity", value:"I");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"DNS");

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

  script_dependencies("bind_version.nasl");
  script_require_keys("bind/version", "Settings/ParanoidReport");

  exit(0);
}

include('vcf.inc');
include('vcf_extras.inc');

# Workaround exists
if (report_paranoia < 2)
  audit(AUDIT_PARANOID);

vcf::bind::initialize();

app_info = vcf::get_app_info(app:'BIND', port:53, kb_ver:'bind/version', service:TRUE, proto:'UDP');

constraints = [
  { 'min_version' : '9.8.5', 'max_version' : '9.8.8', 'fixed_display' : '9.11.31' },
  { 'min_version' : '9.9.3', 'max_version' : '9.11.29', 'fixed_display' : '9.11.31' },
  { 'min_version' : '9.12.0', 'max_version' : '9.16.13', 'fixed_display' : '9.16.15'},
  { 'min_version' : '9.9.3-S1', 'max_version' : '9.11.29-S1', 'fixed_display' : '9.11.31-S1' },
  { 'min_version' : '9.16.8-S1', 'max_version' : '9.16.13-S1', 'fixed_display' : '9.16.15-S1'},
  { 'min_version' : '9.17.0', 'max_version' : '9.17.11', 'fixed_display' : '9.17.12'}
];
constraints = vcf::bind::filter_constraints(constraints:constraints, version:app_info.version);

vcf::check_version_and_report(app_info:app_info, constraints:constraints, severity:SECURITY_WARNING);