Vulnerabilities > CVE-2004-0649

047910
CVSS 0.0 - NONE
Attack vector
UNKNOWN
Attack complexity
UNKNOWN
Privileges required
UNKNOWN
Confidentiality impact
UNKNOWN
Integrity impact
UNKNOWN
Availability impact
UNKNOWN

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");
    }