Cisco has issued a security advisory revealing that it mis-coded the implementation of a new password hashing algorithm.
Its “Type 4” password implementation was supposed to salt passwords and then run them through 1,000 iterations of SHA-256 for storage, following the Password-Based Key Derivation Function (PBKDF) version 2 described in RFC 2898.
In what Cisco calls an “implementation issue”, its engineers forgot to salt passwords, and set the SHA-256 iteration count to 1. As its advisory states: “This approach causes a Type 4 password to be less resilient to brute-force attacks than a Type 5 password of equivalent complexity.”
The problem was discovered by Philipp Schmidt and Jens Steube from the Hashcat project. Because of the weak protection, they were able to decode a hash that had been posted to inetpro.org, and as noted by Ars, enough information has leaked to permit “millions” of hashes to be cracked in hours, if anyone gets their hands on the stored hashes.
The vulnerability affects kit running Cisco IOS and Cisco IOS XE releases based on the Cisco IOS 15 code base, the advisory says, along with instructions for determining whether a user is running vulnerable code.
Adding insult to injury, the implementation of the broken Type 4 password also disabled the Type 5 hashing it replaced. From the advisory:
“A device running a Cisco IOS or IOS XE release with support for Type 4 passwords lost the capability to create a Type 5 password from a user-provided plaintext password.
“Backward compatibility problems may arise when downgrading from a device running a Cisco IOS or IOS XE release with Type 4 password support and Type 4 passwords configured to a Cisco IOS or Cisco IOS XE release that does not support Type 4 passwords. Depending on the specific device configuration, the administrator may not be able to log in to the device or to change into privileged EXEC mode, requiring a password recovery process to be performed.”
Cisco says a new password type will be introduced. “This will allow Cisco customers to gradually migrate to the new password type, while allowing them to use the existing syntax to preserve backward compatibility. The exact syntax for the new commands is yet to be determined.” ®