webview-audit

Detects Android WebView vulnerabilities like JS bridges, file theft, UXSS, and SSRF from decompiled sinks.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

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

What problem does it solve? Android WebViews concentrate XSS, local file theft, SSRF, and even RCE risks in one component, and manually auditing decompiled code for every dangerous configuration is slow and error-prone. This Skill automates the static detection of WebView attack surface and guides authorized testers through human-run dynamic confirmation. ## Core Features & Use Cases - Automated sink detection: Consumes sinks.json from the harness, filters WebView-relevant sinks (addJavascriptInterface, loadDataWithBaseURL, setAllowFileAccess, loadUrl, onReceivedSslError, and more), ranks them by severity, and groups them by source file. - TTP catalog and chaining playbook: Ten documented attack techniques with preconditions, signals, tests, and impact, plus cross-skill chains with deeplink-audit, exported-components, and api-pivot. - Safe, authorized-only workflow: Ships detection and methodology only — dynamic steps are described for a human to run against an authorized device, with no weaponized exploit HTML/JS. - Use Case: After decompiling an in-scope APK, run the detector to instantly surface a high-severity addJavascriptInterface bridge, then follow the documented steps to deliver a deep link into the hosting activity and confirm token theft via Burp. ## Quick Start Run the bundled audit script against your target's sinks.json with a command like: python skills/webview-audit/scripts/audit_webview.py --hash <sha256> to get a ranked WebView attack-surface report.

Frequently Asked Questions about webview-audit

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

FAQPage Schema
How do I audit an Android WebView for vulnerabilities?

Run grep_sinks.py to produce sinks.json from the decompiled APK, then run audit_webview.py with --hash or --sinks. The detector filters WebView sinks, ranks them by severity, and prints why each is risky plus a human-run test hint.

What WebView sinks does this detector check for?

It covers addJavascriptInterface, @JavascriptInterface, setJavaScriptEnabled, setAllowFileAccess, setAllowUniversalAccessFromFileURLs, setAllowFileAccessFromFileURLs, setAllowContentAccess, loadDataWithBaseURL, loadData, loadUrl, and onReceivedSslError with handler.proceed().

Does the WebView audit script run dynamic attacks automatically?

No. The script only performs static detection on sinks.json. Dynamic confirmation steps such as delivering deep links via adb, exercising JS bridges, or routing loadUrl traffic through Burp are described for a human to run against an authorized device.

Can I use this tool on any Android app?

No. The skill enforces an authorized-testing scope gate: the target applicationId must be listed in scope/scope.json before any testing. It is intended for bug bounty and authorized pentests only, and it never ships weaponized exploit HTML or JavaScript.

Why does audit_webview.py report no WebView hits?

It means sinks.json contains no WebView-relevant sinks. Re-run scripts/grep_sinks.py first to regenerate sinks.json, or the WebView may be configured in a way jadx did not surface, in which case manual review of the decompiled code is needed.