# Workflow order or approval bypass

An actor can complete a protected workflow without its required prior approval or immutable conditions.

**Candidate CWE:** [CWE-841](https://cwe.mitre.org/data/definitions/841.html)

## Test hypothesis

Write the normal transition table. On a fresh controlled object, send the observed completion request before approval or alter one field that must be frozen after approval. Compare a valid sequence. If state changes arrive as integration events, deliver two legitimate sandbox events in reverse order and check that an older event cannot restore a revoked privilege.

## Evidence required

The forbidden transition commits and changes a documented security/business outcome. Save state before and after, actor rights, exact sequence, and cleanup.

## Rule out false positives

Skipping optional UI pages, editable fields allowed by policy, and a success page without committed effect are not sufficient.

## Playbook and command references

- [Workflow invariants, replay, idempotency, and races](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/modules/state-business-logic.html) — Find security consequences in workflow ordering and concurrency, with serial controls and durable-state evidence.
- [Object, function, and property authorization](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/modules/authz-matrix.html) — Turn identities, tenants, objects, roles, and lifecycle transitions into a reproducible permission matrix.
- [Webhooks and integration events: authenticity, tenant binding and replay](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/modules/webhook-event-integrity.html) — Verify the event signature, provider-to-tenant binding and durable worker effect together across retries and out-of-order delivery.

[Find the associated command snippets](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/commands.html?q=Workflow%20invariants%2C%20replay%2C%20idempotency%2C%20and%20races)

## Referenced by these target playbooks

[Web & API](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/web-api.html) · [OSS & self-hosted](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/oss.html) · [Mobile](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/mobile.html) · [Desktop & extensions](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/desktop.html) · [Cloud & containers](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/cloud.html) · [Web3 & protocols](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/web3.html)

## Report checklist

- [ ] Capture the affected version, configuration, identities, and object ownership.
- [ ] Preserve a valid baseline and a negative control.
- [ ] Reproduce the forbidden data access, action, or state change on controlled fixtures.
- [ ] Explain the intended security rule and why the observed behavior violates it.
- [ ] State prerequisites, uncertainty, cleanup, and the smallest demonstrated impact.

## Conditional ATT&CK mapping

No direct ATT&CK mapping selected. Record the weakness and demonstrated impact without forcing an adversary-behavior classification. See the [mapping guide](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/attack.html).

## Primary references

- [PortSwigger business logic](https://portswigger.net/web-security/logic-flaws)
- [Stripe webhook verification, ordering and duplicate handling](https://docs.stripe.com/webhooks)

[Back to the complete vulnerability catalog](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities.html)
