local-auth-audit

Detect bypassable client-side biometric, PIN, and session-token authentication in decompiled Android apps.

48|27|Updated Jul 30, 2026
One-click install
npx skills add https://github.com/abisheikM1/Tribunal --skill local-auth-audit-abisheikm1
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: local-auth-audit
Source: https://github.com/abisheikM1/Tribunal/tree/main/legacy-harness/skills/local-auth-audit
Command: npx skills add https://github.com/abisheikM1/Tribunal --skill local-auth-audit-abisheikm1

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve? Android apps often enforce authentication decisions on the device rather than the server, letting a rooted attacker flip a boolean, recover a local PIN, or steal a replayable session token. This Skill finds those bypassable local-auth patterns in decompiled APK source and guides authorized testers through confirming them with standard Frida and objection tooling. ## Core Features & Use Cases - Static signal scanning: The bundled scan_auth.py script greps jadx/apktool output for BiometricPrompt, CryptoObject, onAuthenticationSucceeded, KeyguardManager, and client-side PIN equals() comparisons, flagging biometric flows with no CryptoObject as boolean-flip bypass candidates. - TTP catalog with confirmation steps: Three documented techniques (crypto-less biometric bypass, client-side PIN comparison, retrievable session token) each with preconditions, signals, human-run objection/Frida commands, impact ratings, and cited public reports. - Use Case: During an authorized bug bounty engagement, you decompile a target APK, run the scanner, and it flags a BiometricPrompt flow with no CryptoObject; you then confirm the bypass on a rooted emulator using the public Frida CodeShare universal biometric bypass and write up the finding with the provided report template. ## Quick Start Run python skills/local-auth-audit/scripts/scan_auth.py --hash <sha256> against a decompiled target to list client-side authentication signals and their dynamic confirmation hints.

Frequently Asked Questions about local-auth-audit

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I test if Android biometric authentication is bypassable?

Scan the decompiled source for BiometricPrompt or onAuthenticationSucceeded usage without a CryptoObject in the same file. If absent, hook the success callback with objection or load the public Frida CodeShare universal biometric bypass on a rooted device to force authentication success.

How to scan decompiled APK source for local authentication weaknesses?

Run scan_auth.py with --hash against targets/<hash>/{jadx,apktool} or --src against any source tree. It greps for biometric APIs, KeyguardManager flows, and client-side PIN equals() comparisons, marking biometric hits without CryptoObject as risky.

When is a biometric prompt NOT bypassable with Frida?

A biometric flow tied to a keystore CryptoObject that the app actually consumes to decrypt or sign data is not bypassable by flipping the success callback. The unlock depends on a key released only by a genuine authentication event, so forcing the boolean yields nothing usable.

Does this skill work without a rooted device or emulator?

The static scanning works on any decompiled source tree without a device. Dynamic confirmation of biometric bypass, PIN recovery, or token replay requires a rooted device or emulator with frida-server running and objection installed.

What is the difference between local-auth-audit and server-side API auth testing?

This skill covers authentication decisions made on the device, such as biometric gates and local PIN checks. Server-side enforcement failures, like replaying a lifted token or unenforced entitlements, are owned by the companion api-pivot skill.