#%NASL_MIN_LEVEL 80900
##
# (C) Tenable, Inc.
##
include('compat.inc');
if (description)
{
script_id(188762);
script_version("1.0");
script_set_attribute(attribute:"plugin_modification_date", value:"2024/01/16");
script_cve_id(
"CVE-2020-29509",
"CVE-2020-29511",
"CVE-2023-29402",
"CVE-2023-29403",
"CVE-2023-29404",
"CVE-2023-29405"
);
script_name(english:"EulerOS 2.0 SP10 : golang (EulerOS-SA-2023-2810)");
script_set_attribute(attribute:"synopsis", value:
"The remote EulerOS host is missing multiple security updates.");
script_set_attribute(attribute:"description", value:
"According to the versions of the golang packages installed, the EulerOS installation on the remote host is affected by
the following vulnerabilities :
- The encoding/xml package in Go (all versions) does not correctly preserve the semantics of attribute
namespace prefixes during tokenization round-trips, which allows an attacker to craft inputs that behave
in conflicting ways during different stages of processing in affected downstream applications.
(CVE-2020-29509)
- The encoding/xml package in Go (all versions) does not correctly preserve the semantics of element
namespace prefixes during tokenization round-trips, which allows an attacker to craft inputs that behave
in conflicting ways during different stages of processing in affected downstream applications.
(CVE-2020-29511)
- The go command may generate unexpected code at build time when using cgo. This may result in unexpected
behavior when running a go program which uses cgo. This may occur when running an untrusted module which
contains directories with newline characters in their names. Modules which are retrieved using the go
command, i.e. via 'go get', are not affected (modules retrieved using GOPATH-mode, i.e. GO111MODULE=off,
may be affected). (CVE-2023-29402)
- On Unix platforms, the Go runtime does not behave differently when a binary is run with the setuid/setgid
bits. This can be dangerous in certain cases, such as when dumping memory state, or assuming the status of
standard i/o file descriptors. If a setuid/setgid binary is executed with standard I/O file descriptors
closed, opening any files can result in unexpected content being read or written with elevated privileges.
Similarly, if a setuid/setgid program is terminated, either via panic or signal, it may leak the contents
of its registers. (CVE-2023-29403)
- The go command may execute arbitrary code at build time when using cgo. This may occur when running 'go
get' on a malicious module, or when running any other command which builds untrusted code. This is can by
triggered by linker flags, specified via a '#cgo LDFLAGS' directive. The arguments for a number of flags
which are non-optional are incorrectly considered optional, allowing disallowed flags to be smuggled
through the LDFLAGS sanitization. This affects usage of both the gc and gccgo compilers. (CVE-2023-29404)
- The go command may execute arbitrary code at build time when using cgo. This may occur when running 'go
get' on a malicious module, or when running any other command which builds untrusted code. This is can by
triggered by linker flags, specified via a '#cgo LDFLAGS' directive. Flags containing embedded spaces are
mishandled, allowing disallowed flags to be smuggled through the LDFLAGS sanitization by including them in
the argument of another flag. This only affects usage of the gccgo compiler. (CVE-2023-29405)
Note that Tenable Network Security has extracted the preceding description block directly from the EulerOS security
advisory. Tenable has attempted to automatically clean and format it as much as possible without introducing additional
issues.");
# https://developer.huaweicloud.com/ict/en/site-euleros/euleros/security-advisories/EulerOS-SA-2023-2810
script_set_attribute(attribute:"see_also", value:"http://www.nessus.org/u?f89bd020");
script_set_attribute(attribute:"solution", value:
"Update the affected golang packages.");
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:U/RL:OF/RC:C");
script_set_cvss3_base_vector("CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/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-2020-29511");
script_set_attribute(attribute:"cvss3_score_source", value:"CVE-2023-29405");
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:"2020/12/14");
script_set_attribute(attribute:"patch_publication_date", value:"2023/09/11");
script_set_attribute(attribute:"plugin_publication_date", value:"2024/01/16");
script_set_attribute(attribute:"plugin_type", value:"local");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:golang");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:golang-devel");
script_set_attribute(attribute:"cpe", value:"p-cpe:/a:huawei:euleros:golang-help");
script_set_attribute(attribute:"cpe", value:"cpe:/o:huawei:euleros:2.0");
script_set_attribute(attribute:"generated_plugin", value:"current");
script_end_attributes();
script_category(ACT_GATHER_INFO);
script_family(english:"Huawei 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");
script_require_keys("Host/local_checks_enabled", "Host/cpu", "Host/EulerOS/release", "Host/EulerOS/rpm-list", "Host/EulerOS/sp");
script_exclude_keys("Host/EulerOS/uvp_version");
exit(0);
}
include("rpm.inc");
if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
var _release = get_kb_item("Host/EulerOS/release");
if (isnull(_release) || _release !~ "^EulerOS") audit(AUDIT_OS_NOT, "EulerOS");
var uvp = get_kb_item("Host/EulerOS/uvp_version");
if (_release !~ "^EulerOS release 2\.0(\D|$)") audit(AUDIT_OS_NOT, "EulerOS 2.0 SP10");
var sp = get_kb_item("Host/EulerOS/sp");
if (isnull(sp) || sp !~ "^(10)$") audit(AUDIT_OS_NOT, "EulerOS 2.0 SP10");
if (!empty_or_null(uvp)) audit(AUDIT_OS_NOT, "EulerOS 2.0 SP10", "EulerOS UVP " + uvp);
if (!get_kb_item("Host/EulerOS/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$" && "aarch64" >!< cpu && "x86" >!< cpu) audit(AUDIT_LOCAL_CHECKS_NOT_IMPLEMENTED, "EulerOS", cpu);
if ("x86_64" >!< cpu && cpu !~ "^i[3-6]86$" && "x86" >!< cpu) audit(AUDIT_ARCH_NOT, "i686 / x86_64", cpu);
var flag = 0;
var pkgs = [
"golang-1.15.7-15.h19.eulerosv2r10",
"golang-devel-1.15.7-15.h19.eulerosv2r10",
"golang-help-1.15.7-15.h19.eulerosv2r10"
];
foreach (var pkg in pkgs)
if (rpm_check(release:"EulerOS-2.0", sp:"10", reference:pkg)) flag++;
if (flag)
{
security_report_v4(
port : 0,
severity : SECURITY_WARNING,
extra : rpm_report_get()
);
exit(0);
}
else
{
var tested = pkg_tests_get();
if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
else audit(AUDIT_PACKAGE_NOT_INSTALLED, "golang");
}
Data
Build on a solid foundation with Vulners data
We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data
Api
Power your application with Vulners API
The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access
App
Assess and manage vulnerabilities with Vulners tools
Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation