CVE-2024-45042: Github.com/ory/kratos Ory Kratos's Setting Required_aal `highest_available` Vulnerability
MODERATECVE-2024-45042 is a MODERATE (CVSS 4.4) ory kratos's setting required_aal `highest_available` vulnerability (CWE-287: Improper Authentication) affecting Github.com/ory/kratos libraries in the Go ecosystem. The issue involves ory kratos's setting required_aal `highest_available` does not properly respect code + mfa credentials. Remediation is available by upgrading affected packages to version 1.3.0.
CVE-2024-45042 at a Glance
Security Impact
CVSS: 4.4
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N).
How to Fix CVE-2024-45042
To remediate this vulnerability, upgrade all affected Github.com/ory/kratos dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade github.com/ory/kratos to 1.3.0
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for github.com/ory/kratos
How to Check if You Are Affected
To determine whether your application is affected by CVE-2024-45042, inspect your project dependencies for Github.com/ory/kratos:
inspect dependencies for github.com/ory/kratos
Analyze the terminal output to locate any version of Github.com/ory/kratos in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.3.0), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-287: Improper Authentication, where when an actor claims to have a given identity, the product does not prove or insufficiently proves that the claim is correct. In Github.com/ory/kratos, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2024-45042 Affected Github.com/ory/kratos Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
github.com/ory/kratos
|
Go |
< 1.3.0
|
1.3.0
|
References
Frequently Asked Questions
What is CVE-2024-45042?
Which Github.com/ory/kratos versions are affected?
What version fixes CVE-2024-45042?
Is github.com/ory/kratos affected?
What is the CVSS score of CVE-2024-45042?
What CWE is associated with CVE-2024-45042?
How can I check Go dependencies for CVE-2024-45042?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-wc43-73w7-x2f5",
"modified" : "2024-09-26T21:11:01Z",
"published" : "2024-09-26T17:49:17Z",
"aliases" : [ "CVE-2024-45042" ],
"summary" : "Ory Kratos's setting required_aal `highest_available` does not properly respect code + mfa credentials",
"details" : "## Preconditions\n\n- The `code` login method is enabled with the `passwordless_enabled` flag set to `true` .\n- A 2FA method such as `totp` is enabled.\n- `required_aal` of the whomai check or the settings flow is set to `highest_available`. AAL stands for Authenticator Assurance Levels and can range from 0 (no factor) to 2 (two factors).\n- A user uses the `code` method as the **only** login method available. They do not have a password or any other first factor credential enabled.\n- The user has 2FA enabled.\n- The user’s `available_aal` is incorrectly stored in the database as `aal1` or `aal0` or `NULL`.\n- A user signs in using the code method, but does not complete the 2FA challenge.\n\n**Example server configuration**\n\nBelow you will find an vulnerable example configuration. Keep in mind that, for the account to be vulnerable, the account must have no first factor except the `code` method enabled plus a second factor.\n\n```\nselfservice:\n methods:\n code:\n # The `code` login method is enabled with the `passwordless_enabled` flag set to `true`\n passwordless_enabled: true\n totp:\n # 2FA method such as `totp` is enabled\n enabled: true\n flows:\n settings:\n # This is set\n required_aal: highest_available\nsession:\n whoami:\n # Or this\n required_aal: highest_available\n```\n\n## Impact\n\nGiven the preconditions, the `highest_available` setting will incorrectly assume that the identity’s highest available AAL is `aal1` even though it really is `aal2`. This means that the `highest_available` configuration will act as if the user has only one factor set up, for that particular user. This means that they can call the settings and whoami endpoint without a `aal2` session, even though that should be disallowed.\n\nAn attacker would need to steal or guess a valid login OTP of a user who has only OTP for login enabled and who has an incorrect `available_aal` value stored, to exploit this vulnerability.\n\nAll other aspects of the session (e.g. the session’s aal) are not impacted by this issue.\n\nOn Ory Network, only 0,00066% of registered users were affected by this issue, and most of those users appeared to be test users. Their respective AAL values have since been updated and they are no longer vulnerable to this attack.\n\n### Patches\n\nVersion 1.3.0 is not affected by this issue.\n\n### Workarounds\n\nIf you require 2FA please disable the passwordless code login method. If that is not possible, check the sessions `aal` to identify if the user has `aal1` or `aal2`.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:N/A:N"
}, {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:N/AC:H/AT:N/PR:H/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/ory/kratos"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "1.3.0"
} ]
} ],
"database_specific" : {
"last_known_affected_version_range" : "<= 1.2.0"
}
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/ory/kratos/security/advisories/GHSA-wc43-73w7-x2f5"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2024-45042"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/ory/kratos"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-287" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2024-09-26T17:49:17Z",
"nvd_published_at" : "2024-09-26T18:15:07Z"
}
}