CVE-2026-56294
capacitor-native-biometric - Authentication Bypass via Unvalidated CryptoObject in onAuthenticationSucceeded
capacitor-native-biometric before 12.128.2 contains an authentication bypass vulnerability where the onAuthenticationSucceeded() method fails to validate CryptoObject parameters. Attackers can hook the onAuthenticationSucceeded() function using dynamic instrumentation to bypass biometric authentication without valid credentials.
Attack profile
How easy it is to exploit
- Attack vector
- Physical
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- Low
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used 4.3
capacitor-native-biometric - Authentication Bypass via Unvalidated CryptoObject in onAuthenticationSucceeded
capacitor-native-biometric before 12.128.2 contains an authentication bypass vulnerability where the onAuthenticationSucceeded() method fails to validate CryptoObject parameters. Attackers can hook the onAuthenticationSucceeded() function using dynamic instrumentation to bypass biometric authentication without valid credentials.
- Record
CVE-2026-56294- CVSS 4.0
- 4.3 Medium
CVSS:4.0/AV:P/AC:H/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N - CVSS 3.1
- 4.8 Medium
CVSS:3.1/AV:P/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-287
- Updated
- 2026-11-08
EUVDEUVD-2026-38121 4.3
capacitor-native-biometric before 12.128.2 contains an authentication bypass vulnerability where the onAuthenticationSucceeded() method fails to validate CryptoObject parameters. Attackers can hook the onAuthenticationSucceeded() function using dynamic instrumentation to bypass biometric authentication without valid credentials.
- Record
EUVD-2026-38121- CVSS 4.0
- 4.3 Medium
CVSS:4.0/AV:P/AC:H/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N - Updated
- 2026-11-08
GitHub AdvisoriesGHSA-58pv-hg46-37r9 4.3
capacitor-native-biometric before 12.128.2 contains an authentication bypass vulnerability where...
capacitor-native-biometric before 12.128.2 contains an authentication bypass vulnerability where the onAuthenticationSucceeded() method fails to validate CryptoObject parameters. Attackers can hook the onAuthenticationSucceeded() function using dynamic instrumentation to bypass biometric authentication without valid credentials.
- Record
GHSA-58pv-hg46-37r9- CVSS 4.0
- 4.3 Medium
CVSS:4.0/AV:P/AC:H/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 4.8 Medium
CVSS:3.1/AV:P/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-287
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-vx5f-vmr6-32wf 5.2
cap-go/capacitor-native-biometric Authentication Bypass
There is a potential issue with the cap-go/capacitor-native-biometric library.
Summary
The cap-go/capacitor-native-biometric library was found to be subject to an authentication bypass as the current implementation of the onAuthenticationSucceeded() does not appear to handle a CryptoObject[^HackTricks1] [^SecuringBiometricAuthentication] as seen in the following code block starting from line 88 in AuthActivity.java:
@Override
public void onAuthenticationSucceeded(
@NonNull BiometricPrompt.AuthenticationResult result
) {
super.onAuthenticationSucceeded(result);
finishActivity("success");
}
As the current implementation only checks whether onAuthenticationSucceeded() was called and does not handle a CryptoObject the biometric authentication can be bypassed by hooking the onAuthenticationSucceeded() function.
PoC Video:
https://github.com/user-attachments/assets/b7b5a2bc-21dc-4373-b371-84b002dae7a7
Environment:
The following steps were taken to create and deploy a Capacitor application using the cap-go/capacitor-native-biometric library for the purpose of verifying this finding. Note at the time of writing the npx create-react-app command broke, so I have provided two ways of creating and deploying the testing environment. Apparently React updated to version 19 caused a dependency issue as seen here. If it is not fixed by the time you look at this PoC please use the yarn alternatives.
- Create a new Capacitor app by opening your terminal and run the following commands to create a new Capacitor app. For the sake of the disclosure I'll be using the name
capgo-poc:
npx create-react-app capgo-poc --template typescript
Yarn Alternative:
npm install --global yarn
yarn create react-app capgo-poc --template typescript
- Install dependencies by navigating into your app's directory and run the following command to install Capacitor's core dependencies:
cd capgo-poc
npm install @capacitor/core
npm install @capacitor/cli
npm install @capacitor/android
npm install @capgo/capacitor-native-biometric
npm install react
Yarn Alternative:
cd capgo-poc
yarn add @capacitor/core
yarn add @capacitor/cli
yarn add @capacitor/android
yarn add @capgo/capacitor-native-biometric
yarn add react
- Initialise the project using the name
capgo-pocandcom.capgo.poc, and add the android platform by running the following commands:
npx cap init
npx cap add android
- Configure the android permissions by opening the
android/app/src/main/AndroidManifest.xmlfile and add the necessary permissions:
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
- Implement Biometric Authentication, here is some basic code to use the biometric authentication feature. Modify the TSX file called
App.tsxinsrc/and import the following code:
import React, { useState } from 'react';
import { NativeBiometric } from '@capgo/capacitor-native-biometric';
const App = () => {
// State to hold authentication status
const [authStatus, setAuthStatus] = useState<string | null>(null);
// Function to authenticate the user
const authenticateUser = async () => {
try {
const result = await NativeBiometric.verifyIdentity({
reason: 'For an application access',
title: 'Log in',
subtitle: '',
description: 'Verify yourself by biometrics',
useFallback: true,
maxAttempts: 3,
}).then(() => true)
.catch(() => false);
if (!result) {
…
- Record
GHSA-vx5f-vmr6-32wf- CVSS 4.0
- 5.2 Medium
CVSS:4.0/AV:P/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-287
- Updated
- 2026-11-02
NVD 4.3
capacitor-native-biometric before 12.128.2 contains an authentication bypass vulnerability where the onAuthenticationSucceeded() method fails to validate CryptoObject parameters. Attackers can hook the onAuthenticationSucceeded() function using dynamic instrumentation to bypass biometric authentication without valid credentials.
- Record
CVE-2026-56294- CVSS 4.0
- 4.3 Medium
CVSS:4.0/AV:P/AC:H/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 4.8 Medium
CVSS:3.1/AV:P/AC:H/PR:N/UI:N/S:U/C:H/I:L/A:N - Weakness
- CWE-287
- Updated
- 2026-11-02
OSV 4.3
capacitor-native-biometric - Authentication Bypass via Unvalidated CryptoObject in onAuthenticationSucceeded
capacitor-native-biometric before 12.128.2 contains an authentication bypass vulnerability where the onAuthenticationSucceeded() method fails to validate CryptoObject parameters. Attackers can hook the onAuthenticationSucceeded() function using dynamic instrumentation to bypass biometric authentication without valid credentials.
- Record
CVE-2026-56294- CVSS 4.0
- 4.3 Medium
CVSS:4.0/AV:P/AC:H/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-287
- Updated
- 2026-11-09
OSVGHSA-vx5f-vmr6-32wf 5.2
cap-go/capacitor-native-biometric Authentication Bypass
There is a potential issue with the cap-go/capacitor-native-biometric library.
Summary
The cap-go/capacitor-native-biometric library was found to be subject to an authentication bypass as the current implementation of the onAuthenticationSucceeded() does not appear to handle a CryptoObject[^HackTricks1] [^SecuringBiometricAuthentication] as seen in the following code block starting from line 88 in AuthActivity.java:
@Override
public void onAuthenticationSucceeded(
@NonNull BiometricPrompt.AuthenticationResult result
) {
super.onAuthenticationSucceeded(result);
finishActivity("success");
}
As the current implementation only checks whether onAuthenticationSucceeded() was called and does not handle a CryptoObject the biometric authentication can be bypassed by hooking the onAuthenticationSucceeded() function.
PoC Video:
https://github.com/user-attachments/assets/b7b5a2bc-21dc-4373-b371-84b002dae7a7
Environment:
The following steps were taken to create and deploy a Capacitor application using the cap-go/capacitor-native-biometric library for the purpose of verifying this finding. Note at the time of writing the npx create-react-app command broke, so I have provided two ways of creating and deploying the testing environment. Apparently React updated to version 19 caused a dependency issue as seen here. If it is not fixed by the time you look at this PoC please use the yarn alternatives.
- Create a new Capacitor app by opening your terminal and run the following commands to create a new Capacitor app. For the sake of the disclosure I'll be using the name
capgo-poc:
npx create-react-app capgo-poc --template typescript
Yarn Alternative:
npm install --global yarn
yarn create react-app capgo-poc --template typescript
- Install dependencies by navigating into your app's directory and run the following command to install Capacitor's core dependencies:
cd capgo-poc
npm install @capacitor/core
npm install @capacitor/cli
npm install @capacitor/android
npm install @capgo/capacitor-native-biometric
npm install react
Yarn Alternative:
cd capgo-poc
yarn add @capacitor/core
yarn add @capacitor/cli
yarn add @capacitor/android
yarn add @capgo/capacitor-native-biometric
yarn add react
- Initialise the project using the name
capgo-pocandcom.capgo.poc, and add the android platform by running the following commands:
npx cap init
npx cap add android
- Configure the android permissions by opening the
android/app/src/main/AndroidManifest.xmlfile and add the necessary permissions:
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
- Implement Biometric Authentication, here is some basic code to use the biometric authentication feature. Modify the TSX file called
App.tsxinsrc/and import the following code:
import React, { useState } from 'react';
import { NativeBiometric } from '@capgo/capacitor-native-biometric';
const App = () => {
// State to hold authentication status
const [authStatus, setAuthStatus] = useState<string | null>(null);
// Function to authenticate the user
const authenticateUser = async () => {
try {
const result = await NativeBiometric.verifyIdentity({
reason: 'For an application access',
title: 'Log in',
subtitle: '',
description: 'Verify yourself by biometrics',
useFallback: true,
maxAttempts: 3,
}).then(() => true)
.catch(() => false);
if (!result) {
…
- Record
GHSA-vx5f-vmr6-32wf- CVSS 4.0
- 5.2 Medium
CVSS:4.0/AV:P/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N - Weakness
- CWE-287
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
@capgo/capacitor-native-biometricnpm | before 8.3.6 | 8.3.6 |
History
| Recorded | Changed | Sources |
|---|---|---|
| facts | EUVD | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-56294 is a medium vulnerability (CVSS 4.3) in Capacitor-native-biometric, published February 10, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.24%, the 14th percentile. Fixed in @capgo/capacitor-native-biometric 8.3.6.
References
github.com/Cap-go/capgo/security/advisories/GHSA-vx5f-vmr6-32wf
vulncheck.com/advisories/capacitor-native-biometric-authentication-bypass-via-unvalidated-cryptoobject-in-onauthenticationsucceeded
nvd.nist.gov/vuln/detail/CVE-2026-56294
github.com/advisories/GHSA-58pv-hg46-37r9
github.com/Cap-go/capacitor-native-biometric/commit/1254602e942f8216e6258f646f0866d8e69c48a5
github.com/advisories/GHSA-vx5f-vmr6-32wf
github.com/CVEProject/cvelistV5/tree/main/cves/2026/56xxx/CVE-2026-56294.json
github.com/Cap-go/capgo
Left out here: the rest of 2 source descriptions. The JSON record has them.