Lucene search

K
nessusUbuntu Security Notice (C) 2023 Canonical, Inc. / NASL script (C) 2023 and is owned by Tenable, Inc. or an Affiliate thereof.UBUNTU_USN-5992-1.NASL
HistoryApr 03, 2023 - 12:00 a.m.

Ubuntu 20.04 LTS / 22.04 LTS : ldb vulnerability (USN-5992-1)

2023-04-0300:00:00
Ubuntu Security Notice (C) 2023 Canonical, Inc. / NASL script (C) 2023 and is owned by Tenable, Inc. or an Affiliate thereof.
www.tenable.com
23
active directory
confidential attributes
access controlled attributes
secret attributes
ldap filter
samba
cve-2023-0614

EPSS

0.001

Percentile

46.5%

The remote Ubuntu 20.04 LTS host has packages installed that are affected by a vulnerability as referenced in the USN-5992-1 advisory.

  • In Active Directory, there are essentially four different classes of attributes. - Secret attributes (such as a user, computer or domain trust password) that are never disclosed and are not available to search against over LDAP. This is a hard-coded list, and since Samba 4.8 these are additionally encrypted in the DB with a per-DB key. - Confidential attributes (marked as such in the schema) that have a default access restriction allowing access only to the owner of the object. While a Samba AD Domain makes these attributes available, thankfully by default it will not have any of these confidential attributes set, as they are only added by clients after configuration (typically via a GPO). Examples of confidential data stored in Active Directory include BitLocker recovery keys, TPM owner passwords, and certificate secret keys stored with Credential Roaming. - Access controlled attributes (for reads or writes), Samba will honour the access control specified in the ntSecurityDescriptor. - Public attributes for read. Most attributes in Active Directory are available to read by all authenticated users. Because the access control rules for a given attribute are not consistent between objects, Samba implemented access control restrictions only after matching objects against the filter. Taking each of the above classes in turn: - Secret attributes are prevented from disclosure firstly by redaction of the LDAP filter, and secondly by the fact that they are still encrypted during filter processing (by default). - Confidential and access controlled attributes were subject to an attack using LDAP filters. With this security patch, for attributes mentioned in the search filter, Samba will perform a per-object access control evaluation before LDAP filter matching on the attribute, preventing unauthorised disclosure of the value of (for example) BitLocker recovery keys. It is not expected that all similar attacks have been prevented, and it is likely still possible to determine if an object or attribute on an object is present, but not to obtain the contents. (CVE-2023-0614)

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

#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
#
# The descriptive text and package checks in this plugin were
# extracted from Ubuntu Security Notice USN-5992-1. The text
# itself is copyright (C) Canonical, Inc. See
# <https://ubuntu.com/security/notices>. Ubuntu(R) is a registered
# trademark of Canonical, Inc.
##

include('compat.inc');

if (description)
{
  script_id(173795);
  script_version("1.4");
  script_set_attribute(attribute:"plugin_modification_date", value:"2023/10/20");

  script_cve_id("CVE-2023-0614");
  script_xref(name:"USN", value:"5992-1");

  script_name(english:"Ubuntu 20.04 LTS / 22.04 LTS : ldb vulnerability (USN-5992-1)");

  script_set_attribute(attribute:"synopsis", value:
"The remote Ubuntu host is missing a security update.");
  script_set_attribute(attribute:"description", value:
"The remote Ubuntu 20.04 LTS host has packages installed that are affected by a vulnerability as referenced in the
USN-5992-1 advisory.

  - In Active Directory, there are essentially four different classes of attributes. - Secret attributes (such
    as a user, computer or domain trust password) that are never disclosed and are not available to search
    against over LDAP. This is a hard-coded list, and since Samba 4.8 these are additionally encrypted in the
    DB with a per-DB key. - Confidential attributes (marked as such in the schema) that have a default access
    restriction allowing access only to the owner of the object. While a Samba AD Domain makes these
    attributes available, thankfully by default it will not have any of these confidential attributes set, as
    they are only added by clients after configuration (typically via a GPO). Examples of confidential data
    stored in Active Directory include BitLocker recovery keys, TPM owner passwords, and certificate secret
    keys stored with Credential Roaming. - Access controlled attributes (for reads or writes), Samba will
    honour the access control specified in the ntSecurityDescriptor. - Public attributes for read. Most
    attributes in Active Directory are available to read by all authenticated users. Because the access
    control rules for a given attribute are not consistent between objects, Samba implemented access control
    restrictions only after matching objects against the filter. Taking each of the above classes in turn: -
    Secret attributes are prevented from disclosure firstly by redaction of the LDAP filter, and secondly by
    the fact that they are still encrypted during filter processing (by default). - Confidential and access
    controlled attributes were subject to an attack using LDAP filters. With this security patch, for
    attributes mentioned in the search filter, Samba will perform a per-object access control evaluation
    before LDAP filter matching on the attribute, preventing unauthorised disclosure of the value of (for
    example) BitLocker recovery keys. It is not expected that all similar attacks have been prevented, and it
    is likely still possible to determine if an object or attribute on an object is present, but not to obtain
    the contents. (CVE-2023-0614)

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://ubuntu.com/security/notices/USN-5992-1");
  script_set_attribute(attribute:"solution", value:
"Update the affected packages.");
  script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:S/C:C/I:N/A:N");
  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:H/I:N/A:N");
  script_set_cvss3_temporal_vector("CVSS:3.0/E:U/RL:O/RC:C");
  script_set_attribute(attribute:"cvss_score_source", value:"CVE-2023-0614");

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

  script_set_attribute(attribute:"vuln_publication_date", value:"2023/03/29");
  script_set_attribute(attribute:"patch_publication_date", value:"2023/04/03");
  script_set_attribute(attribute:"plugin_publication_date", value:"2023/04/03");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:20.04:-:lts");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:canonical:ubuntu_linux:22.04:-:lts");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:ldb-tools");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:libldb-dev");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:libldb2");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:python3-ldb");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:canonical:ubuntu_linux:python3-ldb-dev");
  script_set_attribute(attribute:"generated_plugin", value:"current");
  script_end_attributes();

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

  script_copyright(english:"Ubuntu Security Notice (C) 2023 Canonical, Inc. / NASL script (C) 2023 and is owned by Tenable, Inc. or an Affiliate thereof.");

  script_dependencies("ssh_get_info.nasl");
  script_require_keys("Host/cpu", "Host/Ubuntu", "Host/Ubuntu/release", "Host/Debian/dpkg-l");

  exit(0);
}

include('debian_package.inc');

if ( ! get_kb_item('Host/local_checks_enabled') ) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var os_release = get_kb_item('Host/Ubuntu/release');
if ( isnull(os_release) ) audit(AUDIT_OS_NOT, 'Ubuntu');
os_release = chomp(os_release);
if (! ('20.04' >< os_release || '22.04' >< os_release)) audit(AUDIT_OS_NOT, 'Ubuntu 20.04 / 22.04', 'Ubuntu ' + os_release);
if ( ! get_kb_item('Host/Debian/dpkg-l') ) 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) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, 'Ubuntu', cpu);

var pkgs = [
    {'osver': '20.04', 'pkgname': 'ldb-tools', 'pkgver': '2:2.4.4-0ubuntu0.20.04.2'},
    {'osver': '20.04', 'pkgname': 'libldb-dev', 'pkgver': '2:2.4.4-0ubuntu0.20.04.2'},
    {'osver': '20.04', 'pkgname': 'libldb2', 'pkgver': '2:2.4.4-0ubuntu0.20.04.2'},
    {'osver': '20.04', 'pkgname': 'python3-ldb', 'pkgver': '2:2.4.4-0ubuntu0.20.04.2'},
    {'osver': '20.04', 'pkgname': 'python3-ldb-dev', 'pkgver': '2:2.4.4-0ubuntu0.20.04.2'},
    {'osver': '22.04', 'pkgname': 'ldb-tools', 'pkgver': '2:2.4.4-0ubuntu0.22.04.2'},
    {'osver': '22.04', 'pkgname': 'libldb-dev', 'pkgver': '2:2.4.4-0ubuntu0.22.04.2'},
    {'osver': '22.04', 'pkgname': 'libldb2', 'pkgver': '2:2.4.4-0ubuntu0.22.04.2'},
    {'osver': '22.04', 'pkgname': 'python3-ldb', 'pkgver': '2:2.4.4-0ubuntu0.22.04.2'},
    {'osver': '22.04', 'pkgname': 'python3-ldb-dev', 'pkgver': '2:2.4.4-0ubuntu0.22.04.2'}
];

var flag = 0;
foreach package_array ( pkgs ) {
  var osver = NULL;
  var pkgname = NULL;
  var pkgver = NULL;
  if (!empty_or_null(package_array['osver'])) osver = package_array['osver'];
  if (!empty_or_null(package_array['pkgname'])) pkgname = package_array['pkgname'];
  if (!empty_or_null(package_array['pkgver'])) pkgver = package_array['pkgver'];
  if (osver && pkgname && pkgver) {
    if (ubuntu_check(osver:osver, pkgname:pkgname, pkgver:pkgver)) flag++;
  }
}

if (flag)
{
  security_report_v4(
    port       : 0,
    severity   : SECURITY_WARNING,
    extra      : ubuntu_report_get()
  );
  exit(0);
}
else
{
  var tested = ubuntu_pkg_tests_get();
  if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
  else audit(AUDIT_PACKAGE_NOT_INSTALLED, 'ldb-tools / libldb-dev / libldb2 / python3-ldb / python3-ldb-dev');
}