Skip to content

bug: Markdown delimiter mismatch can bypass the shared mention gate #332

Description

@kiki830621

Problem

Original text — Codex independent review of issue 331:
不完整的 Markdown code-span 解析可繞過未授權 mention gate

既有共用 scripts/gh-egress.sh 以簡化的 awk fence切換與sed inline-code移除,判斷哪些mention
不會通知使用者。解析結果與GFM不一致時,實際位於普通文字的mention會被移除而未受審查。
這個行為存在於3.0.0既有gate;新idd-discuss使用同一gate時也受到影響。

Type

bug

Priority

P1 — 共用通知授權邊界,可本地重現。

Reproduction

以下僅需check-only或fake gh,禁止以真實comment重現:

mention = chr(64) + "octocat"
case1 = "```text\n```not-a-close\n```\n" + mention
case2 = "`text " + mention + " ``"

將各body存入本地fixture,執行gh-egress.sh check --body-file <fixture> --scrub-attested warn
兩例均回傳0。第一例的第二行不是合法closing fence,第三行才關閉;第二例沒有相同長度的
inline code delimiters。因此渲染後仍有普通文字mention,應要求mention attestation。

Expected

  • 不確定或未配對的Markdown語法不能成為略過mention檢查的依據。
  • 共用出口能正確處理fence長度、info string、delimiter配對與未關閉情境。
  • 修正需經行為反例與既有合法code引用的回歸測試,不能只補字串斷言。
  • 不複製第二份scanner到idd-discuss;修正須位於canonical共用出口。

Actual

兩個未獲mention授權的body都通過檢查。這次只執行本地check,未對外發送任何測試通知。

Impact

通知對象的明確授權可能被繞過。Refs #331;該功能的verify因此不能判定通過。

Acceptance

  • 上述兩個反例在沒有attestation時拒絕。
  • 不同長度fence/假closing info string/未配對inline delimiters有測試。
  • 既有issue dispatch與Discussion check路徑共享修正,完整fixture suite通過。
  • 經獨立security review,不以renderer「沒認出」作為permission。

Current Status

Phase: verified
Last updated: 2026-09-07 by idd-all (Codex compatibility mode)

Tasks

Detailed checklist: openspec/changes/add-idd-discuss/tasks.md on codex/331-idd-discuss.

Verification

56 fixture suites, zero failures. Five independent Codex-native reviewer roles plus a separately
governed gpt-5.6-sol/xhigh reviewer passed the stated scope. This is not the canonical Claude-family
ensemble; see the full disclosure.

Related PR

#334

Remaining outside this scope

#333 tracks an independently confirmed preexisting argument-parser issue, not reachable through
publisher's fixed argument shape. No merge or issue closure has been performed.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions