Junos LDP DoS Vulnerability

2016-01-18T00:00:00
ID OPENVAS:1361412562310106061
Type openvas
Reporter This script is Copyright (C) 2016 Greenbone Networks GmbH
Modified 2018-11-15T00:00:00

Description

Junos OS is prone to a Denial of Service vulnerability with LDP enabled.

                                        
                                            ###############################################################################
# OpenVAS Vulnerability Test
# $Id: gb_junos_cve-2016-1257.nasl 12363 2018-11-15 09:51:15Z asteins $
#
# Junos LDP DoS Vulnerability
#
# Authors:
# Christian Kuersteiner <christian.kuersteiner@greenbone.net>
#
# Copyright:
# Copyright (c) 2016 Greenbone Networks GmbH
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
###############################################################################

CPE = 'cpe:/o:juniper:junos';

if (description)
{
  script_oid("1.3.6.1.4.1.25623.1.0.106061");
  script_version("$Revision: 12363 $");
  script_tag(name:"last_modification", value:"$Date: 2018-11-15 10:51:15 +0100 (Thu, 15 Nov 2018) $");
  script_tag(name:"creation_date", value:"2016-01-18 09:17:30 +0700 (Mon, 18 Jan 2016)");
  script_tag(name:"cvss_base", value:"4.3");
  script_tag(name:"cvss_base_vector", value:"AV:N/AC:M/Au:N/C:N/I:N/A:P");

  script_tag(name:"qod_type", value:"package");

  script_tag(name:"solution_type", value:"VendorFix");

  script_cve_id("CVE-2016-1257");

  script_name("Junos LDP DoS Vulnerability");

  script_category(ACT_GATHER_INFO);

  script_family("JunOS Local Security Checks");
  script_copyright("This script is Copyright (C) 2016 Greenbone Networks GmbH");
  script_dependencies("gb_ssh_junos_get_version.nasl", "gb_junos_snmp_version.nasl");
  script_mandatory_keys("Junos/Version");

  script_tag(name:"summary", value:"Junos OS is prone to a Denial of Service vulnerability with
LDP enabled.");

  script_tag(name:"vuldetect", value:"Checks if a vulnerable OS build is present on the target host.");

  script_tag(name:"insight", value:"If LDP is enabled via the 'protocols ldp' configuration option
on a device running Junos OS, receipt of a crafted LDP packet may cause the RPD routing process to crash
and restart.  The interface on which the packet arrives does not need to have LDP enabled.  As long as
one interface to the peer has LDP enabled, the packet will be sent to Routing Engine for further
processing, exposing the router to a denial of service (RPD crash).");

  script_tag(name:"impact", value:"An attacker can cause a denial of service condition by crashing
the RPD routing process.");

  script_tag(name:"affected", value:"Junos OS 13.2, 13.3, 14.1, 14.2 and 15.1");

  script_tag(name:"solution", value:"New builds of Junos OS software are available from Juniper. As
a workaround disable LDP.");

  script_xref(name:"URL", value:"http://kb.juniper.net/JSA10715");

  exit(0);
}

include("host_details.inc");
include("revisions-lib.inc");

if (!version = get_app_version(cpe: CPE, nofork: TRUE))
  exit(0);

if (version =~ "^13") {
  if ((revcomp(a: version, b: "13.3R7-S3") < 0) &&
      (revcomp(a: version, b: "13.2R5") >= 0)) {
    security_message(port: 0, data: version);
    exit(0);
  }
}

if (version =~ "^14") {
  if (revcomp(a: version, b: "14.1R3-S9") < 0) {
    security_message(port: 0, data: version);
    exit(0);
  }
  else if ((revcomp(a: version, b: "14.1X51-D65") < 0) &&
           (revcomp(a: version, b: "14.1X51") >= 0)) {
    security_message(port: 0, data: version);
    exit(0);
  }
  else if ((revcomp(a: version, b: "14.1X53-D12") < 0) &&
           (revcomp(a: version, b: "14.1X53") >= 0)) {
    security_message(port: 0, data: version);
    exit(0);
  }
  else if ((revcomp(a: version, b: "14.2R3-S4") < 0) &&
           (revcomp(a: version, b: "14.2") >= 0)) {
    security_message(port: 0, data: version);
    exit(0);
  }
}

if (version =~ "^15") {
  if (revcomp(a: version, b: "15.1R3") < 0) {
    security_message(port: 0, data: version);
    exit(0);
  }
  else if ((revcomp(a: version, b: "15.1X49-D40") < 0) &&
           (revcomp(a: version, b: "15.1X49") >= 0)) {
    security_message(port: 0, data: version);
    exit(0);
  }
}

exit(99);