{"id":"CVE-2026-58412","kind":"vulnerability","aliases":["CVE-2026-58412"],"related":[],"title":"Filecoin Pin upload action spends owner's wallet on fork artifacts","description":"Filecoin Pin is an IPFS Pinning Service API implementation that pins to Filecoin's PDP service. Prior to 1.1.0, the upload GitHub Action's fork detection in `upload-action/src/build.js` checks only `event.pull_request`. In the documented two-workflow pattern, an untrusted fork pull-request workflow produces an artifact and a privileged `workflow_run` workflow downloads and uploads it. Because `workflow_run` has no `event.pull_request`, `isForkPR` becomes false and `uploadStatus` becomes `pending-upload`. The action later resolves `workflow_run.pull_requests` without repeating the fork check before initializing the wallet with `walletPrivateKey` and uploading the artifact. An external contributor can therefore cause attacker-controlled artifacts to be stored using the repository owner's Filecoin wallet, incurring unauthorized storage expenditure, dataset pollution and consumption of configured wallet funds. Disclosure of the wallet private key is not required. The 0.x action line is not receiving a backport and must be migrated to a fixed 1.x release. This issue is fixed in version 1.1.0.","summary":"The Filecoin Pin upload GitHub Action skips its fork check in workflow_run runs, so artifacts from an outside pull request get uploaded. An external contributor can make those uploads run on the repository owner's Filecoin wallet, spending its funds and storing attacker-chosen data.","severity":"high","cvss":8.2,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["ci","filecoin","github-actions","ipfs","package"],"not_affected_if":["fixed-version","no-wallet-secret","no-workflow-run"],"how_to_check":"- Find workflows that use the Filecoin Pin upload action and check the version pinned, for example `uses: .../upload-action@0.x` or a `1.x` tag.\n- Look for a `workflow_run` trigger that downloads an artifact produced by a pull_request workflow and then calls the upload action with `walletPrivateKey`.\n- Check whether that wallet key is set in the repository or organization secrets.","fix":"- Filecoin Pin upload action: move to `1.1.0` or later.\n- The 0.x line is not receiving a backport, so 0.x users must migrate to a fixed 1.x release.","status":"open","published_at":"2026-10-30T21:17:12+00:00","first_seen_at":"2026-10-30T21:25:53+00:00","triaged_at":"2026-10-30T21:26:39+00:00","updated_at":"2026-10-30T21:26:39+00:00","category":"package","confidence":0.75,"triage":{"at":"2026-10-30T21:26:39Z","model":"claude-haiku-5-5","output":{"fix":"- Filecoin Pin upload action: move to `1.1.0` or later.\n- The 0.x line is not receiving a backport, so 0.x users must migrate to a fixed 1.x release.","reach":"internet","title":"Filecoin Pin upload action spends owner's wallet on fork artifacts","impact":"high","summary":"The Filecoin Pin upload GitHub Action skips its fork check in workflow_run runs, so artifacts from an outside pull request get uploaded. An external contributor can make those uploads run on the repository owner's Filecoin wallet, spending its funds and storing attacker-chosen data.","audience":"developers","category":"package","nicknames":[],"who_cares":["github-actions","filecoin","ipfs","ci"],"confidence":0.75,"fix_status":"available","needs_auth":"no","worst_case":"Attacker artifacts uploaded using owner's wallet, spending its funds","analyst_note":"","how_to_check":"- Find workflows that use the Filecoin Pin upload action and check the version pinned, for example `uses: .../upload-action@0.x` or a `1.x` tag.\n- Look for a `workflow_run` trigger that downloads an artifact produced by a pull_request workflow and then calls the upload action with `walletPrivateKey`.\n- Check whether that wallet key is set in the repository or organization secrets.","plain_action":"","needs_analyst":false,"not_affected_if":["fixed-version","no-workflow-run","no-wallet-secret"],"who_is_affected":"Repositories that run the Filecoin Pin upload action in a two-workflow setup, where an untrusted pull_request workflow produces an artifact and a privileged workflow_run workflow uploads it with a wallet key. Workflows that only run on direct pushes or do not hold a Filecoin wallet key are not exposed. Repositories already on a fixed 1.x release are not affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000985,"input_tokens":4417,"output_tokens":1086,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-58412':14A,17A '/src/build.js':102C '0':213C '1':229C '1.1.0':90C,238C 'action':4A,22B,30B,94C,101C,151C,215C 'api':79C 'artifact':11A,40B,123C,170C,180C 'attack':69B,178C 'attacker-chosen':68B 'attacker-control':177C 'backport':221C 'becom':142C,146C 'caus':176C 'check':34B,103C,160C 'chosen':70B 'ci':18B 'configur':200C 'consumpt':198C 'contributor':50B,173C 'control':179C 'cve':12A,15A 'data':71B 'dataset':195C 'detect':97C 'disclosur':203C 'document':109C 'download':130C 'event.pull':105C,139C 'expenditur':194C 'extern':49B,172C 'fals':143C 'filecoin':1A,19B,26B,61B,72C,84C,189C 'fix':228C,235C 'fork':10A,33B,96C,116C,159C 'fund':65B,202C 'get':46B 'github':21B,29B,93C 'github-act':20B 'implement':80C 'incur':191C 'initi':162C 'ipf':23B,76C 'isforkpr':141C 'issu':233C 'key':208C 'later':152C 'line':216C 'make':52B 'migrat':225C 'must':223C 'outsid':43B 'owner':6A,59B,187C 'packag':24B 'pattern':113C 'pdp':86C 'pend':148C 'pending-upload':147C 'pin':2A,27B,73C,77C,82C 'pollut':196C 'prior':88C 'privat':207C 'privileg':126C 'produc':121C 'pull':44B,118C 'pull-request':117C 'receiv':219C 'releas':231C 'repeat':157C 'repositori':58B,186C 'request':45B,106C,119C,140C,155C 'requir':211C 'resolv':153C 'run':37B,38B,55B,128C,136C 'servic':78C,87C 'skip':31B 'spend':5A,63B 'storag':193C 'store':67B,183C 'therefor':175C 'two':111C 'two-workflow':110C 'unauthor':192C 'untrust':115C 'upload':3A,28B,47B,54B,92C,100C,132C,149C,168C 'upload-act':99C 'uploadstatus':145C 'use':184C 'version':237C 'wallet':8A,62B,164C,190C,201C,206C 'walletprivatekey':166C 'without':156C 'workflow':36B,112C,120C,127C,129C,135C 'workflow_run.pull':154C 'x':214C,230C","nicknames":[],"mitigations":[],"who_affected":"Repositories that run the Filecoin Pin upload action in a two-workflow setup, where an untrusted pull_request workflow produces an artifact and a privileged workflow_run workflow uploads it with a wallet key. Workflows that only run on direct pushes or do not hold a Filecoin wallet key are not exposed. Repositories already on a fixed 1.x release are not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"first_public_at":"2026-10-30T21:17:12+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:N/I:H/A:L","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-58412","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-58412","severity":null,"published_at":"2026-10-30T21:17:12+00:00","modified_at":"2026-10-30T21:17:12+00:00","first_seen_at":"2026-10-30T21:25:53+00:00","fetched_at":"2026-10-30T21:25:53+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}