Skip to main content

JScope

Evidence-based JavaScript intelligence for bug bounty hunters and web app pentesters.
Reconstructs how a web app behaves from its JS, and refuses to show a finding it can't justify.

CI Python 3.10+ License: MIT


Most JS recon tools hand you a long list of strings. JScope hands you a map (routes, components, API calls, guards, roles) and a ranked list of where to start testing, where every point in the ranking has a stated reason and every finding carries the evidence behind it.

$ jscope analyze tests/sample_react

[where to start testing]  (deterministic ranking; reasons shown)
   68  [CONFIRMED] JS-0004  endpoint: /api/admin/reports/export
       test: Request as an unauthenticated / low-privilege user and check for missing access control.
   58  [CONFIRMED] JS-0001  endpoint: /api/admin/users
       test: Request as an unauthenticated / low-privilege user and check for missing access control.
   54  [CONFIRMED] JS-0003  endpoint: /api/users/{id}/profile
       test: Vary the ID parameter across accounts/sessions and diff authorization results.
   ...

[route map]  6 route(s)   (R=route G=guard role=declared role E=endpoint)
  R /                            UNPROTECTED
      E /api/v1/feed
  R /admin/reports               UNPROTECTED
      E /api/admin/reports/export
  R /login                       UNPROTECTED
      E /api/auth/login
  R /admin/users                 guards=RequireAuth roles=admin
      E /api/admin/users
  R /billing                     guards=RequireAuth
      E /api/payments/invoices
  R /profile                     guards=RequireAuth
      E /api/users/{id}/profile

An unguarded /admin/reports route calling an admin export endpoint is exactly the kind of lead you want surfaced in seconds. Try it yourself on the bundled fixture (tests/sample_react).

Install

pip install git+https://github.com/LIME1Star/JScope.git
jscope doctor        # checks your install

Python 3.10+. For YAML OpenAPI specs: pip install "jscope[yaml] @ git+https://github.com/LIME1Star/JScope.git".

Quick start

jscope analyze ./path/to/js-project --verbose      # ranking, route map, evidence appendix
jscope explain JS-0004 --findings-file f.json      # full evidence chain for one finding
jscope graph ./project                             # route -> component -> API -> guard map
jscope https://app.example.com                     # crawl + download + analyze (authorized targets only)
jscope report f.json --format html -o report.html  # re-render: human | json | markdown | html | sarif

Remote commands (go, scan, crawl, download) are bound to the target host, rate-limited, and refuse loopback/private addresses by default. For controlled local testing pass --allow-private.

What makes it different

Typical JS recon JScope
Method regex over bundles tree-sitter AST, constant propagation, dead-branch detection
Output flat list of URLs / strings route, guard and role graph with route-to-API attribution
Findings everything that matches only evidence-backed candidates, scored deterministically
Triage you sort it out ranked "where to start testing", each point explained
Honesty silent on limits every finding states what it could not resolve

Tools like LinkFinder, jsluice and SecretFinder are excellent at fast extraction, and JScope is built to sit alongside them, adding structure and prioritization on top.

How it stays honest

analyzers propose  --->  EvidenceEngine scores + dedups  --->  you see Findings
   (Candidate)             (deterministic, explainable)           (Finding)

Analyzers can never emit a finding directly, only Candidates backed by typed Evidence. That boundary keeps a noisy analyzer (including community plugins) from polluting your output. Confidence means "this pattern exists and means what it looks like", not "this is exploitable"; only the opt-in confirm / verify steps add runtime evidence. Details: docs/EVIDENCE_SCHEMA.md.

What it analyzes

14 built-in analyzers: routes (React Router, Vue Router, Angular, Next.js), authentication and authorization patterns, storage and token handling, GraphQL operations and schemas, OpenAPI specs (correlated both ways with client calls), service workers, source maps, HTML forms/CSP/SRI, WASM modules, secrets, endpoints and framework detection.

Also included: workspaces with baseline diffing (ws-scan), optional AI explanations that never invent findings (docs/AI.md), a plugin system with trust tiers (docs/PLUGINS.md), SARIF output for CI, and opt-in runtime confirmation and browser observation.

Status and limitations

JScope is a beta development tool, not a production scanner. Be aware of these before relying on it:

  • Symbol resolution is a per-file heuristic. There is no cross-file data flow yet, and import resolution handles relative paths only (no @/ or tsconfig aliases).
  • Client-side authorization findings are observations, not vulnerabilities. A missing guard may live in a layout or on the server.
  • Runtime confirmation is opt-in and narrow: GET/OPTIONS only, allow-listed hosts. It shows a route responds, not that it is vulnerable.
  • The accuracy benchmark uses 12 synthetic fixtures; a real-world corpus is on the roadmap.
  • Network scope enforcement is not unified across every component and DNS pinning is not guaranteed on all paths. Read docs/SECURITY_LIMITATIONS.md. Plugins execute arbitrary Python.

Only test systems you own or are explicitly authorized to assess.

Development

git clone https://github.com/LIME1Star/JScope && cd JScope
python -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"
pytest
python -m jscope benchmark --strict

See CHANGELOG.md for release history and docs/ for each subsystem. Issues and pull requests are welcome.

License

MIT, see LICENSE.

Metadata

Release files for jscope 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jscope 0.4.2
File Size Uploaded Provenance
jscope-0.4.2.tar.gz 235.0 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for jscope 0.4.2
File Interpreter ABI Platform
jscope-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 459.4 kB

Release files / jscope-0.4.2.tar.gz

Download URL jscope-0.4.2.tar.gz
Size 235.0 kB
Tags Source
SHA-256 checksum
How to use checksums
85d1ae17580c0152c399fa768153e8a6355c8df917ade064b45574a33f543a2a
BLAKE2b-256 checksum
How to use checksums
0187f6f307f0a33587df97a694c1b58f55b6683163a538dcb7ac7869261b6926
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Release files / jscope-0.4.2-py3-none-any.whl

Download URL jscope-0.4.2-py3-none-any.whl
Size 224.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0835b8589ef78191fb03a672cfe28a15653be55a9a56e542899d417f45e34b7e
BLAKE2b-256 checksum
How to use checksums
912d3bea1e2702b5fe976de6b329d4c1eb85dec6e1ad4467e0aa2f8623179fe3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.13

Security for jscope 0.4.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page