Top 10 2014-I2 Insufficient Authentication/Authorization

Back To The Internet of Things Top 10

Consider anyone who has access to the web interface, mobile interface or cloud interface including internal and external users.

Attacker uses weak passwords, insecure password recovery mechanisms, poorly protected credentials or lack of granular access control to access a particular interface. Attack could come from external or internal users.

Authentication may not be sufficient when weak passwords are used or are poorly protected. Insufficient authentication/authorization is prevalent as it is assumed that interfaces will only be exposed to users on internal networks and not to external users on other networks. Deficiencies are often found to be present across all interfaces. Many Issues with authentication/authorization are easy to discover when examining the interface manually and can also be discovered via automated testing.

Insufficient authentication/authorization can result in data loss or corruption, lack of accountability, or denial of access and can lead to complete compromise of the device and/or user accounts.

Consider the business impact of compromised user accounts and possibly devices. All data could be stolen, modified, or deleted. Could your customers be harmed?

Checking for Insufficient Authentication includes:
 * Attempting to use simple passwords such as "1234" is a fast and easy way to determine if the password policy is sufficient across all interfaces
 * Manual testing can help identify instances where weak passwords are allowed or credentials are poorly protected
 * Testers can validate these issues by conducting dictionary or brute-force attacks against a valid user

Checking for Insufficient Authorization includes:
 * Reviewing the various interfaces to determine whether the interfaces allow for separation of roles. For example, all features will be accessible to administrators, but users will have a more limited set of features available.
 * Testers can validate these issues by reviewing access controls and testing for privilege escalation

Sufficient authentication/authorization requires:
 * 1) Ensuring complex password construction.
 * 2) Ensuring granular access control is in place when necessary.
 * 3) Ensuring credentials are properly protected.
 * 4) Implement two factor authentication where possible

Scenario #1: The interface only requires simple passwords.

Username = Bob; Password = 1234

Scenario #2: Username and password are poorly protected when transmitted over the network. Authorization: Basic YWRtaW46MTIzNA==

In the cases above, the attacker is able to either easily guess the password or is able to capture the credentials as they cross the network and decode it since the credentials are only protected using Base64 Encoding.