Description
When setting a new password for a user, the product does not require knowledge of the original password, or using another form of authentication.
This could be used by an attacker to change passwords for another user, thus gaining the privileges associated with that user.
Potential Impact
Access Control
Bypass Protection Mechanism, Gain Privileges or Assume Identity
Demonstrative Examples
$user = $_GET['user'];$pass = $_GET['pass'];$checkpass = $_GET['checkpass'];if ($pass == $checkpass) {SetUserPassword($user, $pass);}Mitigations & Prevention
When prompting for a password change, force the user to provide the original password in addition to the new password.
Do not use "forgotten password" functionality. But if you must, ensure that you are only providing information to the actual user, e.g. by using an email address or challenge question that the legitimate user already provided in the past; do not allow the current user to change this identity information until the correct password has been provided.
Real-World CVE Examples
| CVE ID | Description |
|---|---|
| CVE-2025-4903 | Router web interface allows unverified password change |
| CVE-2007-0681 | Web app allows remote attackers to change the passwords of arbitrary users without providing the original password, and possibly perform other unauthorized actions. |
| CVE-2000-0944 | Web application password change utility doesn't check the original password. |
Related Weaknesses
Taxonomy Mappings
- OWASP Top Ten 2004: A3 — Broken Authentication and Session Management
- Software Fault Patterns: SFP31 — Missing authentication
Frequently Asked Questions
What is CWE-620?
CWE-620 (Unverified Password Change) is a software weakness identified by MITRE's Common Weakness Enumeration. It is classified as a Base-level weakness. When setting a new password for a user, the product does not require knowledge of the original password, or using another form of authentication.
How can CWE-620 be exploited?
Attackers can exploit CWE-620 (Unverified Password Change) to bypass protection mechanism, gain privileges or assume identity. This weakness is typically introduced during the Architecture and Design, Implementation phase of software development.
How do I prevent CWE-620?
Key mitigations include: When prompting for a password change, force the user to provide the original password in addition to the new password.
What is the severity of CWE-620?
CWE-620 is classified as a Base-level weakness (Medium abstraction). It has been observed in 3 real-world CVEs.