OpenSSH < 3.6.1p2 Multiple Vulnerabilities

2011-11-18T00:00:00
ID OPENSSH_361P2.NASL
Type nessus
Reporter This script is Copyright (C) 2011-2018 Tenable Network Security, Inc.
Modified 2018-11-15T00:00:00

Description

According to its banner, the version of OpenSSH running on the remote host is ealier than 3.6.1p2. When compiled for the AIX operating system with a compiler other than that of the native AIX compiler, an error exists that can allow dynamic libraries in the current directory to be loaded before dynamic libraries in the system paths. This behavior can allow local users to escalate privileges by creating, loading and executing their own malicious replacement libraries.

                                        
                                            #
# (C) Tenable Network Security, Inc.
#


include("compat.inc");


if (description)
{
  script_id(17702);
  script_version("1.4");
  script_cvs_date("Date: 2018/11/15 20:50:21");

  script_cve_id("CVE-2002-0746");

  script_name(english:"OpenSSH < 3.6.1p2 Multiple Vulnerabilities");
  script_summary(english:"Checks SSH banner");

  script_set_attribute(
    attribute:"synopsis",
    value:
"The SSH server running on the remote host is affected by multiple
vulnerabilities."
  );
  script_set_attribute(
    attribute:"description",
    value:
"According to its banner, the version of OpenSSH running on the remote
host is ealier than 3.6.1p2.  When compiled for the AIX operating
system with a compiler other than that of the native AIX compiler, an
error exists that can allow dynamic libraries in the current directory
to be loaded before dynamic libraries in the system paths.  This
behavior can allow local users to escalate privileges by creating,
loading and executing their own malicious replacement libraries.");
  script_set_attribute(attribute:"see_also", value:"https://www.openssh.com/txt/release-3.6.1p2");
  script_set_attribute(attribute:"see_also", value:"https://www.securityfocus.com/archive/1/320038/2003-04-25/2003-05-01/0");
  script_set_attribute(attribute:"solution", value:"Upgrade to OpenSSH 3.6.1p2 or later.");
  script_set_cvss_base_vector("CVSS2#AV:L/AC:L/Au:N/C:C/I:C/A:C");

  script_set_attribute(attribute:"vuln_publication_date", value:"2003/04/28");
  script_set_attribute(attribute:"patch_publication_date", value:"2003/04/28");
  script_set_attribute(attribute:"plugin_publication_date", value:"2011/11/18");

  script_set_attribute(attribute:"plugin_type", value:"remote");
  script_set_attribute(attribute:"cpe", value:"cpe:/a:openbsd:openssh");
  script_end_attributes();

  script_category(ACT_GATHER_INFO);
  script_family(english:"Denial of Service");

  script_copyright(english:"This script is Copyright (C) 2011-2018 Tenable Network Security, Inc.");

  script_dependencies("ssh_detect.nasl");
  script_require_ports("Services/ssh");

  exit(0);
}

include("backport.inc");
include("global_settings.inc");
include("misc_func.inc");

# Ensure the port is open.
port = get_service(svc:"ssh", exit_on_fail:TRUE);

# Get banner for service.
banner = get_kb_item_or_exit("SSH/banner/"+port);
bp_banner = tolower(get_backport_banner(banner:banner));
if ("openssh" >!< bp_banner) exit(0, "The SSH service on port "+port+" is not OpenSSH.");
if (backported) exit(1, "The banner from the OpenSSH server on port "+port+" indicates patches may have been backported.");

# Check the version in the backported banner.
match = eregmatch(string:bp_banner, pattern:"openssh[-_]([0-9][-._0-9a-z]+)");
if (isnull(match)) exit(1, "Could not parse the version string in the banner from port "+port+".");
version = match[1];

match = eregmatch(string:version, pattern:"([0-9.]+)(p([0-9]+))?");
if (isnull(match)) exit(1, 'Error parsing version: ' + version);

ver = split(match[1], sep:'.', keep:FALSE);
for (i = 0; i < max_index(ver); i++)
  ver[i] = int(ver[i]);

if (
  (ver[0] < 3) ||
  (ver[0] == 3 && ver[1] < 6) ||
  (ver[0] == 3 && ver[1] == 6 && ver[2] < 1) ||
  (ver[0] == 3 && ver[1] == 6 && ver[2] == 1 && isnull(match[3])) ||
  (ver[0] == 3 && ver[1] == 6 && ver[2] == 1 && !isnull(match[3]) && int(match[3]) < 2)
)
{
  if (report_verbosity > 0)
  {
    report =
      '\n  Version source    : ' + banner +
      '\n  Installed version : ' + version +
      '\n  Fixed version     : 3.6.1p2\n';
    security_hole(port:port, extra:report);
  }
  else security_hole(port);
  exit(0);
}
else exit(0, "The OpenSSH version "+version+" server listening on port "+port+" is not affected.");