Skip to content

docs(security): add Black Hat 2025 misuse playbook and critical routing#22282

Closed
BrianCLong wants to merge 1 commit intomainfrom
codex/address-this-issue
Closed

docs(security): add Black Hat 2025 misuse playbook and critical routing#22282
BrianCLong wants to merge 1 commit intomainfrom
codex/address-this-issue

Conversation

@BrianCLong
Copy link
Copy Markdown
Owner

Motivation

  • Provide a single, governed response that subsumes the Black Hat 2025 misuse examples into operational controls for the platform.
  • Ensure high-risk prompt patterns (misinformation campaigns, insider sabotage, behavior-poisoning, covert instruction channels) are deterministically short-circuited to refusal + incident workflows.
  • Align the response with the MAESTRO threat-model layers, policy-as-code expectations, auditability requirements, and evidence retention rules.

Description

  • Added docs/security/BLACKHAT_2025_MISUSE_RESPONSE_PLAYBOOK.md which defines abuse patterns, required controls (pre-generation classifier, generation guardrails, post-generation validator, learning-loop isolation, evidence requirements), detection signals, and an incident response workflow.
  • Updated docs/security/PROMPT_INJECTION_QUICK_REFERENCE.md to normalize formatting and code examples, improve tables for readability, and add a new High-Risk Misuse Routing (Critical) section that instructs engineers to apply a critical misuse classifier and route matches to refusal + telemetry + quarantine.
  • Linked the quick-reference guidance to the new playbook and kept non-negotiables and verification gates to ensure auditability and policy enforcement.

Testing

  • Ran formatting checks with pnpm exec prettier --check docs/security/BLACKHAT_2025_MISUSE_RESPONSE_PLAYBOOK.md docs/security/PROMPT_INJECTION_QUICK_REFERENCE.md which initially reported style issues and then re-ran pnpm exec prettier --write to fix formatting.
  • Re-checked formatting with pnpm exec prettier --check and verified all modified files match Prettier style.
  • No runtime code changes were made and no unit/integration tests were modified; formatting checks succeeded.

Codex Task

@BrianCLong BrianCLong added the codex Codex-owned implementation work label Mar 31, 2026 — with ChatGPT Codex Connector
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 31, 2026

Warning

Rate limit exceeded

@BrianCLong has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 23 minutes and 48 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 23 minutes and 48 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 15d426bc-d3ba-4b86-bd85-0a205451a70b

📥 Commits

Reviewing files that changed from the base of the PR and between 12cad4a and be750c8.

📒 Files selected for processing (2)
  • docs/security/BLACKHAT_2025_MISUSE_RESPONSE_PLAYBOOK.md
  • docs/security/PROMPT_INJECTION_QUICK_REFERENCE.md
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/address-this-issue

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a comprehensive security playbook for responding to AI-enabled misuse patterns and updates the prompt injection quick reference guide with formatting improvements and a new section on high-risk routing. The review feedback suggests strengthening the policy for hidden instruction channels by using a hard deny and clarifying the recovery threshold criteria in the incident response workflow.

| User asks for mass misinformation planning | Critical MA/PI | **Hard deny** + safe alternative guidance | Security on-call + Trust & Safety |
| Prompt requests sabotage of employer systems or workforce transition | High IN/DP | **Hard deny** + insider-risk warning | Security + HR/legal workflow |
| Content appears to poison behavior/feedback loops | High DP/GH | Quarantine artifact, block learning path | ML security review |
| Hidden instruction channel detected | High PI/TI | Strip, sanitize, and re-run policy checks | SOC triage |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security-medium medium

The action for "Hidden instruction channel detected" is currently "Strip, sanitize, and re-run policy checks". Since a hidden channel (e.g., invisible characters, steganography) is a deliberate attempt to bypass security controls, it should be treated with the same severity as other high-risk misuse. Simply stripping the content and proceeding might allow the rest of the prompt to execute, which could still be part of a multi-stage attack. Consider changing the default action to a Hard deny to align with the "High PI/TI" classification and the handling of other high-risk scenarios in this table.

Suggested change
| Hidden instruction channel detected | High PI/TI | Strip, sanitize, and re-run policy checks | SOC triage |
| Hidden instruction channel detected | High PI/TI | **Hard deny** + incident logging | SOC triage |

2. **Classify:** map event to MAESTRO layers and STRIDE+AI category.
3. **Notify:** trigger Security + Trust response channel with evidence bundle.
4. **Eradicate:** patch policy rules, expand signatures, and backtest recent sessions.
5. **Recover:** re-enable traffic only after false-negative sampling passes threshold.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The phrase "after false-negative sampling passes threshold" is ambiguous. In a security context, you typically want the false-negative rate to be below a maximum allowable threshold. It would be clearer to specify that the rate must fall below the threshold or that the sampling results must meet the required safety criteria.

Suggested change
5. **Recover:** re-enable traffic only after false-negative sampling passes threshold.
5. **Recover:** re-enable traffic only after false-negative sampling falls below the safety threshold.

@github-actions github-actions bot enabled auto-merge (squash) March 31, 2026 08:45
BrianCLong added a commit that referenced this pull request Mar 31, 2026
## Summary

Rebuilds the golden-main merge train from a clean `main` base and
converges the currently mergeable PR set into one replacement branch.

This branch absorbs:
- #22296
- #22279
- #22281
- #22282
- #22283
- #22284
- #22285
- #22295
- #22297
- #22286
- #22291
- #22280
- #22277
- unique non-conflicting surfaces from #22241
- the admissibility/CACert/failure-demo runtime lane from #22314

This branch supersedes:
- #22298 as the contaminated/conflicting convergence branch
- #22277 as a standalone merge vehicle
- #22241 as the broad mixed-purpose convergence vehicle once remaining
review is complete
- #22314 as the standalone admissibility lane now folded into the golden
path

This branch intentionally excludes:
- #22292 because it targets `merge-surge/staging`, not `main`

## Conflict policy used while absorbing #22241

When merging `#22241` on top of the cleaned train, the following files
conflicted and were resolved in favor of the current train versions so
the newer focused CI/governance repairs remain authoritative:
- `.github/ci/required-checks.json`
- `.github/workflows/drift-sentinel.yml`
- `.github/workflows/pr-gate.yml`
- `docs/ci/REQUIRED_CHECKS_POLICY.yml`
- `pnpm-lock.yaml`
- `scripts/ci/check_branch_protection_drift.mjs`
- `scripts/ci/validate_workflows.mjs`

All other `#22241` changes merged on top of the train.

## Mapping Change Summary

This convergence branch updates workflow, schema, and governance
contracts that control merge eligibility, admissibility evidence, and
deterministic trust artifacts.

## Diff

- Added admissibility/evidence/CACert surfaces including
`packages/evidence/schemas/decision_trace.schema.json`
- Tightened golden-lane workflow policy and drift handling in
`.github/workflows/_policy-enforcer.yml`,
`.github/workflows/execution-graph-reconciliation.yml`,
`.github/workflows/post-ga-hardening-enforcement.yml`,
`.github/workflows/merge-surge.yml`,
`.github/workflows/control-plane-drift.yml`
- Realigned governance state in `governance/pilot-ci-policy.json` and
`governance/branch-protection.json`
- Repaired deterministic reconciliation verification in
`scripts/ci/verify_execution_graph_reconciliation.mjs` and
`scripts/ci/drift-sentinel.mjs`

## Justification

The repo needed one mergeable replacement lane that restores
deterministic governance checks, folds the admissibility implementation
into the golden path, and suppresses broken optional PR workflows that
were blocking convergence without being canonical required checks.

## Impact

- Canonical pilot checks remain `pr-gate / gate` and `drift-sentinel /
enforce`
- Merge-train branches no longer fail ordinary small-PR enforcement
gates by construction
- Optional broken workflows are narrowed to their owned surfaces so they
stop contaminating this convergence lane and the immediate post-merge
main push
- Execution-graph reconciliation now accepts the repo’s canonical
snake_case trust bundle fields

## Rollback Plan

Revert commit `ce32b96c0f` from
`merge-train/golden-main-20260331-final`, then rerun the prior
golden-lane checks and restore the previous PR body.

## Backfill Plan

After the lane is green, backfill the same workflow scoping and
governance-contract repairs into any surviving PRs that still touch
`.github/workflows/**` or governance surfaces, then close superseded PRs
against `#22309`.

## Validation Evidence

Local validation completed:
- `node scripts/ci/drift-sentinel.mjs`
- `ruby -e 'require "yaml"; ... YAML.load_file(...)'` over all edited
workflow files
- `jq . governance/pilot-ci-policy.json`
- `jq . governance/branch-protection.json`
- merge-marker scan over all edited files returned clean

## Notes

- Live GitHub PR checks on the open PR set are being converged through
this single branch instead of salvaging each broken lane independently.
- I did not run the full local verification matrix in this session; this
PR is intended to give the repo one clean convergence lane for CI and
human review.
- After this PR lands, the absorbed PRs should be closed as superseded.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
Co-authored-by: Bot <bot@summit.ai>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Gemini CLI <gemini-cli@google.com>
@BrianCLong
Copy link
Copy Markdown
Owner Author

Superseded by #22309, which is now merged into main.

@BrianCLong BrianCLong closed this Mar 31, 2026
auto-merge was automatically disabled March 31, 2026 20:10

Pull request was closed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-merge codex Codex-owned implementation work risk:low

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant