sast-businesslogic-e4605f — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited sast-businesslogic-e4605f (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You are performing a focused security assessment to find business logic vulnerabilities in a codebase. This skill uses a three-phase approach with subagents: threat modeling (understand the domain and generate attack scenarios), batched verify (check whether scenarios are exploitable in parallel batches of 3), and merge (consolidate batch results).
Prerequisites: sast/architecture.md must exist. Run the analysis skill first if it doesn't.
Business logic vulnerabilities arise when an application's intended workflow, rules, or constraints can be manipulated to produce unintended outcomes — without exploiting technical flaws like injection or memory corruption. The attacker operates within the application's own features but uses them in ways the developers did not anticipate.
The core pattern: the application accepts input that is syntactically valid and passes authentication/authorization, but violates a business rule that was never enforced in code.
Do not flag these as business logic issues:
Use these categories to guide threat modeling. Not all categories apply to every application — identify which ones are relevant based on the architecture summary.
This skill runs in three phases using subagents. Pass the contents of sast/architecture.md to all subagents as context.
Launch a subagent with the following instructions:
Goal: Analyze the codebase to understand its business domain and generate a concrete, prioritized list of business logic attack scenarios specific to this application. Write results to sast/businesslogic-threats.md.>
Context: You will be given the project's architecture summary. Use it to understand what the application does, what features it has, and what business rules it is supposed to enforce. Focus entirely on understanding the domain — do not verify vulnerabilities yet.
>
Step 1 — Identify the business domain and features:
>
Read sast/architecture.md and then explore the codebase to answer: - What does this application do? (e-commerce, marketplace, SaaS, social platform, fintech, gaming, booking, etc.) - What financial or transactional features exist? (payments, subscriptions, credits, tokens, wallets, invoices, refunds) - What quantitative limits or rules exist? (ratings, scores, quantities, usage limits, quotas) - What multi-step workflows exist? (checkout, onboarding, KYC, booking, auctions) - What promotional or reward features exist? (coupons, referrals, loyalty points, bonuses, vouchers) - What role or tier distinctions exist? (free vs. paid, user vs. premium, trial vs. full) - What inventory or capacity constraints exist? (stock, seats, slots, bandwidth)>
To discover features, search for: - Route/endpoint definitions and their names - Model/entity names (Order, Payment, Subscription, Coupon, Wallet, Bid, etc.) - Business-rule-related field names (price, quantity, balance, rating, score, limit, quota, expiry, status) - Validation logic or constraint-related code
>
Step 2 — Generate attack scenarios:
>
For each relevant business domain area found, generate specific attack scenarios. Each scenario must be: - Specific to this codebase — name the actual endpoint, model, or feature involved - Actionable — describe exactly what an attacker would send/do - Grounded — reference the code or data model that makes this scenario plausible
>
Use the attack categories below as a checklist. Only include categories that are relevant to this application:
>
- Price/payment manipulation: Can a user send an arbitrary price in the request? Is price trusted from client? - Quantity/value out of range: Can a user send negative quantities, zero, or values exceeding defined limits? - Workflow bypass: Can a user skip a mandatory step in a multi-step process? - Coupon/discount abuse: Can a coupon be used multiple times or after expiration? - Race conditions: Are there check-then-act patterns on shared resources (inventory, balance, coupon usage)? - Refund abuse: Can a refund be requested after the product is consumed? - Reward/referral abuse: Can referral or signup bonuses be farmed? - Entitlement bypass: Are premium features checked at access time or only at subscription time? - Transfer/balance logic: Can negative transfers or self-transfers be made? - Time/date logic: Are time-limited offers enforced server-side? - Inventory logic: Is stock validated atomically before reservation?
>
Output format — write to sast/businesslogic-threats.md:>
```markdown # Business Logic Threat Model: [Project Name]
>
## Application Domain [2–3 sentence summary of what the application does and its key business features]
>
## Business Features Identified - [Feature 1]: [brief description, relevant models/endpoints] - [Feature 2]: ...
>
## Attack Scenarios
>
### 1. [Short title, e.g. "Negative quantity purchase for credit"] - Category: [e.g. Quantity & Numeric Limit Violations] - Target: [Endpoint or feature, e.g. POST /api/orders] - Description: [What an attacker would do and what outcome they expect] - Relevant code: [File and line range where the relevant logic lives] - Business rule that should be enforced: [What the application is supposed to do] - Risk level: [High / Medium / Low]>
### 2. ...
>
[Use sequential numbering ### 3., ### 4., ... for every scenario — required for batching in Phase 2.]
>
## Categories Not Applicable [List any categories from the checklist that are not relevant to this application and why] ```
After Phase 1 completes, read sast/businesslogic-threats.md and split the attack scenarios into batches of up to 3 scenarios each. Launch one subagent per batch in parallel. Each subagent verifies only its assigned scenarios and writes results to its own batch file.
Batching procedure (you, the orchestrator, do this — not a subagent):
sast/businesslogic-threats.md and count the numbered scenario sections (### 1., ### 2., etc.).sast/businesslogic-batch-N.md where N is the 1-based batch number.Give each batch subagent the following instructions (substitute the batch-specific values):
Goal: For each assigned attack scenario, determine whether the business rule is properly enforced in code or whether the attack is exploitable. Our goal is to find business logic vulnerabilities. Write results to sast/businesslogic-batch-[N].md.>
Your assigned scenarios (from the threat modeling phase):
>
[Paste the full text of the assigned scenario sections here, preserving the original numbering]
>
Context: You will be given the project's architecture summary. Use it to understand validation patterns, ORM usage, and where business rules are typically enforced. Trace the code paths referenced in each scenario.
>
What business logic flaws are NOT — do not flag these here: - SQL injection, XSS, RCE, XXE, SSRF, SSTI: separate skills - Missing authentication: Unauthenticated Access - IDOR: another access-control class - Generic brute-force unless it clearly circumvents a business rule
>
For each scenario, perform the following checks:
>
1. Is the business rule enforced server-side? - Is the constraint validated in the backend handler, service layer, or ORM/database? - Or is it only validated client-side (frontend form validation, JavaScript min/max attributes)? - Client-side-only validation = exploitable.
>
2. Is the validation complete and covers all edge cases? - Does it check for negative values where applicable? - Does it check upper bounds, not just lower bounds? - Does it handle concurrent requests (is the check atomic, or is there a TOCTOU window)? - Does it re-validate at the point of use, not just at an earlier step?
>
3. For workflow bypass scenarios: - Does each step verify that previous required steps were completed? - Are step completion flags stored server-side (not just in a cookie or session that can be replayed)? - Can a terminal endpoint be called directly without going through earlier steps?
>
4. For coupon/voucher scenarios: - Is the coupon marked as used atomically with the transaction (in the same DB transaction)? - Is concurrent redemption protected (SELECT FOR UPDATE, optimistic locking, atomic compare-and-swap)? - Is the expiry date checked server-side at redemption time?
>
5. For race condition scenarios: - Is stock/balance check and decrement done atomically (in a single DB transaction or with row-level locking)? - Is there any idempotency key or deduplication logic to prevent duplicate concurrent requests?
>
6. For entitlement/subscription scenarios: - Is the user's current plan/tier checked at the point of feature access? - Or is it cached at login/session start and never re-evaluated?
>
7. For transfer/balance scenarios: - Is there a server-side check that the transfer amount is positive? - Is there a server-side check that the sender has sufficient balance? - Are these checks done within a database transaction to prevent race conditions?
>
Classification: - Exploitable: The business rule is absent, bypassable, or only enforced client-side. - Likely Exploitable: The rule exists but has gaps (race condition window, missing edge case, bypassable condition). - Not Exploitable: Proper server-side enforcement exists and covers edge cases. - Needs Manual Review: Cannot determine with confidence (complex logic, external service dependency, etc.).
>
Output format — write to sast/businesslogic-batch-[N].md:>
```markdown # Business Logic Batch [N] Results
>
## Findings
>
### [EXPLOITABLE] Scenario title - Category: [Attack category] - File:path/to/file.ext(lines X-Y) - Endpoint:METHOD /path- Business Rule Violated: [What rule the application should enforce] - Issue: [Clear description of what validation is missing or broken] - Impact: [What an attacker can achieve — free goods, financial loss, unfair advantage, etc.] - Proof: [Show the code path demonstrating the missing enforcement] - Remediation: [Specific fix for this scenario] - Dynamic Test: ``[Step-by-step instructions or curl commands to confirm the finding on the live app. Include exact HTTP method, endpoint, headers, and request body. Describe what response or side effect confirms the vulnerability.]``
>
### [LIKELY EXPLOITABLE] Scenario title - Category: [Attack category] - File:path/to/file.ext(lines X-Y) - Endpoint:METHOD /path- Business Rule Violated: [What rule should be enforced] - Issue: [What enforcement gap or race condition exists] - Concern: [Why this is likely exploitable despite partial enforcement] - Proof: [Show the code path with the weak/partial check] - Remediation: [Specific fix] - Dynamic Test: ``[Step-by-step instructions or curl commands, e.g. two concurrent requests, to confirm.]``
>
### [NOT EXPLOITABLE] Scenario title - Category: [Attack category] - File: path/to/file.ext (lines X-Y) - Business Rule: [What the application is supposed to enforce] - Protection: [How it is enforced — server-side validation, DB constraint, atomic transaction, etc.]>
### [NEEDS MANUAL REVIEW] Scenario title - Category: [Attack category] - File: path/to/file.ext (lines X-Y) - Uncertainty: [Why automated analysis couldn't determine the status] - Suggestion: [What to examine manually or test dynamically] ```After all Phase 2 batch subagents complete, read every sast/businesslogic-batch-*.md file and merge them into a single sast/businesslogic-results.md. You (the orchestrator) do this directly — no subagent needed.
Merge procedure:
sast/businesslogic-batch-1.md, sast/businesslogic-batch-2.md, ... files.sast/businesslogic-results.md using this format:# Business Logic Analysis Results: [Project Name]
## Executive Summary
- Scenarios analyzed: [total across all batches]
- Exploitable: [N]
- Likely Exploitable: [N]
- Not Exploitable: [N]
- Needs Manual Review: [N]
## Findings
[All findings from all batches, grouped by classification:
EXPLOITABLE first, then LIKELY EXPLOITABLE, then NEEDS MANUAL REVIEW, then NOT EXPLOITABLE.
Preserve every field from the batch results exactly as written.]sast/businesslogic-results.md, delete all intermediate batch files (sast/businesslogic-batch-*.md).sast/architecture.md and pass its content to all subagents as context.sast/businesslogic-threats.md and all sast/businesslogic-batch-*.md files after the final sast/businesslogic-results.md is written.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.