Vulnerabilities > CVE-2019-19721 - Off-by-one Error vulnerability in Videolan VLC Media Player

047910
CVSS 7.8 - HIGH
Attack vector
LOCAL
Attack complexity
LOW
Privileges required
NONE
Confidentiality impact
HIGH
Integrity impact
HIGH
Availability impact
HIGH
local
low complexity
videolan
CWE-193
nessus

Summary

An off-by-one error in the DecodeBlock function in codec/sdl_image.c in VideoLAN VLC media player before 3.0.9 allows remote attackers to cause a denial of service (memory corruption) via a crafted image file. NOTE: this may be related to the SDL_Image product.

Vulnerable Configurations

Part Description Count
Application
Videolan
137

Common Weakness Enumeration (CWE)

Nessus

  • NASL familyFreeBSD Local Security Checks
    NASL idFREEBSD_PKG_4A10902F8A4811EA8668E0D55E2A8BF9.NASL
    descriptionVideoLAN reports : Details A remote user could : - Create a specifically crafted image file that could trigger an out of bounds read - Send a specifically crafter request to the microdns service discovery, potentially triggering various memory management issues Impact If successful, a malicious third party could trigger either a crash of VLC or an arbitratry code execution with the privileges of the target user. While these issues in themselves are most likely to just crash the player, we can
    last seen2020-05-23
    modified2020-04-30
    plugin id136159
    published2020-04-30
    reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/136159
    titleFreeBSD : vlc -- Multiple vulnerabilities fixed in VLC media player (4a10902f-8a48-11ea-8668-e0d55e2a8bf9)
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were  
    # extracted from the FreeBSD VuXML database :
    #
    # Copyright 2003-2020 Jacques Vidrine and contributors
    #
    # Redistribution and use in source (VuXML) and 'compiled' forms (SGML,
    # HTML, PDF, PostScript, RTF and so forth) with or without modification,
    # are permitted provided that the following conditions are met:
    # 1. Redistributions of source code (VuXML) must retain the above
    #    copyright notice, this list of conditions and the following
    #    disclaimer as the first lines of this file unmodified.
    # 2. Redistributions in compiled form (transformed to other DTDs,
    #    published online in any format, converted to PDF, PostScript,
    #    RTF and other formats) must reproduce the above copyright
    #    notice, this list of conditions and the following disclaimer
    #    in the documentation and/or other materials provided with the
    #    distribution.
    # 
    # THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS "AS IS"
    # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
    # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
    # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
    # OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
    # OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
    # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
    # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
    # OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS DOCUMENTATION,
    # EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(136159);
      script_version("1.2");
      script_set_attribute(attribute:"plugin_modification_date", value:"2020/05/08");
    
      script_xref(name:"IAVB", value:"2020-B-0025");
    
      script_name(english:"FreeBSD : vlc -- Multiple vulnerabilities fixed in VLC media player (4a10902f-8a48-11ea-8668-e0d55e2a8bf9)");
      script_summary(english:"Checks for updated package in pkg_info output");
    
      script_set_attribute(
        attribute:"synopsis", 
        value:"The remote FreeBSD host is missing a security-related update."
      );
      script_set_attribute(
        attribute:"description", 
        value:
    "VideoLAN reports : Details A remote user could :
    
    - Create a specifically crafted image file that could trigger an out
    of bounds read 
    
    - Send a specifically crafter request to the microdns service
    discovery, potentially triggering various memory management issues
    Impact
    
    If successful, a malicious third party could trigger either a crash of
    VLC or an arbitratry code execution with the privileges of the target
    user.
    
    While these issues in themselves are most likely to just crash the
    player, we can't exclude that they could be combined to leak user
    informations or remotely execute code. ASLR and DEP help reduce the
    likelyness of code execution, but may be bypassed.
    
    We have not seen exploits performing code execution through these
    vulnerabilities
    
    CVE-2019-19721 affects VLC 3.0.8 and earlier, and only reads 1 byte
    out of bound"
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://www.videolan.org/security/sb-vlc309.html"
      );
      # https://vuxml.freebsd.org/freebsd/4a10902f-8a48-11ea-8668-e0d55e2a8bf9.html
      script_set_attribute(
        attribute:"see_also",
        value:"http://www.nessus.org/u?20cae9ca"
      );
      script_set_attribute(attribute:"solution", value:"Update the affected package.");
      script_set_attribute(attribute:"risk_factor", value:"High");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:freebsd:freebsd:vlc");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:freebsd:freebsd");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2020/04/01");
      script_set_attribute(attribute:"patch_publication_date", value:"2020/04/29");
      script_set_attribute(attribute:"plugin_publication_date", value:"2020/04/30");
      script_set_attribute(attribute:"stig_severity", value:"II");
      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:"FreeBSD Local Security Checks");
    
      script_dependencies("ssh_get_info.nasl");
      script_require_keys("Host/local_checks_enabled", "Host/FreeBSD/release", "Host/FreeBSD/pkg_info");
    
      exit(0);
    }
    
    
    include("audit.inc");
    include("freebsd_package.inc");
    
    
    if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
    if (!get_kb_item("Host/FreeBSD/release")) audit(AUDIT_OS_NOT, "FreeBSD");
    if (!get_kb_item("Host/FreeBSD/pkg_info")) audit(AUDIT_PACKAGE_LIST_MISSING);
    
    
    flag = 0;
    
    if (pkg_test(save_report:TRUE, pkg:"vlc<3.0.10,4")) flag++;
    
    if (flag)
    {
      if (report_verbosity > 0) security_hole(port:0, extra:pkg_report_get());
      else security_hole(0);
      exit(0);
    }
    else audit(AUDIT_HOST_NOT, "affected");
    
  • NASL familyGentoo Local Security Checks
    NASL idGENTOO_GLSA-202005-11.NASL
    descriptionThe remote host is affected by the vulnerability described in GLSA-202005-11 (VLC: Buffer overflow) A buffer overflow in DecodeBlock in sdl_image.c was discovered. Impact : A remote user could craft a specifically crafted image file that could execute arbitrary code or cause denial of service. Workaround : The user should refrain from opening files from untrusted third parties or accessing untrusted remote sites (or disable the VLC browser plugins), until they upgrade.
    last seen2020-05-31
    modified2020-05-15
    plugin id136641
    published2020-05-15
    reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/136641
    titleGLSA-202005-11 : VLC: Buffer overflow
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were
    # extracted from Gentoo Linux Security Advisory GLSA 202005-11.
    #
    # The advisory text is Copyright (C) 2001-2020 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(136641);
      script_version("1.5");
      script_set_attribute(attribute:"plugin_modification_date", value:"2020/06/22");
    
      script_cve_id("CVE-2019-19721");
      script_xref(name:"GLSA", value:"202005-11");
      script_xref(name:"IAVB", value:"2020-B-0025");
    
      script_name(english:"GLSA-202005-11 : VLC: Buffer overflow");
      script_summary(english:"Checks for updated package(s) in /var/db/pkg");
    
      script_set_attribute(
        attribute:"synopsis",
        value:
    "The remote Gentoo host is missing one or more security-related
    patches."
      );
      script_set_attribute(
        attribute:"description",
        value:
    "The remote host is affected by the vulnerability described in GLSA-202005-11
    (VLC: Buffer overflow)
    
        A buffer overflow in DecodeBlock in sdl_image.c was discovered.
      
    Impact :
    
        A remote user could craft a specifically crafted image file that could
          execute arbitrary code or cause denial of service.
      
    Workaround :
    
        The user should refrain from opening files from untrusted third parties
          or accessing untrusted remote sites (or disable the VLC browser plugins),
          until they upgrade."
      );
      # https://git.videolan.org/?p=vlc/vlc-3.0.git;a=commit;h=72afe7ebd8305bf4f5360293b8621cde52ec506b
      script_set_attribute(
        attribute:"see_also",
        value:"http://www.nessus.org/u?64105146"
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://www.videolan.org/security/sb-vlc309.html"
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://security.gentoo.org/glsa/202005-11"
      );
      script_set_attribute(
        attribute:"solution",
        value:
    "All VLC users should upgrade to the latest version:
          # emerge --sync
          # emerge --ask --oneshot --verbose '>=media-video/vlc-3.0.10'"
      );
      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:L/AC:L/PR:N/UI:R/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-2019-19721");
      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:gentoo:linux:vlc");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:gentoo:linux");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2020/05/15");
      script_set_attribute(attribute:"patch_publication_date", value:"2020/05/14");
      script_set_attribute(attribute:"plugin_publication_date", value:"2020/05/15");
      script_set_attribute(attribute:"generated_plugin", value:"current");
      script_set_attribute(attribute:"stig_severity", value:"II");
      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:"Gentoo Local Security Checks");
    
      script_dependencies("ssh_get_info.nasl");
      script_require_keys("Host/local_checks_enabled", "Host/Gentoo/release", "Host/Gentoo/qpkg-list");
    
      exit(0);
    }
    
    
    include("audit.inc");
    include("global_settings.inc");
    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);
    
    
    flag = 0;
    
    if (qpkg_check(package:"media-video/vlc", unaffected:make_list("ge 3.0.10"), vulnerable:make_list("lt 3.0.10"))) flag++;
    
    if (flag)
    {
      if (report_verbosity > 0) security_warning(port:0, extra:qpkg_report_get());
      else security_warning(0);
      exit(0);
    }
    else
    {
      tested = qpkg_tests_get();
      if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
      else audit(AUDIT_PACKAGE_NOT_INSTALLED, "VLC");
    }
    
  • NASL familyWindows
    NASL idVLC_3_0_9.NASL
    descriptionThe version of VLC media player installed on the remote Windows host is prior to 3.0.9. It is, therefore, affected by multiple vulnerabilities: - An exploitable denial-of-service vulnerability exists in the resource record-parsing functionality of Videolabs libmicrodns 0.1.0. When parsing compressed labels in mDNS messages, the compression pointer is followed without checking for recursion, leading to a denial of service. An attacker can send an mDNS message to trigger this vulnerability (CVE-2020-6071). - An exploitable code execution vulnerability exists in the label-parsing functionality of Videolabs libmicrodns 0.1.0. When parsing compressed labels in mDNS messages, the rr_decode function
    last seen2020-05-15
    modified2020-05-08
    plugin id136422
    published2020-05-08
    reporterThis script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/136422
    titleVLC < 3.0.9 Multiple Vulnerabilities
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    
    #
    # (C) Tenable Network Security, Inc.
    #
    
    include('compat.inc');
    
    if (description)
    {
      script_id(136422);
      script_version("1.3");
      script_set_attribute(attribute:"plugin_modification_date", value:"2020/05/13");
    
      script_cve_id(
        "CVE-2019-19721",
        "CVE-2020-6071",
        "CVE-2020-6072",
        "CVE-2020-6073",
        "CVE-2020-6077",
        "CVE-2020-6078",
        "CVE-2020-6079"
      );
      script_xref(name:"IAVB", value:"2020-B-0025");
    
      script_name(english:"VLC < 3.0.9 Multiple Vulnerabilities");
    
      script_set_attribute(attribute:"synopsis", value:
    "The remote Windows host contains a media player that is affected by multiple vulnerabilities.");
      script_set_attribute(attribute:"description", value:
    "The version of VLC media player installed on the remote Windows host is prior to 3.0.9. It is, therefore, affected by 
    multiple vulnerabilities:
    
      - An exploitable denial-of-service vulnerability exists in the resource record-parsing functionality of Videolabs 
        libmicrodns 0.1.0. When parsing compressed labels in mDNS messages, the compression pointer is followed without checking 
        for recursion, leading to a denial of service. An attacker can send an mDNS message to trigger this vulnerability 
        (CVE-2020-6071).     
    
      - An exploitable code execution vulnerability exists in the label-parsing functionality of Videolabs libmicrodns 0.1.0. 
        When parsing compressed labels in mDNS messages, the rr_decode function's return value is not checked, leading to a 
        double free that could be exploited to execute arbitrary code. An attacker can send an mDNS message to trigger this 
        vulnerability (CVE-2020-6072).
    
      - An exploitable denial-of-service vulnerability exists in the TXT record-parsing functionality of Videolabs libmicrodns 0.1.0. 
        When parsing the RDATA section in a TXT record in mDNS messages, multiple integer overflows can be triggered, leading to a denial 
        of service. An attacker can send an mDNS message to trigger this vulnerability (CVE-2020-6073).
    
      - An exploitable denial-of-service vulnerability exists in the message-parsing functionality of Videolabs libmicrodns 0.1.0. 
        When parsing mDNS messages, the implementation does not properly keep track of the available data in the message, possibly leading 
        to an out-of-bounds read that would result in a denial of service. An attacker can send an mDNS message to trigger this 
        vulnerability (CVE-2020-6077).
    
      - An exploitable denial-of-service vulnerability exists in the message-parsing functionality of Videolabs libmicrodns 0.1.0. 
        When parsing mDNS messages in mdns_recv, the return value of the mdns_read_header function is not checked, leading to an uninitialized 
        variable usage that eventually results in a null pointer dereference, leading to service crash. An attacker can send a series of 
        mDNS messages to trigger this vulnerability (CVE-2020-6078).
    
      - An exploitable denial-of-service vulnerability exists in the resource allocation handling of Videolabs libmicrodns 0.1.0. 
        When encountering errors while parsing mDNS messages, some allocated data is not freed, possibly leading to a denial-of-service 
        condition via resource exhaustion. An attacker can send one mDNS message repeatedly to trigger this vulnerability through decoding 
        of the domain name performed by rr_decode (CVE-2020-6079).");
      script_set_attribute(attribute:"see_also", value:"https://www.videolan.org/security/sb-vlc309.html");
      script_set_attribute(attribute:"solution", value:
    "Upgrade to VLC version 3.0.9 or later.");
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/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-6072");
    
      script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
    
      script_set_attribute(attribute:"vuln_publication_date", value:"2020/03/24");
      script_set_attribute(attribute:"patch_publication_date", value:"2020/03/24");
      script_set_attribute(attribute:"plugin_publication_date", value:"2020/05/08");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"cpe:/a:videolan:vlc_media_player");
      script_set_attribute(attribute:"stig_severity", value:"II");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_family(english:"Windows");
    
      script_copyright(english:"This script is Copyright (C) 2020 and is owned by Tenable, Inc. or an Affiliate thereof.");
    
      script_dependencies("vlc_installed.nasl");
      script_require_keys("SMB/VLC/Version");
    
      exit(0);
    }
    
    include('vcf.inc');
    
    app_info = vcf::get_app_info(app:'VLC media player', win_local:TRUE);
    
    constraints = [{'fixed_version':'3.0.9'}];
    
    vcf::check_version_and_report(app_info:app_info, constraints:constraints, severity:SECURITY_HOLE);