_global-forge

Security review guidance for reading Atlassian Forge app source code and finding vulnerabilities. Forge is Atlassian’s platform for building apps that run in products such as Jira and Confluence.

In plain words
What is it for?
Use it to report exploitability, impact, affected files, reproduction ideas, remediation advice, and references for Forge-specific issues.
Why use it?
It gives reviews a consistent way to trace untrusted data into risky operations and explain the evidence. It also keeps findings focused on security advice rather than code changes.

Cursor rule

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/atlassian/forge-skills/_global-forge
Clone the repo
git clone --depth 1 https://github.com/atlassian/forge-skills
Per session 1,817 This file is loaded in full into every session.
When invoked 1,817 The same file — it is already loaded in full.
Security scan A 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.01817 $0.01817
Opus 5 $0.00908 $0.00908
Sonnet 5 $0.00363 $0.00363
Haiku 4.5 $0.00182 $0.00182

Measured 2d ago against content hash d6ba78834b26, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

_global-forge scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

- `curl` request(s), or
skills/forge-security-review/assets/security-rules/_global-forge.mdc · 103 lines

How it starts

The opening of the file, as written. The whole thing — 103 lines — stays where its author put it; the contents beside it link to each section on GitHub.

  • Use precise, actionable findings with minimal prose. Prefer concrete file paths and cited code snippets; do not propose direct code edits.
  • For each issue, trace data flow explicitly: source (untrusted input) -> validation/sanitization -> sink (dangerous action/API).
  • For each finding, provide: exploitability, impact, practical remediation guidance (advisory only), test leads/PoCs, and references (CWE and Atlassian/Forge docs).
  • Keep guidance Forge-specific: manifest.yml, module definitions, resolver handlers, bridge calls, web triggers, remotes, permissions, storage, and external integrations. When available, use the Forge MCP server to retrieve the latest Forge documentation and guidance.
  • Prefer Auto Attached rules for folder-scoped checks and Agent Requested rules for niche vulnerability classes.

Operating mode

  • Act as an audit/advisory assistant for white-box Forge security reviews; do not modify app code or provide patch diffs.
  • Focus outputs on:
    1. Data-flow trace (sources -> validators/sanitizers -> sinks)
    2. Risk and exploitability analysis
    3. Reproduction steps and PoC payloads/requests
    4. Impact and affected files/components
    5. References (CWE and Forge documentation pages used)
  • When examples are needed, cite existing app code with code citations (start:end:path). Avoid rewriting app code.

Forge analysis checklist

  • Locate and review manifest.yml first:
    • permissions.scopes for least privilege and stale/redundant scopes.
    • permissions.external and permissions.content for egress/CSP risk (unsafe-inline, overly broad domains, wildcard misuse).
    • modules entries (webtrigger, product modules, function bindings, provider/remotes config).
    • remotes trust boundaries, operations, and data residency declarations when applicable.
  • Build an execution map:
    • UI Kit/Custom UI entry points -> bridge calls (invoke) -> resolver/function handlers.
    • Atlassian API calls via api.asUser() / api.asApp(), including permission checks before sensitive mutations.
    • External network calls and whether destination domains are correctly declared in manifest permissions.
  • Identify authn/authz boundaries:
    • Verify resolver-side authorization for every sensitive action.
    • Treat browser-provided context as untrusted for auth decisions.
    • For asApp operations, verify explicit permission checks (for example, Authorize API patterns) before write/delete actions.
  • Enumerate unauthenticated/external entry points:
    • Web triggers are URLs and may have no built-in auth by default; verify custom auth and replay protections where needed.
    • Event/scheduled handlers and remote endpoints: confirm only intended operations are exposed.

Forge-specific review priorities

  • Below are priority focus areas, not an exhaustive list. Report any additional vulnerability classes discovered.
  • Use this global rule as a baseline and apply all relevant Forge category-specific rules as category rules provide deeper checks and examples.
  • Authentication and authorization
    • Check app-level scopes vs runtime permission checks; enforce least privilege and deny-by-default logic.
    • Flag missing object-level authorization (IDOR-like access through issue/content/project identifiers).
    • Validate tenant/user boundary handling when reading context and performing cross-tenant operations.
  • Tenant isolation and data leakage
    • Verify tenant context is enforced on every data read/write path, including storage keys, entity queries, SQL access, and remote calls.
    • Review global cache, module-level state, and global variable reuse at runtime to ensure tenant/user-scoped data cannot bleed across requests, invocations, or installations.
    • Flag any cross-tenant access path where identifiers from one tenant can read or mutate another tenant's data, including execution of arbitrary code that can interact with global variables or Forge Lambda runtime environment which leads to cross tenant data leakage.
    • Check for sensitive data exposure in logs, error messages, responses, exports, events, and analytics/telemetry payloads.
    • Confirm data minimization and redaction for PII, access tokens, credentials, and app secrets across UI, function, and remote boundaries.
  • Input validation and injection
    • Track untrusted payloads from UI, web triggers, events, and remote callbacks into sinks (queries, templates, command execution, outbound requests).
    • Verify strict schema validation at resolver and trigger boundaries.
  • Secrets and sensitive data
    • Flag hard-coded credentials, API keys, or tokens in source/config.
    • Verify secure secret handling patterns (Forge variables with encryption where applicable); avoid logging secrets or tokens.
    • Verify storage of credentials/tokens is minimized, scoped, and protected.
  • Egress, remotes, providers and other integrations
    • Confirm all outbound domains are explicitly allowlisted in manifest permissions.
    • Flag overly broad external permissions and unsafe CSP relaxations.
    • Review remote trust assumptions, data residency implications, and token forwarding boundaries.
  • Session-like and request protections
    • For web triggers and custom endpoints, verify request authentication, integrity checks, anti-replay controls, and abuse protections (rate limiting/throttling).

Read the full file on GitHub · 103 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 103 lines · 1,817 tokens per session scan A d6ba78834b26

Subscribe to this mod's changes

_global-forge is a cursor rule published in the GitHub repository atlassian/forge-skills (20 stars, last pushed 3d ago), licensed Apache-2.0. It adds 1,817 tokens to every session, about $0.0091 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.