Cloudanix VulnDB

CVE-2025-69277

Medium · 4.5

CVSS

4.5

EPSS

0.2%

Published

Dec 31, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

Some software using this encryption library may mistakenly accept invalid cryptographic data, which could weaken security in specialized applications until the library is updated.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
High
Impact
Data Tampering
Component
Library
Class
Cryptographic Weakness
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

This vulnerability is a cryptographic validation flaw in libsodium versions before commit ad3004ec8731730e93fcfbbc824e67eadc1c1bae. In atypical integration patterns, applications that pass attacker-controlled data to crypto_core_ed25519_is_valid_point may incorrectly treat some elliptic-curve points as valid even though they are not in the intended main Ed25519 cryptographic group. The direct impact depends heavily on how the application uses the validation result: in custom protocols, key-agreement logic, signature-related workflows, token systems, or identity-binding schemes, accepting non-main-group points can weaken cryptographic assumptions and may enable limited confidentiality or integrity compromise. This is not a typical remote code execution or memory-corruption issue, and exploitation requires a vulnerable application design that relies on this specific validation behavior with untrusted inputs.

Why it matters to the business

The main business risk is subtle compromise of systems that rely on custom cryptography built on libsodium, such as authentication, identity, signing, encryption, or secure messaging workflows. Affected organizations may face incorrect trust decisions, forged or weakened cryptographic operations, or exposure of sensitive data in narrowly affected implementations. The CVSS score is moderate and EPSS is very low, with no known CISA KEV listing or public exploit maturity reported, so broad opportunistic exploitation is unlikely; however, cryptographic flaws can be difficult to detect after the fact and should be prioritized for systems that process untrusted public keys, points, signatures, or protocol messages.

How an attack unfolds

An attacker first identifies an application or protocol that uses a vulnerable libsodium build and accepts attacker-controlled Ed25519 point data. The attacker then crafts elliptic-curve point values that are not in the expected main cryptographic group but may still be accepted by crypto_core_ed25519_is_valid_point in the affected version. If the application uses that validation result as a security boundary, the attacker can feed the malformed point into downstream custom cryptographic logic. Depending on the protocol design, this may allow the attacker to influence shared-secret derivation, bypass an input-validity check, weaken an identity or key-binding mechanism, or cause the application to make an incorrect authorization or trust decision. Exploitation is high-complexity and local in the assigned CVSS context, but risk increases where untrusted cryptographic material is accepted from users, peers, plugins, local services, or files.

How to fix it

Upgrade libsodium to a version that includes commit ad3004ec8731730e93fcfbbc824e67eadc1c1bae or a downstream package release containing that fix. For the affected Debian package entries, upgrade to the fixed package version 5.17.3-1 for Debian 12, Debian 13, and Debian 14 where applicable. Rebuild statically linked applications, containers, appliances, and language bindings that vendor or bundle libsodium, because updating the system library alone may not remediate embedded copies. Review custom cryptographic code that uses crypto_core_ed25519_is_valid_point with untrusted data and confirm that it enforces the intended group-membership, cofactor, and protocol-specific validation requirements. Where immediate upgrade is not possible, avoid treating crypto_core_ed25519_is_valid_point as a complete security decision for untrusted Ed25519 points, reject externally supplied points unless they are independently validated by fixed code, and restrict access to interfaces that accept attacker-controlled cryptographic material.

How to confirm the fix worked

Confirm that all deployed systems use a libsodium build containing commit ad3004ec8731730e93fcfbbc824e67eadc1c1bae or a downstream fixed package. On Debian-based systems, verify the installed package version is fixed according to the distribution advisory, specifically 5.17.3-1 or later for the listed affected Debian releases. Inventory statically linked binaries and containers by checking build manifests, SBOMs, package manager output, and embedded library metadata; do not rely only on the host operating-system package version. Validate source builds by confirming the repository commit is at or after ad3004ec8731730e93fcfbbc824e67eadc1c1bae. For applications with custom cryptography, add regression tests that feed known invalid or small-subgroup/non-main-group Ed25519 points into the relevant validation path and confirm they are rejected or safely handled according to the protocol design.

Typical attack path

  1. Identify software using libsodium before the fixed commit or affected downstream operating-system packages.
  2. Determine whether the application directly or indirectly calls crypto_core_ed25519_is_valid_point on untrusted data.
  3. Analyze the surrounding protocol to see whether acceptance of a non-main-group Ed25519 point can affect authentication, encryption, signing, key exchange, or authorization decisions.
  4. Craft an Ed25519 point that should be rejected by strict main-group validation but is accepted by the vulnerable validation behavior.
  5. Submit the crafted point through the vulnerable input path, such as a local file, IPC message, plugin interface, protocol message, or application API.
  6. Trigger downstream cryptographic logic that incorrectly relies on the flawed validation result.
  7. Use the resulting weakened cryptographic state or incorrect trust decision to obtain limited confidentiality or integrity impact.

How to detect it

There are no reliable universal indicators of exploitation because this issue is a cryptographic validation weakness rather than a vulnerability that leaves consistent files, processes, registry keys, network signatures, or crash artifacts. Retrospective detection should focus on application-specific telemetry from systems that accept untrusted Ed25519 public keys, points, signatures, key-exchange messages, identity records, or protocol payloads. Review logs for unusual authentication outcomes, unexpected acceptance of malformed cryptographic material, repeated validation failures followed by success, anomalous peer or key-registration activity, and authorization decisions tied to recently submitted public keys or protocol messages. If detailed cryptographic input logging or audit traces exist, search for non-canonical, small-subgroup, low-order, or otherwise invalid Ed25519 point encodings submitted before patching. Compare pre- and post-fix behavior in a controlled test environment to determine whether previously accepted inputs would now be rejected. Because exploitation depends on application design, SOC teams should work with application owners to identify any logs surrounding calls to crypto_core_ed25519_is_valid_point or equivalent validation wrappers.

What your security team should do

  • Prioritize remediation for applications that use libsodium for custom Ed25519-based protocols, key exchange, signing, authentication, identity binding, secure messaging, or token validation.
  • Inventory direct and transitive libsodium usage across operating-system packages, containers, statically linked binaries, vendored source trees, and language bindings.
  • Upgrade affected Debian packages to 5.17.3-1 or later where applicable, and upgrade source builds to include commit ad3004ec8731730e93fcfbbc824e67eadc1c1bae.
  • Ask engineering teams to identify any use of crypto_core_ed25519_is_valid_point on untrusted input and review whether the result is used as a security boundary.
  • Rebuild and redeploy applications that bundle libsodium, even if the base operating system has already been patched.
  • Add negative cryptographic test cases for malformed or non-main-group Ed25519 points in affected applications and CI pipelines.
  • Treat exposure as lower urgency for standard libsodium usage that does not call this function with untrusted data, but do not defer patching in systems with custom cryptographic protocols.
  • Monitor vendor, distribution, and application advisories for downstream packages that statically link or vendor libsodium.

The record

libsodium before ad3004e, in atypical use cases involving certain custom cryptography or untrusted data to crypto_core_ed25519_is_valid_point, mishandles checks for whether an elliptic curve point is valid because it sometimes allows points that aren't in the main cryptographic group.

Affected packages

Ecosystem Package Introduced Fixed
Packagist paragonie/sodium_compat 0 1.24.0
Packagist paragonie/sodium_compat 2 2.5.0
PyPI hdwallet 0 3.6.1
PyPI pynacl 0 1.6.2
Chainguard airflow-2 0 2.11.1-r0
Chainguard airflow-2-compat 0 2.11.0-r19
Chainguard airflow-2-iamguarded-compat 0 2.11.0-r19
Chainguard airflow-3 0 3.1.6-r0
Chainguard airflow-3-compat 0 3.1.5-r1
Chainguard airflow-3-iamguarded-compat 0 3.1.5-r1
Chainguard authentik 0 2025.10.3-r4
Chainguard authentik-fips 0 2025.10.3-r1
Chainguard authentik-go-server 0 2025.10.3-r3
Chainguard authentik-go-server-fips 0 2025.10.3-r0
Chainguard az 0 2.81.0-r2
Chainguard az 0 2.82.0-r0
Chainguard az-iamguarded-compat 0 2.81.0-r1
Chainguard datadog-agent-7.71 0 7.71.2-r6
Chainguard datadog-agent-7.71-core-integrations 0 7.71.2-r8
Chainguard datadog-agent-7.71-fakeintake 0 7.71.2-r6
Chainguard datadog-agent-7.71-jmx 0 7.71.2-r6
Chainguard datadog-agent-7.71-oci-compat 0 7.71.2-r6
Chainguard datadog-agent-7.71-s6-overlay 0 7.71.2-r6
Chainguard datadog-agent-7.72 0 7.72.4-r5
Chainguard datadog-agent-7.72-fakeintake 0 7.72.4-r5
Chainguard datadog-agent-7.72-jmx 0 7.72.4-r5
Chainguard datadog-agent-7.72-oci-compat 0 7.72.4-r5
Chainguard datadog-agent-7.72-s6-overlay 0 7.72.4-r5
Chainguard datadog-agent-7.73 0 7.73.2-r0
Chainguard datadog-agent-7.73-core-integrations 0 7.73.3-r3
Chainguard datadog-agent-7.73-fakeintake 0 7.73.2-r0
Chainguard datadog-agent-7.73-jmx 0 7.73.2-r0
Chainguard datadog-agent-7.73-oci-compat 0 7.73.3-r0
Chainguard datadog-agent-7.73-s6-overlay 0 7.73.2-r0
Chainguard datadog-agent-7.74-core-integrations 0 7.74.1-r2
Chainguard datadog-agent-fips-7.71 0 7.71.2-r5
Chainguard datadog-agent-fips-7.71-fakeintake 0 7.71.2-r5
Chainguard datadog-agent-fips-7.71-jmx 0 7.71.2-r5
Chainguard datadog-agent-fips-7.71-oci-compat 0 7.71.2-r5
Chainguard datadog-agent-fips-7.71-s6-overlay 0 7.71.2-r5
Chainguard datadog-agent-fips-7.72 0 7.72.4-r3
Chainguard datadog-agent-fips-7.72-fakeintake 0 7.72.4-r3
Chainguard datadog-agent-fips-7.72-jmx 0 7.72.4-r3
Chainguard datadog-agent-fips-7.72-oci-compat 0 7.72.4-r3
Chainguard datadog-agent-fips-7.72-s6-overlay 0 7.72.4-r3
Chainguard datadog-agent-fips-7.73 0 7.73.2-r0
Chainguard datadog-agent-fips-7.73-core-integrations 0 7.73.3-r2
Chainguard datadog-agent-fips-7.73-fakeintake 0 7.73.2-r0
Chainguard datadog-agent-fips-7.73-jmx 0 7.73.2-r0
Chainguard datadog-agent-fips-7.73-oci-compat 0 7.73.2-r0
Chainguard datadog-agent-fips-7.73-s6-overlay 0 7.73.2-r0
Chainguard datadog-agent-fips-7.74-core-integrations 0 7.74.1-r2
Chainguard datadog-cluster-agent-7.71 0 7.71.2-r6
Chainguard datadog-cluster-agent-7.71-oci-compat 0 7.71.2-r6
Chainguard datadog-cluster-agent-7.72 0 7.72.4-r5
Chainguard datadog-cluster-agent-7.72-oci-compat 0 7.72.4-r5
Chainguard datadog-cluster-agent-7.73 0 7.73.2-r0
Chainguard datadog-cluster-agent-7.73-oci-compat 0 7.73.2-r0
Chainguard datadog-cluster-agent-fips-7.71 0 7.71.2-r5
Chainguard datadog-cluster-agent-fips-7.71-oci-compat 0 7.71.2-r5
Chainguard datadog-cluster-agent-fips-7.72 0 7.72.4-r3
Chainguard datadog-cluster-agent-fips-7.72-oci-compat 0 7.72.4-r3
Chainguard datadog-cluster-agent-fips-7.73 0 7.73.2-r0
Chainguard datadog-cluster-agent-fips-7.73-oci-compat 0 7.73.2-r0
Chainguard dogstatsd-7.71 0 7.71.2-r6
Chainguard dogstatsd-7.72 0 7.72.4-r5
Chainguard dogstatsd-7.73 0 7.73.2-r0
Chainguard pgadmin4 0 9.11-r1
Chainguard pgadmin4-oci-entrypoint 0 9.11-r0
Chainguard superset-4.1 0 4.1.4-r6
Chainguard superset-4.1-entrypoint 0 4.1.4-r5
Chainguard superset-4.1-iamguarded-compat 0 4.1.4-r5
Chainguard superset-5.0 0 5.0.0-r11
Chainguard superset-5.0-entrypoint 0 5.0.0-r10
Chainguard superset-5.0-entrypoint 0 5.0.0-r11
Chainguard superset-5.0-iamguarded-compat 0 5.0.0-r10
Chainguard superset-5.0-iamguarded-compat 0 5.0.0-r11
Mageia:9 sodium 0 1.0.18-3.1.mga9
SUSE:Linux Enterprise Micro 5.2 libsodium 0 1.0.18-150000.4.14.1
SUSE:Linux Enterprise Micro 5.3 libsodium 0 1.0.18-150000.4.14.1
SUSE:Linux Enterprise Micro 5.4 libsodium 0 1.0.18-150000.4.14.1
SUSE:Linux Enterprise Micro 5.5 libsodium 0 1.0.18-150000.4.14.1
SUSE:Linux Enterprise Module for Basesystem 15 SP7 libsodium 0 1.0.18-150000.4.14.1
SUSE:Linux Enterprise Module for Public Cloud 12 libsodium 0 1.0.16-1.15.1
Wolfi airflow-3 0 3.1.6-r0
Wolfi airflow-3-compat 0 3.1.5-r1
Wolfi airflow-3-iamguarded-compat 0 3.1.5-r1
Wolfi az 0 2.81.0-r2
Wolfi az 0 2.82.0-r0
Wolfi az-iamguarded-compat 0 2.81.0-r1
Wolfi datadog-agent-7.72 0 7.72.4-r5
Wolfi datadog-agent-7.72-fakeintake 0 7.72.4-r5
Wolfi datadog-agent-7.72-jmx 0 7.72.4-r5
Wolfi datadog-agent-7.72-oci-compat 0 7.72.4-r5
Wolfi datadog-agent-7.72-s6-overlay 0 7.72.4-r5
Wolfi datadog-agent-7.73 0 7.73.2-r0
Wolfi datadog-agent-7.73-core-integrations 0 7.73.3-r3
Wolfi datadog-agent-7.73-fakeintake 0 7.73.2-r0
Wolfi datadog-agent-7.73-jmx 0 7.73.2-r0
Wolfi datadog-agent-7.73-oci-compat 0 7.73.3-r0
Wolfi datadog-agent-7.73-s6-overlay 0 7.73.2-r0
Wolfi datadog-agent-7.74-core-integrations 0 7.74.1-r2
Wolfi datadog-cluster-agent-7.72 0 7.72.4-r5
Wolfi datadog-cluster-agent-7.72-oci-compat 0 7.72.4-r5
Wolfi datadog-cluster-agent-7.73 0 7.73.2-r0
Wolfi datadog-cluster-agent-7.73-oci-compat 0 7.73.2-r0
Wolfi dogstatsd-7.72 0 7.72.4-r5
Wolfi dogstatsd-7.73 0 7.73.2-r0
Wolfi superset-4.1 0 4.1.4-r6
Wolfi superset-4.1-entrypoint 0 4.1.4-r5
Wolfi superset-4.1-iamguarded-compat 0 4.1.4-r5
Wolfi superset-5.0 0 5.0.0-r11
Wolfi superset-5.0-entrypoint 0 5.0.0-r10
Wolfi superset-5.0-entrypoint 0 5.0.0-r11
Wolfi superset-5.0-iamguarded-compat 0 5.0.0-r10
Wolfi superset-5.0-iamguarded-compat 0 5.0.0-r11
openSUSE:Leap 15.6 libsodium 0 1.0.18-150000.4.14.1
openSUSE:Tumbleweed python-PyNaCl 0 1.6.2-1.1
packagist paragonie/sodium_compat 2 2.5.0

Related vulnerabilities