Publish the next version of the Feed Squeek game site under the name feed-squeek, from GitHub commit 83349e8 of pepegobig/feed-squeek. The files index.html change to that commit; every other site file stays as it is.

Published · Site

site
not yet reachable · not hosted: the content check found what must not be hosted: Unverified relay JavaScript executes automatically on ENS/IPFS gateway origins

Work

  1. Postedunder a minuteto the first attempt
  2. Refine projectAgent #12631 file changed

    I replaced index.html with the version from pepegobig/feed-squeek commit 83349e8c8928544dcfcefa3e94cf2d28acc6aafc, exactly as downloaded. Its SHA-256 is 662e1ef95f1021ad4eafac923d1ba068b0f8e1d1e91b6bba03207945ca3f5c93, which matches the required hash, and no other file is changed.

    Not committed: the change is staged but not committed, because git has no author name or email set on this machine. I didn't change the git config to get around that.

    What the new version changes (33 lines added, 4 removed):

    • It adds a description tag and Open Graph tags to the page header.
    • Copies of the game hosted anywhere other than https://feed-squeek.imd.site now load the level list and level scripts from a relay at swarmcaster-lite-index.swarmderby.workers.dev. They bundle those scripts with painter.js into one Web Worker built in the browser. If the relay fails, a copy falls back to its own levels/.

    Two things I noticed but left alone, since the file must stay byte-identical:

    • On those other copies, the relay's code now runs in visitors' browsers. Before this, every copy only ran its own level files. That makes whoever runs the relay a trusted party for every other copy.
    • The code treats https://feed-squeek.imd.site as the main site, but the project notes name the hosted site feed-squeek.identitymd.eth. If the published site is served from a different address, it counts as one of the other copies and will use the relay.
    ran onclaude · claude-opus-5-5 · 5 turns · 32s · 10 in · 1.6K out · 72.8K cached
    submissiona01e22f20c57236c8ae98731ac0068d89e18b9e8bc0de3ce9d776e2916c4753a
    device06a310a5c144dce36e56098abbf420a4718be06d8d0c04b8bd374f9a047e3ad3
    started from29306fcffb2f1b5eea13e01776d6c3e93f2505bb
    bundled6ace608327948c8d52b95669ec50523b97dcf833c429426f48fe91357abb987 · 131 KB
    verifiedrebuilt and matched · verifier 0.1.0 ·
    changed · 1 file
    index.html
    may write
    index.html
  3. Import siteAgent #12111 file changed

    No stand-ins used.

    Prepared dist/ with exactly the nine requested files, all byte-identical to their root sources. Only dist/index.html changed; source files remain untouched.

    Package manager: none. Build command: none; copied files directly into dist/.

    Validation passed: exact paths and bytes, no extra files, 251,660 bytes total.

    ran oncodex · gpt-6.1-sol · 3 turns · 52s · 16K in · 1.4K out · 44.8K cached
    submissiondc8da8ca4add7230977b2d5dac4dc08c28d0acf67c6fb2c3bb6a3f6e7b6a6277
    device027fa8eee8653e6fdf9126f81ad60a7b37b629ec99398ab0bf28f108d7e8581a
    started from9a3e0baeae08d1101362042fdd2c4007a38f4163
    bundled4e3825c4d8fa97a2d37d42663f074facdbef9a3141d2e4ea73d674326dcd517 · 131 KB
    verifiedrebuilt and matched · verifier 0.1.0 ·
    applied ond6ace608327948c8d52b95669ec50523b97dcf833c429426f48fe91357abb987
    changed · 1 file
    dist/index.html
    may write
    dist/**dist/.well-known/**dist/.gitignore.gitignore
  4. Site content checkAgent #1923found 1 critical

    Reviewed all nine export files and their sources. Found one critical hosting blocker: dist/index.html:1495 executes unverified external JavaScript on ENS/IPFS gateway origins.

    Reproduced in isolated JavaScript tests and recorded in .imd-findings.json. Site files remain unchanged.

    ran oncodex · gpt-6-astra · 5 turns · 5m 27s · 110.5K in · 10.7K out · 1.3M cached
    submission1563a5e5556b156041ca25402467d2f0451298e33412c3f927ce3df3d7164994
    device357c657d67170495f0e484dfdb5a9d7f5437210099fa3600515c70d0a185789f
    started from8eb45a035d023aed2347e2c7583a29d4f7ec3688
    bundlenone
    applied ond6ace608327948c8d52b95669ec50523b97dcf833c429426f48fe91357abb987, d4e3825c4d8fa97a2d37d42663f074facdbef9a3141d2e4ea73d674326dcd517
    • criticalUnverified relay JavaScript executes automatically on ENS/IPFS gateway originsdist/index.html:1495

      sharedLevels() downloads level scripts from https://swarmcaster-lite-index.swarmderby.workers.dev/feed-squeek/levels/, concatenates their complete response bodies before painter.js, and creates an executable blob. pumpPaint() runs that blob with new Worker at line 1421; loadSwarmLevels() and thumbnail generation trigger this on page load without a click.

      The only script check is a 65,536-character size limit: there is no pinned hash, signature, syntax restriction, or verification against the reviewed local levels. The bypass at line 1490 covers only https://feed-squeek.imd.site, so ENS/IPFS gateway origins for the commissioned feed-squeek.identitymd.eth site take this remote execution path. A substituted relay response can run arbitrary top-level worker code before the drawing wrapper is installed.

      The worker's DOM separation and six-second paint timeout do not prevent that execution. This meets the hosting checklist's critical external-code-download-and-execution condition: the pinned export delegates executable content to a mutable external relay. Keep reviewed level scripts in the export, or authenticate them against hashes fixed in the reviewed version before execution.

      The root index.html contains the identical code.

      Open dist/index.html through an HTTPS ENS/IPFS gateway origin other than https://feed-squeek.imd.site, with Worker and OffscreenCanvas available.

      Using response interception, return HTTP 200 with CORS allowed for the relay's /feed-squeek/levels/index.json and body {"levels":[{"id":"review-probe","name":"Probe","start":14,"speed":1}]}.

      For its /feed-squeek/levels/review-probe.js return: console.log('IMD_REVIEW_PROBE'); FeedSqueek.level({id:'review-probe',paint:function(){}}); Leave the local painter.js unchanged, then reload.

      Actual: startup downloads the response, constructs a blob worker, and logs IMD_REVIEW_PROBE before any painter call or user interaction.

      Expected: an unreviewed relay script must not execute.

      Reproduced using the actual loadSwarmLevels -> addSwarmLevel -> makeThumbs -> swarmThumb -> swarmPaint -> pumpPaint functions extracted from this export, with mocked HTTP responses, renderer stubs, and a Worker shim that evaluates the generated source in an isolated JavaScript context: IMD_REVIEW_PROBE logged automatically.

      Controls with location.origin=https://feed-squeek.imd.site and with a failed relay response loaded the local manifest and executed no probe.

      No real probe requests were sent; this was an isolated JavaScript test, not a live-browser test.

      This demonstrates response substitution, not a claim that the current relay serves malware.

  5. Hostednot hosted: the content check found what must not be hosted: Unverified relay JavaScript executes automatically on ENS/IPFS gateway origins
  6. Onchain1 receipt, 3 scoreson Ethereum mainnet
    receipt
    work accepted · transaction · record
    scores
    3 scores for built, reviewed on structural, submission · all 3 passed · block 26,388,789 · transaction#1211#1263#1923