Versioned security assessment

Report ID: SA-656BE304

8/8/2026, 9:28:15 AM

longbridge-earnings security assessment v8

Skill Security Certification Report

Audit History
Scanner version 3.0.0 Audit model: codex Latest published report
Skill name
longbridge-earnings
Version
v8
Maintainer
longbridge
Coverage
6 Files scanned · 959 Lines analyzed
Policy version
skillstore-security-audit-policy-v1

Highest confirmed finding severity

High

2 confirmed security findings require attention.

Installation context

Check the current Skill page

This page summarizes report evidence only. The Skill page provides the canonical install advisory.

Open current Skill page

This report does not block or authorize the manifest or ZIP.

Most static findings are Markdown formatting, ordinary financial prose, or safe argument-array subprocess use. Confirmed risks include unquoted symbol placeholders, a predictable user-derived temporary path, stale cached responses, and an external MCP trust boundary; no prompt injection or credential-exfiltration intent was found.

Report position

Latest published report

Latest refers to the report sequence, not to artifact currentness.

Audit attestation

Active attestation

A public attestation is available for this exact report.

Human verification

Not verified

No human verification is recorded for this report.

Coverage

6 Files scanned · 959 Lines analyzed

9 items shown for review

Limitations

This report does not claim runtime or sandbox execution and does not prove the absence of side effects.

Evidence chain

Follow the evidence from source binding to the install contract. Available evidence supports verification; it is not a safety guarantee.

  1. Source

    Commit and path bound

  2. Artifact

    Content and tree hashes bound

  3. Audit

    Complete

  4. Install contract

    Open manifest to verify

    Open manifest

Capabilities observed

Observed means this report recorded supporting evidence. Not recorded does not prove that a capability is absent.

Contains scripts

May execute code included with the Skill.

Not recorded by this audit

Network access

May connect to external services.

Observed in 4 evidence locations

Filesystem access

May read or write local files.

Observed in 9 evidence locations

Env variables

May read values from the process environment.

Not recorded by this audit

External commands

May invoke commands or programs outside the Skill.

Observed in 25 evidence locations

Capability review items (7)
Medium
Ruby/shell backtick execution
python3 scripts/collect.py <SYMBOL> --full # `python` on Windows
The executable shell example places the user-selected SYMBOL into a command without quoting. Shell metacharacters in the substituted value could execute additional commands.
Medium
Temp directory access
(`longbridge <cmd> > /tmp/data.json`), then read it — the CLI may append version-notification
The workflow redirects output to the fixed shared path /tmp/data.json. A local attacker could pre-create that path or a symlink and cause clobbering under the agent's privileges.
Medium
Ruby/shell backtick execution
1. Reuse the `RAW_DIR` from a previous lite run if present; otherwise `python3 scripts/collect.py <S
The instruction places a user-selected SYMBOL directly into a shell command template without quoting. A substituted value containing shell syntax could execute unintended commands.
Medium
Ruby/shell backtick execution
- **Partial N/A sections**: the digest marks failed sources as `N/A (reason)`. Work with what succee
The fallback shows a direct shell template with cmd and SYMBOL placeholders and no quoting or allowlist. Unsafe substituted values could alter arguments or execute shell syntax.
Medium
Ruby/shell backtick execution
- **Digging into raw JSON** (full mode): read from a file, not inline JSON on a command line — e.g.
The example embeds RAW_DIR inside Python source passed through a shell command. An untrusted path containing quotes or shell expansions could modify the Python expression or the surrounding command.
Low
Temp file creation
out_dir = Path(tempfile.gettempdir()) / f"lb_earnings_{symbol.lower().replace('.', '_')}"
The output directory is predictable and incorporates an unvalidated user-supplied symbol. This enables path manipulation and exposes fixed output names to local symlink or stale-file attacks.
Low
Hardcoded URL
- **No `longbridge` CLI**: if the user has run `claude mcp add --transport http longbridge https://m
The fallback introduces a remote MCP endpoint and instructs the agent to discover and use its tools. This expands the trust boundary and may transmit user queries to an external service.

Risk findings

Confirmed security concerns are separated from items that still need review.

Confirmed security concerns (2)

RISK-001 High
Unvalidated Symbol Controls Output Path
The command-line symbol is inserted into a temporary directory name after only replacing periods. Slash and parent-directory segments can redirect fixed JSON and error files outside the intended directory.
The data flow from sys.argv to the Path expression is direct, and no allowlist or path containment check is present.
RISK-002 High
Failed Refresh Can Reuse Stale Financial Data
A failed fetch writes an error file but leaves any older JSON file intact. The reporting path prefers JSON over errors, so a new analysis can silently use stale results.
The output directory is stable per symbol, failure does not remove prior JSON, and section reads JSON before checking the current error file.

Remediation

Suggested fixes recorded by this audit. Applying them is the maintainer’s responsibility.

  1. FIX-001
    High
    User-supplied symbols can alter the temporary output path.
    Validate symbols against supported ticker syntax and create each run with tempfile.mkdtemp inside a controlled directory.
  2. FIX-002
    High
    Failed refreshes can leave older JSON files active.
    Use a new directory per run or remove each prior JSON file before fetching, then bind all outputs to one run identifier.
  3. FIX-003
    Medium
    Shell examples place SYMBOL or RAW_DIR placeholders into executable commands without safe quoting.
    Pass values as argument arrays where possible. Otherwise validate values, quote them for the active shell, and avoid embedding paths in Python source.
  4. FIX-004
    Medium
    The pre-earnings workflow writes to a fixed shared temporary filename.
    Replace /tmp/data.json with a securely created unique file and ensure the file is removed after parsing.
  5. FIX-005
    Low
    The MCP fallback adds a remote service to the agent environment.
    Require explicit user confirmation and describe the endpoint, transmitted query data, authentication scope, and removal procedure before configuration.

Expert evidence

Immutable subject identity, scanner metadata, dismissed matches, and source-level evidence.

Artifact subject

Marketplace commit
656be3040aef5c047555a908cd5c695d22a4a548
Content hash
c07f8a43364014dab445d1e3d2b455974a268c5ac1376ca6e9c0960a780428cf
Tree hash
a62d2ac981898e1c385ce8f2f33217ba7f32c9381389acb40d9fc6e7ea1b0c2c
Skill path
skills/longbridge/longbridge-earnings
Audit payload hash
fd489d5c1699dbf70e8da349c1548e11

Analysis metadata

Audit model: codex

Analysis state: Complete

Scope is limited to the recorded files, lines, methods, and evidence. No runtime or sandbox execution is claimed.

Verify and export

The manifest and lockfile bind install artifacts to cryptographic hashes. This integrity claim is separate from the security assessment.

Audit attestation: active