CVE-2024-39701 Directus Incorrectly handles _in` filter

Medium 6.3 Published Updated

Attackers can bypass access control rules by exploiting improper handling of empty arrays in filter operators, allowing unauthorized data access.

Exploited in the wild
Not known
Login needed
Any signed-in user
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2024-39701?

CVE-2024-39701 is a medium-severity missing authorization vulnerability in Monospace Directus, published on 8 Jul 2024. Any signed-in user can exploit it over the network, with no action from the victim.

Official description

Directus is a real-time API and App dashboard for managing SQL database content. Directus >=9.23.0, <=v10.5.3 improperly handles _in, _nin operators. It evaluates empty arrays as valid so expressions like {"role": {"_in": $CURRENT_USER.some_field}} would evaluate to true allowing the request to pass. This results in Broken Access Control because the rule fails to do what it was intended to do: Pass rule if **field** matches any of the **values**. This vulnerability is fixed in 10.6.0.

Weakness: CWE-284

Which versions are affected by CVE-2024-39701?

2 open source packages ship an affected version, including directus. It affects 1 product.

PackageAffectedFixed in
directus npmFrom 9.23.010.6.0
directus npmFrom 9.23.010.6.0

Products include Monospace Directus.

How do I fix CVE-2024-39701?

Upgrade directus to 10.6.0 or later.

Upgrade, and check permissions on every request on the server, not only in the interface. More about Missing authorization.

Is CVE-2024-39701 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2024-39701 exists.

All Monospace Directus vulnerabilities

Sources

Also known as GHSA-hxgm-ghmv-xjjm.

Is CVE-2024-39701 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free