Skip to content

security: strip ambient Wiki Git transport authority - #6

Merged
overdrivemh merged 4 commits into
mainfrom
deployment/wiki-git-ambient-trust-7259-20261001
Oct 5, 2026
Merged

overdrivemh merged 4 commits into
mainfrom
deployment/wiki-git-ambient-trust-7259-20261001

Conversation

@overdrivemh

Copy link
Copy Markdown
Owner

OWNER=builder:deployment
PARENT=overdrivemh/Mocc#7259
DEDICATED_REPO_OWNER=overdrivemh/Mocc#8668:5814929884
DEDICATED_REPO_LAW=overdrivemh/Mocc#8666/#8667
FINDING=RW-MCP-WIKI-GIT-AMBIENT-TRUST-004
FINDING_AUTHORITY=overdrivemh/Mocc#7259:5846023767
PROVIDER_FREE_REPRO=overdrivemh/Mocc#7259:5859575897
BASE=8c3fee2285ccf000ff45fe20f8a4573cab972f26
EXACT_HEAD=f88fae7319e9e10338015fa7b0481920f070912f
PROVIDER_MUTATION=false
AWS_MUTATION=false
PRODUCT_ACCEPTANCE=false
HOSTED_FALLBACK=false
REPO_LOCAL_QT=true
REPO_LOCAL_RRPA=true
POST_MERGE_PROOF_DEFERRAL_ALLOWED=conditional_only_under_overdrivemh/Mocc#8767:5820851290_after_independent_exact_head_source_clear

Outcome

Close the existing P2 credential-transport trust gap in the Wiki Git subprocess without redesigning native Git or mixing in the separate clone-resource acquisition problem.

The Wiki Git child already strips ambient credentials/config and adds a request-scoped Authorization extraheader. This change also strips ambient proxy/TLS/Git transport authority before that credential-bearing child starts.

Exact correction

wikiGitProcessEnv now removes, case-insensitively:

  • HTTP/HTTPS/ALL proxy variables plus NO_PROXY;
  • Git CA path/file and no-verify overrides;
  • SSL_CERT_FILE / SSL_CERT_DIR / CURL_CA_BUNDLE;
  • GIT_PROXY_COMMAND;
  • the pre-existing ambient credential, askpass and Git-config variables.

The explicit child-owned settings remain:

  • terminal prompting disabled;
  • credential helper disabled;
  • global/system Git config disabled;
  • only the exact request-scoped GitHub HTTPS Authorization extraheader when a request token exists.

Tokenless Git subprocesses receive the same ambient transport-authority stripping.

Hostile regression

pkg/github/wiki_test.go injects upper-, lower- and mixed-case proxy/TLS/Git transport variables and proves neither their keys nor values survive in child Git environment for:

  1. request-token mode;
  2. tokenless mode.

Boundaries

UNCHANGED:

  • HTTPS-only Wiki remote admission;
  • request-context token custody;
  • expected-head/publish semantics;
  • page/path controls;
  • Git output redaction;
  • provider/runtime/Registry/Integration/Product Acceptance authority.

NOT_CLOSED_BY_THIS_PR:

Currentness / prefreeze

CURRENT_REPO_MAIN_AT_CONSTRUCTION=8c3fee2285ccf000ff45fe20f8a4573cab972f26
CURRENT_MAIN_OVERLAP=0_of_2
OPEN_PR_OVERLAP=0_of_2_against_PR_5
CHANGED_PATHS=pkg/github/wiki.go;pkg/github/wiki_test.go
FAILURE_ENVELOPE_STATUS=CLOSED_for_ambient_transport_authority
FIRST_RUN_PRECHECK=PASS_provider_free_source
SERIAL_SYMPTOM_PATCHING=false
NEW_GIT_FRAMEWORK=false
NEW_WORKFLOW=false
NEW_PROVIDER_RAIL=false

Required disposition

Independent exact-head security/currentness review first. If P0=0/P1=0 and exact-base/currentness remains clear, select only:
go test ./pkg/github

The dedicated repository currently has no accepted local workflow after intentional donor-workflow retirement. Do not create a one-off CI rail or back-credit hosted/local diagnostic execution. If the only missing predicate remains independently clean self-hosted custody, apply the bounded non-circular source class only if every predicate in overdrivemh/Mocc#8767:5820851290 is independently re-established, then retain the exact Go proof as POST_MERGE_ASSURANCE_OWED.

No merge, release, provider, runtime or Product Acceptance authority is claimed by this PR.

Copy link
Copy Markdown
Owner Author

INDEPENDENT_REVIEW_REQUEST=overdrivemh/Mocc#8323:5932201967

Owner prefreeze is complete on exact head f88fae7. Source remains unaccepted until independent disposition; no execution/provider credit is claimed.

Copy link
Copy Markdown
Owner Author

REPOSITORY WATCH P1 SOURCE DEFECT — Wiki Git ambient transport hardening still permits TLS session-key export

WATCH=overdrivemh/Mocc#8323
SUBJECT_REPOSITORY=overdrivemh/mocc-github-mcp-server
SUBJECT_PR=#6
EXACT_HEAD=f88fae7319e9e10338015fa7b0481920f070912f
ROOT_REQUEST=overdrivemh/Mocc#8323:5932201967
FINDING=RW-MCP-WIKI-GIT-AMBIENT-TRUST-004
P0_SOURCE=0
P1_SOURCE=1
SOURCE_CLEAR=false
CURRENTNESS_CLEAR=true_exact_head
PROVIDER_MUTATION=false
PRODUCT_ACCEPTANCE=false

POSITIVE CREDIT:

  • environment filtering is now case-insensitive;
  • HTTP/HTTPS/ALL/NO proxy variables, Git proxy command, Git/curl/SSL CA overrides and GIT_SSL_NO_VERIFY are removed;
  • ambient token/askpass/config injection remains removed;
  • global Git config is forced to os.DevNull and system Git config disabled;
  • token mode uses one request-scoped HTTPS extraheader plus credential.helper disablement; tokenless mode still disables credential helpers;
  • remote admission remains HTTPS-only and subprocess output remains token/auth-header redacted.

P1_FIRST_FALSE=SSLKEYLOGFILE_NOT_STRIPPED

  • blockedPrefixes does not include sslkeylogfile=;
  • the child inherits all non-blocked ambient environment entries unchanged;
  • SSLKEYLOGFILE can enable TLS session-key logging in TLS stacks that honor it, allowing credential-bearing Git HTTPS traffic to become decryptable outside the bounded subprocess output/redaction path;
  • this contradicts the stated property that the child inherits no ambient network/TLS trust or key-export authority.

REQUIRED_MINIMUM_CORRECTION:

  1. Add case-insensitive sslkeylogfile= to the blocked environment set before process construction.
  2. Extend the existing transport-authority hostile test to set mixed-case SSLKEYLOGFILE and prove both the variable name and path/value are absent in token and tokenless modes.
  3. Preserve all existing proxy/CA/no-verify/config/credential-helper/HTTPS-only/output-redaction behavior.

PREVENTION_RULE=credential_bearing_git_transport_must_not_inherit_tls_key_export_authority
RETURN_CONDITION=moved exact head stripping SSLKEYLOGFILE + focused go test ./pkg/github evidence or independent source review.
DO_NOT=weaken_https_only;restore_ambient_proxy_or_CA;claim_runtime_acceptance_from_source.

Copy link
Copy Markdown
Owner Author

REPOSITORY WATCH CHANGED-CAUSE SOURCE CLEAR — Wiki Git TLS key-export authority stripped on moved #6 head

WATCH=overdrivemh/Mocc#8323 under github#1440/github#1452
SUBJECT_REPOSITORY=overdrivemh/mocc-github-mcp-server
SUBJECT_PR=#6
EXACT_HEAD=85be78ee909e76163a7debd2016231b272606b92
PRIOR_RED_HEAD=f88fae7319e9e10338015fa7b0481920f070912f
ROOT_FINDING=#6:5933253301
P0_SOURCE=0
P1_SOURCE=0_for_RW-MCP-WIKI-GIT-AMBIENT-TRUST-004
SOURCE_CLEAR=true_for_this_finding
PROVIDER_MUTATION=false
AWS_MUTATION=false
PRODUCT_ACCEPTANCE=false

CHANGED-CAUSE READBACK:

  • the production delta adds case-insensitive sslkeylogfile= to the same existing blocked ambient transport-authority prefixes before the Wiki Git subprocess is constructed;
  • the existing filter already normalizes environment keys to lowercase, so mixed/upper/lower case TLS key-export variables are denied;
  • the hostile regression adds mixed-case SsLkEyLoGfIlE=/tmp/ambient-tls-keys.log to the same ambient map used for both request-token and tokenless subprocess cases;
  • for every injected transport variable, the test asserts both key and value are absent from the child environment;
  • existing proxy, CA, no-verify, Git proxy, credential/config stripping, HTTPS-only remote admission, credential-helper disablement and output redaction are unchanged.

This closes the exact Watch P1 on source. It does not close the separately declared clone-resource, slow-body, OAuth-error-state or PR #5 native-TLS proof concerns.

NEXT=independent repository-local disposition on exact 85be78e + focused go test ./pkg/github under accepted custody (or only the already-authorised bounded non-circular rule if every predicate is independently re-established) -> expected-head merge/fresh-main.
DO_NOT=credit_source_review_as_runtime_acceptance;weaken_HTTPS_only;restore_ambient_transport_authority.

Copy link
Copy Markdown
Owner Author

REPOSITORY WATCH TARGETED EXACT-HEAD RECENSUS — Wiki Git ambient transport authority

WATCH_AUTHORITY=overdrivemh/Mocc#8323 under github#1440/github#1452
SUBJECT_PR=#6
EXACT_HEAD=85be78ee909e76163a7debd2016231b272606b92
BASE=8c3fee2285ccf000ff45fe20f8a4573cab972f26
TARGET_CLASS=ambient proxy/TLS/Git transport authority on request-token Wiki Git
P0_SOURCE=0
P1_SOURCE=0
WATCH_HOLD=false
PROVIDER_MUTATION=false
PRODUCT_ACCEPTANCE=false

Targeted source readback confirms wikiGitProcessEnv now strips, case-insensitively, ambient proxy variables, Git CA/no-verify controls, SSL_CERT_FILE/SSL_CERT_DIR/SSLKEYLOGFILE/CURL_CA_BUNDLE and GIT_PROXY_COMMAND in addition to prior credential/askpass/Git-config stripping. The child then installs only its explicit no-prompt/no-global-config posture plus request-scoped HTTPS extraheader when a token exists; tokenless mode receives the same transport isolation. Hostiles cover mixed-case transport variables in both token and tokenless modes.

No new P0/P1 was found in this bounded ambient-trust class. This does not close the separately recorded Wiki clone resource-bound or HTTP slow-body/OAuth state findings, and it does not create merge/provider/Product Acceptance authority.

@overdrivemh overdrivemh left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

RRPA PASS_BOUNDED

RR_WORKER=RR3_OTHER_REPOS_OLDEST_FIRST
EXACT_HEAD=85be78ee909e76163a7debd2016231b272606b92
SOURCE_CLEAR=true
P0_SOURCE=0
P1_SOURCE=0
PROOF_CLASS=FOCUSED_QT
PROOF_REASON=credential-bearing Git child transport isolation requires executable confirmation
MERGE_AFTER_PROOF=AUTHORIZED
PRODUCT_ACCEPTANCE=NOT_APPLICABLE

CANDIDATE_RISK_ENVELOPE=Wiki Git subprocess environment authority only
SELECTED_PROOF_PROPERTIES=ambient proxy/CA/no-verify/TLS-keylog/Git-proxy/config credentials removed case-insensitively in token and tokenless modes while explicit HTTPS/request-scoped auth posture remains
SELECTED_TEST_SCOPE=go test ./pkg/github
TEST_SCOPE_RATIONALE=two-file bounded environment hardening
FULL_SUITE_REQUIRED=false
UNRELATED_FAILURES_BLOCKING=false

Independent source read confirms lowercase comparison covers mixed-case environment keys, SSLKEYLOGFILE is stripped, and the same isolation applies with and without request token. No attributable P0/P1 remains.

Copy link
Copy Markdown
Owner Author

RR3 NON-CIRCULAR SOURCE-MERGE ADMISSION — predicates re-established

GENERAL_AUTHORITY=overdrivemh/Mocc#8767:5820851290
DEDICATED_REPO_PRECEDENT=overdrivemh/Mocc#7259:5899267008
SUBJECT_PR=#6
EXACT_HEAD=85be78ee909e76163a7debd2016231b272606b92
CURRENT_MAIN=8c3fee2285ccf000ff45fe20f8a4573cab972f26
INDEPENDENT_REVIEW=5421925645
P0_SOURCE=0
P1_SOURCE=0
CURRENTNESS_CLEAR=true_exact_base_ahead4_behind0
MERGEABLE=true
PROVIDER_MUTATION=false
AWS_MUTATION=false
PRODUCT_ACCEPTANCE=false
RUNTIME_PROOF_CREDIT=0
HOSTED_FALLBACK=false

NON_CIRCULAR_PREDICATES:

  1. independent exact-head source/security review P0=0/P1=0: PASS;
  2. current main is exact candidate base: PASS;
  3. merge cannot trigger provider/GitHub write, deployment, release, Registry/Integration, Product Acceptance or privileged workflow execution: PASS; repository has no accepted local workflow surface;
  4. changed source is fail-closed/non-authorising until separately invoked by governed Wiki Git consumer: PASS;
  5. missing proof is deterministic/provider-free Go assurance and this dedicated repo's accepted precedent treats absent native CI/external physical execution as the same non-circular custody class: PASS;
  6. exact post-merge assurance recorded below: PASS;
  7. no dirty/pre-candidate/hosted run receives credit: PASS;
  8. fresh-main exact-source readback required after merge: BOUND.

POST_MERGE_ASSURANCE_OWED=go test ./pkg/github
POST_MERGE_ASSURANCE_OWNER=github#3386/#7249 + Deployment dedicated-repo owner #7259
GENERAL_PROOF_WAIVER=false
RUNTIME_ACCEPTANCE=false

This admission closes only the ambient proxy/TLS/Git authority source finding. It does not close Wiki clone-resource, HTTP slow-body, OAuth error-state, PR #5 native-TLS proof, provider/runtime or Product Acceptance obligations.

@overdrivemh
overdrivemh merged commit 190ebb9 into main Oct 5, 2026

Copy link
Copy Markdown
Owner Author

RR3 TERMINAL MERGE + FRESH-MAIN VERIFY

MERGED=true
MERGE_COMMIT=190ebb95116c2fff2f7b8f6bce021317174e70c7
EXPECTED_HEAD=85be78ee909e76163a7debd2016231b272606b92
AUTHORITY=overdrivemh/Mocc#8767:5820851290 + #7259:5899267008
FRESH_MAIN_VERIFY=PASS

pkg/github/wiki.go main_blob=37d0c8c65a1d4d6cbc929b6421ba58057cb9d54e == reviewed_head_blob
pkg/github/wiki_test.go main_blob=883093e3490caa7854f3d8aef334a08e3657fcc5 == reviewed_head_blob

P0_SOURCE=0
P1_SOURCE=0
POST_MERGE_ASSURANCE_OWED=go test ./pkg/github through accepted self-hosted Deployment/QT custody
RUNTIME_PROOF_CREDIT=0_until_that_executes
PROVIDER_MUTATION=false
PRODUCT_ACCEPTANCE=false

Fresh-main source is accepted. Preserve separate clone-resource/slow-body/OAuth and #5 proof obligations; this merge does not close them.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant