Vulnerabilities > CVE-2020-13696 - Incorrect Authorization vulnerability in multiple products

047910
CVSS 4.4 - MEDIUM
Attack vector
LOCAL
Attack complexity
LOW
Privileges required
LOW
Confidentiality impact
LOW
Integrity impact
LOW
Availability impact
NONE

Summary

An issue was discovered in LinuxTV xawtv before 3.107. The function dev_open() in v4l-conf.c does not perform sufficient checks to prevent an unprivileged caller of the program from opening unintended filesystem paths. This allows a local attacker with access to the v4l-conf setuid-root program to test for the existence of arbitrary files and to trigger an open on arbitrary files with mode O_RDWR. To achieve this, relative path components need to be added to the device path, as demonstrated by a v4l-conf -c /dev/../root/.bash_history command.

Common Weakness Enumeration (CWE)

Nessus

NASL familySuSE Local Security Checks
NASL idOPENSUSE-2020-784.NASL
descriptionThis update for xawtv fixes the following issues : - CVE-2020-13696: Fixed an issue in setuid-root program that which could have allowed arbitrary file existence tests and open() with O_RDWR (boo#1171655).
last seen2020-06-10
modified2020-06-08
plugin id137231
published2020-06-08
reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
sourcehttps://www.tenable.com/plugins/nessus/137231
titleopenSUSE Security Update : xawtv (openSUSE-2020-784)
code
#
# (C) Tenable Network Security, Inc.
#
# The descriptive text and package checks in this plugin were
# extracted from openSUSE Security Update openSUSE-2020-784.
#
# The text description of this plugin is (C) SUSE LLC.
#

include("compat.inc");

if (description)
{
  script_id(137231);
  script_version("1.3");
  script_set_attribute(attribute:"plugin_modification_date", value:"2020/06/24");

  script_cve_id("CVE-2020-13696");

  script_name(english:"openSUSE Security Update : xawtv (openSUSE-2020-784)");
  script_summary(english:"Check for the openSUSE-2020-784 patch");

  script_set_attribute(
    attribute:"synopsis",
    value:"The remote openSUSE host is missing a security update."
  );
  script_set_attribute(
    attribute:"description",
    value:
"This update for xawtv fixes the following issues :

  - CVE-2020-13696: Fixed an issue in setuid-root program
    that which could have allowed arbitrary file existence
    tests and open() with O_RDWR (boo#1171655)."
  );
  script_set_attribute(
    attribute:"see_also",
    value:"https://bugzilla.opensuse.org/show_bug.cgi?id=1171655"
  );
  script_set_attribute(
    attribute:"solution",
    value:"Update the affected xawtv packages."
  );
  script_set_cvss_base_vector("CVSS2#AV:L/AC:L/Au:N/C:P/I:P/A:N");
  script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C");
  script_set_cvss3_base_vector("CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/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-2020-13696");
  script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");

  script_set_attribute(attribute:"plugin_type", value:"local");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:alevtd");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:alevtd-debuginfo");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:motv");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:motv-debuginfo");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:pia");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:pia-debuginfo");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:tv-common");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:tv-common-debuginfo");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:v4l-conf");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:v4l-conf-debuginfo");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:v4l-tools");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:v4l-tools-debuginfo");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:xawtv");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:xawtv-debuginfo");
  script_set_attribute(attribute:"cpe", value:"p-cpe:/a:novell:opensuse:xawtv-debugsource");
  script_set_attribute(attribute:"cpe", value:"cpe:/o:novell:opensuse:15.1");

  script_set_attribute(attribute:"vuln_publication_date", value:"2020/06/08");
  script_set_attribute(attribute:"patch_publication_date", value:"2020/06/07");
  script_set_attribute(attribute:"plugin_publication_date", value:"2020/06/08");
  script_set_attribute(attribute:"generated_plugin", value:"current");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_copyright(english:"This script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.");
  script_family(english:"SuSE Local Security Checks");

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

  exit(0);
}


include("audit.inc");
include("global_settings.inc");
include("rpm.inc");

if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
release = get_kb_item("Host/SuSE/release");
if (isnull(release) || release =~ "^(SLED|SLES)") audit(AUDIT_OS_NOT, "openSUSE");
if (release !~ "^(SUSE15\.1)$") audit(AUDIT_OS_RELEASE_NOT, "openSUSE", "15.1", release);
if (!get_kb_item("Host/SuSE/rpm-list")) audit(AUDIT_PACKAGE_LIST_MISSING);

ourarch = get_kb_item("Host/cpu");
if (!ourarch) audit(AUDIT_UNKNOWN_ARCH);
if (ourarch !~ "^(x86_64)$") audit(AUDIT_ARCH_NOT, "x86_64", ourarch);

flag = 0;

if ( rpm_check(release:"SUSE15.1", reference:"alevtd-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"alevtd-debuginfo-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"motv-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"motv-debuginfo-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"pia-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"pia-debuginfo-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"tv-common-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"tv-common-debuginfo-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"v4l-conf-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"v4l-conf-debuginfo-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"v4l-tools-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"v4l-tools-debuginfo-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"xawtv-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"xawtv-debuginfo-3.103-lp151.3.3.1") ) flag++;
if ( rpm_check(release:"SUSE15.1", reference:"xawtv-debugsource-3.103-lp151.3.3.1") ) flag++;

if (flag)
{
  if (report_verbosity > 0) security_note(port:0, extra:rpm_report_get());
  else security_note(0);
  exit(0);
}
else
{
  tested = pkg_tests_get();
  if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
  else audit(AUDIT_PACKAGE_NOT_INSTALLED, "alevtd / alevtd-debuginfo / motv / motv-debuginfo / pia / etc");
}

References