The Nearly Plaintext Passwords
Our stories are based on real events encountered by Raxis engineers. Some details have been altered or omitted to protect customer identities.
While penetration tests act like a hacker poking at systems and services in unexpected ways, Raxis’ code reviewers pull up their sleeves and investigate the code that does the work behind the scenes in detail. These engagements are after the same types of exploitable vulnerabilities, but they come at them in different ways.
As the Raxis team carefully examined the code for a retail application, they realized that the code for storing and verifying passwords used a custom encryption library implemented by our customer in the same code base. The library encrypted passwords rather than hashing them – meaning that they could be decrypted as well – and derived the encryption key from a static passphrase stored within the source code. This meant that every stored password could be decrypted back to plaintext.
Because the source code for the retail application (including database queries and updates that included customer PII like credit card numbers and addresses) was stored in the same git repository as the encrypted password codebase, anyone with access to the company git repository would have the tools to decrypt all customer passwords to plaintext useable passwords.
While this could have become a company-crushing hack for our customer, with Raxis’ report in hand, their team eliminated the password encryption code library and began using a widely-used authentication tool that used password hashes and no static passphrases. Customer PII and our customer’s reputation were now secure.