You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Default case-initnetwork_profile.notes always includes the preset name offline-sample, so the substring sample matches even when no real sample readiness exists.
Accepted extensions omit common RE types (.elf / .so / .dll / .dex / .wasm / .dylib / .img).
CI only fixtures sample.apk.
Impact
Offline gate does not actually verify sample readiness.
Hand-written scopes without that notes line may false-fail; standard init output may false-pass.
Proposed directions (please choose / adjust)
Minimal parity fix — bash default AUTH_BASIS=own_system when --auth-granted without --auth-basis; leave offline cue logic unchanged for now.
Contract-strict — require explicit --auth-basis when --auth-granted (fail init otherwise); validate basis against the scope-contract allow-list in both .sh and .ps1.
Offline cue — check in_scope.assets paths (or a dedicated sample field) instead of grepping free text; either extend the extension list or accept any existing file path recorded by init.
Please tell us which option (or hybrid) you want, and whether case-guard may accept a non-empty sample path under in_scope.assets without matching .apk/.bin/.exe.
Summary
Unreported finding (no open PR on this topic). Two related authorization / scope contract gaps in the case-gate scripts.
Reporter note: 先徵求作者方向,我會根據意見再開 PR;本 issue 不直接改行為。
Finding 1 —
case-init.shdefaultauth.basisviolates the scope contract + bash/PS driftEvidence
skills/scripts/case-init.shline 16:AUTH_BASIS="unknown"skills/scripts/case-init.ps1line 18:[string] $AuthBasis = 'own_system'skills/ops/scope-contract.mdline 52 allows only:written_contract | bug_bounty_scope | ctf_public | own_system | lab_onlyRepro (bash)
Emits
auth.status=granted ... ready_for_act=trueand:Impact
basison Windows vs Linux/macOS.Finding 2 —
case-guardoffline “sample cue” is effectively a no-opEvidence
skills/scripts/case-guard.sh~line 79 /case-guard.ps1~line 64 require cue tokens:sample|offline.?path|本地.?样本|\.apk\b|\.bin\b|\.exe\bcase-initnetwork_profile.notesalways includes the preset nameoffline-sample, so the substringsamplematches even when no real sample readiness exists..elf/.so/.dll/.dex/.wasm/.dylib/.img).sample.apk.Impact
Proposed directions (please choose / adjust)
AUTH_BASIS=own_systemwhen--auth-grantedwithout--auth-basis; leave offline cue logic unchanged for now.--auth-basiswhen--auth-granted(fail init otherwise); validate basis against the scope-contract allow-list in both.shand.ps1.in_scope.assetspaths (or a dedicated sample field) instead of grepping free text; either extend the extension list or accept any existing file path recorded by init.Please tell us which option (or hybrid) you want, and whether
case-guardmay accept a non-empty sample path underin_scope.assetswithout matching.apk/.bin/.exe.I will open a PR only after your decision.
Scope exclusion
sed -i, so Test 4/5 (case-guard reject path) never run #135 / PR fix(scripts): portable sed for macOS bash workflow tests #145 (macOS sed in the test harness).