Vulnerabilities > CVE-2004-0649

047910
CVSS 10.0 - CRITICAL
Attack vector
NETWORK
Attack complexity
LOW
Privileges required
NONE
Confidentiality impact
COMPLETE
Integrity impact
COMPLETE
Availability impact
COMPLETE
network
low complexity
l2tpd
gentoo
critical
nessus

Summary

Buffer overflow in write_packet in control.c for l2tpd may allow remote attackers to execute arbitrary code.

Nessus

  • NASL familyGentoo Local Security Checks
    NASL idGENTOO_GLSA-200407-17.NASL
    descriptionThe remote host is affected by the vulnerability described in GLSA-200407-17 (l2tpd: Buffer overflow) Thomas Walpuski discovered a buffer overflow that may be exploitable by sending a specially crafted packet. In order to exploit the vulnerable code, an attacker would need to fake the establishment of an L2TP tunnel. Impact : A remote attacker may be able to execute arbitrary code with the privileges of the user running l2tpd. Workaround : There is no known workaround for this vulnerability.
    last seen2020-06-01
    modified2020-06-02
    plugin id14550
    published2004-08-30
    reporterThis script is Copyright (C) 2004-2019 and is owned by Tenable, Inc. or an Affiliate thereof.
    sourcehttps://www.tenable.com/plugins/nessus/14550
    titleGLSA-200407-17 : l2tpd: Buffer overflow
    code
    #%NASL_MIN_LEVEL 80502
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were
    # extracted from Gentoo Linux Security Advisory GLSA 200407-17.
    #
    # The advisory text is Copyright (C) 2001-2018 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(14550);
      script_version("1.16");
      script_cvs_date("Date: 2019/08/02 13:32:41");
    
      script_cve_id("CVE-2004-0649");
      script_xref(name:"GLSA", value:"200407-17");
    
      script_name(english:"GLSA-200407-17 : l2tpd: 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-200407-17
    (l2tpd: Buffer overflow)
    
        Thomas Walpuski discovered a buffer overflow that may be exploitable by
        sending a specially crafted packet. In order to exploit the vulnerable
        code, an attacker would need to fake the establishment of an L2TP tunnel.
      
    Impact :
    
        A remote attacker may be able to execute arbitrary code with the privileges
        of the user running l2tpd.
      
    Workaround :
    
        There is no known workaround for this vulnerability."
      );
      # http://seclists.org/lists/fulldisclosure/2004/Jun/0094.html
      script_set_attribute(
        attribute:"see_also",
        value:"https://seclists.org/lists/fulldisclosure/2004/Jun/0094.html"
      );
      script_set_attribute(
        attribute:"see_also",
        value:"https://security.gentoo.org/glsa/200407-17"
      );
      script_set_attribute(
        attribute:"solution", 
        value:
    "All users are recommended to upgrade to the latest stable version:
        # emerge sync
        # emerge -pv '>=net-l2tpd-0.69-r2'
        # emerge '>=net-l2tpd-0.69-r2'"
      );
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:gentoo:linux:l2tpd");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:gentoo:linux");
    
      script_set_attribute(attribute:"patch_publication_date", value:"2004/07/22");
      script_set_attribute(attribute:"plugin_publication_date", value:"2004/08/30");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_copyright(english:"This script is Copyright (C) 2004-2019 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:"net-dialup/l2tpd", unaffected:make_list("ge 0.69-r2"), vulnerable:make_list("lt 0.69-r2"))) flag++;
    
    if (flag)
    {
      if (report_verbosity > 0) security_hole(port:0, extra:qpkg_report_get());
      else security_hole(0);
      exit(0);
    }
    else
    {
      tested = qpkg_tests_get();
      if (tested) audit(AUDIT_PACKAGE_NOT_AFFECTED, tested);
      else audit(AUDIT_PACKAGE_NOT_INSTALLED, "l2tpd");
    }
    
  • NASL familyDebian Local Security Checks
    NASL idDEBIAN_DSA-530.NASL
    descriptionThomas Walpuski reported a buffer overflow in l2tpd, an implementation of the layer 2 tunneling protocol, whereby a remote attacker could potentially cause arbitrary code to be executed by transmitting a specially crafted packet. The exploitability of this vulnerability has not been verified.
    last seen2020-06-01
    modified2020-06-02
    plugin id15367
    published2004-09-29
    reporterThis script is Copyright (C) 2004-2019 Tenable Network Security, Inc.
    sourcehttps://www.tenable.com/plugins/nessus/15367
    titleDebian DSA-530-1 : l2tpd - buffer overflow
    code
    #%NASL_MIN_LEVEL 80502
    
    #
    # (C) Tenable Network Security, Inc.
    #
    # The descriptive text and package checks in this plugin were  
    # extracted from Debian Security Advisory DSA-530. The text 
    # itself is copyright (C) Software in the Public Interest, Inc.
    #
    
    include("compat.inc");
    
    if (description)
    {
      script_id(15367);
      script_version("1.18");
      script_cvs_date("Date: 2019/08/02 13:32:18");
    
      script_cve_id("CVE-2004-0649");
      script_xref(name:"DSA", value:"530");
    
      script_name(english:"Debian DSA-530-1 : l2tpd - buffer overflow");
      script_summary(english:"Checks dpkg output for the updated package");
    
      script_set_attribute(
        attribute:"synopsis", 
        value:"The remote Debian host is missing a security-related update."
      );
      script_set_attribute(
        attribute:"description", 
        value:
    "Thomas Walpuski reported a buffer overflow in l2tpd, an implementation
    of the layer 2 tunneling protocol, whereby a remote attacker could
    potentially cause arbitrary code to be executed by transmitting a
    specially crafted packet. The exploitability of this vulnerability has
    not been verified."
      );
      script_set_attribute(
        attribute:"see_also",
        value:"http://www.debian.org/security/2004/dsa-530"
      );
      script_set_attribute(
        attribute:"solution", 
        value:
    "For the current stable distribution (woody), this problem has been
    fixed in version 0.67-1.2.
    
    We recommend that you update your l2tpd package."
      );
      script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C");
    
      script_set_attribute(attribute:"plugin_type", value:"local");
      script_set_attribute(attribute:"cpe", value:"p-cpe:/a:debian:debian_linux:l2tpd");
      script_set_attribute(attribute:"cpe", value:"cpe:/o:debian:debian_linux:3.0");
    
      script_set_attribute(attribute:"patch_publication_date", value:"2004/07/17");
      script_set_attribute(attribute:"plugin_publication_date", value:"2004/09/29");
      script_end_attributes();
    
      script_category(ACT_GATHER_INFO);
      script_copyright(english:"This script is Copyright (C) 2004-2019 Tenable Network Security, Inc.");
      script_family(english:"Debian Local Security Checks");
    
      script_dependencies("ssh_get_info.nasl");
      script_require_keys("Host/local_checks_enabled", "Host/Debian/release", "Host/Debian/dpkg-l");
    
      exit(0);
    }
    
    
    include("audit.inc");
    include("debian_package.inc");
    
    
    if (!get_kb_item("Host/local_checks_enabled")) audit(AUDIT_LOCAL_CHECKS_NOT_ENABLED);
    if (!get_kb_item("Host/Debian/release")) audit(AUDIT_OS_NOT, "Debian");
    if (!get_kb_item("Host/Debian/dpkg-l")) audit(AUDIT_PACKAGE_LIST_MISSING);
    
    
    flag = 0;
    if (deb_check(release:"3.0", prefix:"l2tpd", reference:"0.67-1.2")) flag++;
    
    if (flag)
    {
      if (report_verbosity > 0) security_hole(port:0, extra:deb_report_get());
      else security_hole(0);
      exit(0);
    }
    else audit(AUDIT_HOST_NOT, "affected");
    
  • NASL familyGain a shell remotely
    NASL idL2TPD_OVERFLOW2.NASL
    descriptionThe remote host is running a version of l2tpd which is older or equal to 0.68. This version is vulnerable to a buffer overflow which might allow an attacker to execute arbitrary commands on the remote host with super-user privileges.
    last seen2020-06-01
    modified2020-06-02
    plugin id13659
    published2004-07-22
    reporterThis script is Copyright (C) 2004-2018 Tenable Network Security, Inc.
    sourcehttps://www.tenable.com/plugins/nessus/13659
    titlel2tpd < 0.69 control.c write_packet Function Remote Overflow
    code
    #
    # (C) Tenable Network Security, Inc.
    #
    #
    
    
    include("compat.inc");
    
    if (description)
    {
     script_id(13659);
     script_version ("1.15");
     script_cve_id("CVE-2004-0649");
     script_bugtraq_id(10466);
     
     script_name(english:"l2tpd < 0.69 control.c write_packet Function Remote Overflow");
    
     script_set_attribute(attribute:"synopsis", value:
    "The remote host is running a network tunneling application that is 
    affected by a buffer overflow vulnerability." );
     script_set_attribute(attribute:"description", value:
    "The remote host is running a version of l2tpd which is older or
    equal to 0.68. 
    
    This version is vulnerable to a buffer overflow which might allow an
    attacker to execute arbitrary commands on the remote host with 
    super-user privileges." );
     script_set_attribute(attribute:"see_also", value:"https://seclists.org/bugtraq/2004/Jun/73" );
     script_set_attribute(attribute:"solution", value:
    "Upgrade to l2tpd 0.69 or later." );
     script_set_cvss_base_vector("CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C");
     script_set_cvss_temporal_vector("CVSS2#E:U/RL:OF/RC:C");
     script_set_attribute(attribute:"exploitability_ease", value:"No known exploits are available");
     script_set_attribute(attribute:"exploit_available", value:"false");
    
     script_set_attribute(attribute:"plugin_publication_date", value: "2004/07/22");
     script_set_attribute(attribute:"vuln_publication_date", value: "2004/06/07");
     script_cvs_date("Date: 2018/11/15 20:50:22");
    script_set_attribute(attribute:"plugin_type", value:"remote");
    script_end_attributes();
    
     script_summary(english:"Determines the version of the remote l2tpd");
     script_category(ACT_GATHER_INFO);
     script_family(english:"Gain a shell remotely");
     script_copyright(english:"This script is Copyright (C) 2004-2018 Tenable Network Security, Inc.");
     script_dependencie("l2tp_detection.nasl");
     script_require_ports("Services/udp/l2tp");
     exit(0);
    }
    
    if (! get_kb_item("Services/udp/l2tp") ) exit(0);
    port = 1701;
    if (! get_udp_port_state(port)) exit(0, "UDP port "+port+" is not open.");
    		 
    function find_firmware(rep)
    {
     local_var firmware, i, len;
     
     for(i=12;i<strlen(rep);i++)
     { 
      len = ord(rep[i]) * 256 + ord(rep[i+1]);
      if(ord(rep[i]) & 0x80)len -= 0x80 * 256;
      if(ord(rep[i+5]) == 6)
      {
       firmware = ord(rep[i+6]) * 256 + ord(rep[i+7]);
       return firmware;
      }
      else i += len - 1;
     }
     return NULL;
    }
    
    req =  raw_string(0xC8, 2, 0, 20, 0, 0, 0, 0,0,0,0,0,0,8, 0,0,0,0,0,0);
    
    		 
    soc = open_sock_udp(port);
    send(socket:soc, data:req);
    r = recv(socket:soc, length:1024);
    if(!r)exit(0);
    close(soc);
    if(("l2tpd" >< r) || ("Adtran" >< r))
    {
     firmware = find_firmware(rep:r);
     hi = firmware / 256;
     lo = firmware % 256;
     
     if((hi == 0x06)  && (lo < 0x90))security_hole(port:port, proto:"udp");
    }