The remote host is affected by the vulnerability described in GLSA-202312-05 (libssh: Multiple Vulnerabilities)
A flaw has been found in libssh in versions prior to 0.9.6. The SSH protocol keeps track of two shared secrets during the lifetime of the session. One of them is called secret_hash and the other session_id.
Initially, both of them are the same, but after key re-exchange, previous session_id is kept and used as an input to new secret_hash. Historically, both of these buffers had shared length variable, which worked as long as these buffers were same. But the key re-exchange operation can also change the key exchange method, which can be based on hash of different size, eventually creating secret_hash of different size than the session_id has. This becomes an issue when the session_id memory is zeroed or when it is used again during second key re-exchange. (CVE-2021-3634)
A NULL pointer dereference was found In libssh during re-keying with algorithm guessing. This issue may allow an authenticated client to cause a denial of service. (CVE-2023-1667)
A vulnerability was found in libssh, where the authentication check of the connecting client can be bypassed in thepki_verify_data_signature
function in memory allocation problems. This issue may happen if there is insufficient memory or the memory usage is limited. The problem is caused by the return value rc,
which is initialized to SSH_ERROR and later rewritten to save the return value of the function call pki_key_check_hash_compatible.
The value of the variable is not changed between this point and the cryptographic verification. Therefore any error between them calls goto error
returning SSH_OK.
(CVE-2023-2283)
Note that Nessus has not tested for these issues but has instead relied only on the application’s self-reported version number.
#%NASL_MIN_LEVEL 80900
#
# (C) Tenable, Inc.
#
# @NOAGENT@
#
# The descriptive text and package checks in this plugin were
# extracted from Gentoo Linux Security Advisory GLSA 202312-05.
#
# The advisory text is Copyright (C) 2001-2021 Gentoo Foundation, Inc.
# and licensed under the Creative Commons - Attribution / Share Alike
# license. See http://creativecommons.org/licenses/by-sa/3.0/
#
include('compat.inc');
if (description)
{
script_id(187202);
script_version("1.0");
script_set_attribute(attribute:"plugin_modification_date", value:"2023/12/22");
script_cve_id("CVE-2021-3634", "CVE-2023-1667", "CVE-2023-2283");
script_name(english:"GLSA-202312-05 : libssh: Multiple Vulnerabilities");
script_set_attribute(attribute:"synopsis", value:
"");
script_set_attribute(attribute:"description", value:
"The remote host is affected by the vulnerability described in GLSA-202312-05 (libssh: Multiple Vulnerabilities)
- A flaw has been found in libssh in versions prior to 0.9.6. The SSH protocol keeps track of two shared
secrets during the lifetime of the session. One of them is called secret_hash and the other session_id.
Initially, both of them are the same, but after key re-exchange, previous session_id is kept and used as
an input to new secret_hash. Historically, both of these buffers had shared length variable, which worked
as long as these buffers were same. But the key re-exchange operation can also change the key exchange
method, which can be based on hash of different size, eventually creating secret_hash of different size
than the session_id has. This becomes an issue when the session_id memory is zeroed or when it is used
again during second key re-exchange. (CVE-2021-3634)
- A NULL pointer dereference was found In libssh during re-keying with algorithm guessing. This issue may
allow an authenticated client to cause a denial of service. (CVE-2023-1667)
- A vulnerability was found in libssh, where the authentication check of the connecting client can be
bypassed in the`pki_verify_data_signature` function in memory allocation problems. This issue may happen
if there is insufficient memory or the memory usage is limited. The problem is caused by the return value
`rc,` which is initialized to SSH_ERROR and later rewritten to save the return value of the function call
`pki_key_check_hash_compatible.` The value of the variable is not changed between this point and the
cryptographic verification. Therefore any error between them calls `goto error` returning SSH_OK.
(CVE-2023-2283)
Note that Nessus has not tested for these issues but has instead relied only on the application's self-reported version
number.");
script_set_attribute(attribute:"see_also", value:"https://security.gentoo.org/glsa/202312-05");
script_set_attribute(attribute:"see_also", value:"https://bugs.gentoo.org/show_bug.cgi?id=810517");
script_set_attribute(attribute:"see_also", value:"https://bugs.gentoo.org/show_bug.cgi?id=905746");
script_set_attribute(attribute:"solution", value:
"All libssh users should upgrade to the latest version:
# emerge --sync
# emerge --ask --oneshot --verbose >=net-libs/libssh-0.10.5");
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:POC/RL:OF/RC:C");
script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N");
script_set_cvss3_temporal_vector("CVSS:3.0/E:P/RL:O/RC:C");
script_set_attribute(attribute:"cvss_score_source", value:"CVE-2021-3634");
script_set_attribute(attribute:"cvss3_score_source", value:"CVE-2023-2283");
script_set_attribute(attribute:"exploitability_ease", value:"Exploits are available");
script_set_attribute(attribute:"exploit_available", value:"true");
script_set_attribute(attribute:"vuln_publication_date", value:"2021/08/31");
script_set_attribute(attribute:"patch_publication_date", value:"2023/12/22");
script_set_attribute(attribute:"plugin_publication_date", value:"2023/12/22");
script_set_attribute(attribute:"plugin_type", value:"local");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:gentoo:linux:libssh");
script_set_attribute(attribute:"cpe", value:"cpe:/o:gentoo:linux");
script_set_attribute(attribute:"generated_plugin", value:"current");
script_end_attributes();
script_category(ACT_GATHER_INFO);
script_family(english:"Gentoo Local Security Checks");
script_copyright(english:"This script is Copyright (C) 2023 and is owned by Tenable, Inc. or an Affiliate thereof.");
script_dependencies("ssh_get_info.nasl");
script_require_keys("Host/local_checks_enabled", "Host/Gentoo/release", "Host/Gentoo/qpkg-list");
exit(0);
}
include('qpkg.inc');
if (!get_kb_item('Host/local_checks_enabled')) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
if (!get_kb_item('Host/Gentoo/release')) audit(AUDIT_OS_NOT, 'Gentoo');
if (!get_kb_item('Host/Gentoo/qpkg-list')) audit(AUDIT_PACKAGE_LIST_MISSING);
var flag = 0;
var packages = [
{
'name' : 'net-libs/libssh',
'unaffected' : make_list("ge 0.10.5"),
'vulnerable' : make_list("lt 0.10.5")
}
];
foreach var package( packages ) {
if (isnull(package['unaffected'])) package['unaffected'] = make_list();
if (isnull(package['vulnerable'])) package['vulnerable'] = make_list();
if (qpkg_check(package: package['name'] , unaffected: package['unaffected'], vulnerable: package['vulnerable'])) flag++;
}
if (flag)
{
security_report_v4(
port : 0,
severity : SECURITY_WARNING,
extra : qpkg_report_get()
);
exit(0);
}
else
{
qpkg_tests = list_uniq(qpkg_tests);
var tested = qpkg_tests_get();
if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
else audit(AUDIT_PACKAGE_NOT_INSTALLED, 'libssh');
}