{"id":"CVE-2026-119546","kind":"vulnerability","aliases":["CVE-2026-119546"],"related":[],"title":"Forgejo: restore-repo path traversal reads files outside the dump directory","description":"Forgejo through 15.0.11, 16.0.0 through 16.0.7, and 17.0.0 through 17.0.1 contains a path traversal vulnerability in restore-repo that allows attackers to read files outside the dump directory via crafted asset paths. Attackers can supply a dump whose release.yml DownloadURL or PatchURL contains ../ sequences, importing files like app.ini as release attachments when an administrator restores it.","summary":"Forgejo's restore-repo command trusts ../ sequences in a dump's release.yml download or patch URLs. A crafted dump lets an attacker make a restore import files like app.ini, outside the dump directory, as release attachments.","severity":"medium","cvss":6.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["forgejo","git","package","self-hosted"],"not_affected_if":["no-restore-repo-use","trusted-dumps-only"],"how_to_check":"- Run `forgejo --version` on the server and compare it with the affected ranges: through 15.0.11, 16.0.0 through 16.0.7, and 17.0.0 through 17.0.1.\n- Check whether the team has used `restore-repo` with dump files from outside sources.","fix":"- Forgejo through 15.0.11 is affected; the sources do not state a fixed version for each branch.\n- Forgejo 16.0.0 through 16.0.7 is affected; the sources do not state a fixed version.\n- Forgejo 17.0.0 through 17.0.1 is affected; the sources do not state a fixed version.","status":"open","published_at":"2026-10-30T12:16:40+00:00","first_seen_at":"2026-10-30T12:30:26+00:00","triaged_at":"2026-10-30T12:32:32+00:00","updated_at":"2026-10-30T12:32:32+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-30T12:32:32Z","model":"claude-haiku-5-5","output":{"fix":"- Forgejo through 15.0.11 is affected; the sources do not state a fixed version for each branch.\n- Forgejo 16.0.0 through 16.0.7 is affected; the sources do not state a fixed version.\n- Forgejo 17.0.0 through 17.0.1 is affected; the sources do not state a fixed version.","reach":"unknown","title":"Forgejo: restore-repo path traversal reads files outside the dump directory","impact":"medium","summary":"Forgejo's restore-repo command trusts ../ sequences in a dump's release.yml download or patch URLs. A crafted dump lets an attacker make a restore import files like app.ini, outside the dump directory, as release attachments.","audience":"businesses","category":"package","nicknames":[],"who_cares":["forgejo","self-hosted","git"],"confidence":0.6,"fix_status":"unknown","needs_auth":"no","worst_case":"Server files outside the dump directory are read and attached to releases","analyst_note":"Confirm the fixed versions for each Forgejo branch from the Forgejo release notes or the NVD entry for CVE-2026-119546.","how_to_check":"- Run `forgejo --version` on the server and compare it with the affected ranges: through 15.0.11, 16.0.0 through 16.0.7, and 17.0.0 through 17.0.1.\n- Check whether the team has used `restore-repo` with dump files from outside sources.","plain_action":"","needs_analyst":true,"not_affected_if":["no-restore-repo-use","trusted-dumps-only"],"who_is_affected":"Teams that run a self-hosted Forgejo instance on an affected version and restore repositories from dump files, especially dumps from untrusted sources. The attacker needs a dump they can get an administrator to restore. Teams that never run restore-repo on outside dumps are less exposed.","user_interaction":"yes","needs_special_setup":"unknown","severity_if_unknown":"medium"},"cost_usd":0.000759,"input_tokens":4192,"output_tokens":679,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-119546':15A,18A '-2026':14A,17A '15.0.11':64C '16.0.0':65C '16.0.7':67C '17.0.0':69C '17.0.1':71C 'administr':116C 'allow':82C 'app.ini':54B,110C 'asset':93C 'attach':61B,113C 'attack':47B,83C,95C 'command':30B 'contain':72C,105C 'craft':43B,92C 'cve':13A,16A 'directori':12A,58B,90C 'download':38B 'downloadurl':102C 'dump':11A,35B,44B,57B,89C,99C 'file':8A,52B,86C,108C 'forgejo':1A,19B,25B,62C 'git':20B 'host':24B 'import':51B,107C 'let':45B 'like':53B,109C 'make':48B 'outsid':9A,55B,87C 'packag':21B 'patch':40B 'patchurl':104C 'path':5A,74C,94C 'read':7A,85C 'releas':60B,112C 'release.yml':37B,101C 'repo':4A,29B,80C 'restor':3A,28B,50B,79C,117C 'restore-repo':2A,27B,78C 'self':23B 'self-host':22B 'sequenc':32B,106C 'suppli':97C 'travers':6A,75C 'trust':31B 'url':41B 'via':91C 'vulner':76C 'whose':100C","nicknames":[],"mitigations":[],"who_affected":"Teams that run a self-hosted Forgejo instance on an affected version and restore repositories from dump files, especially dumps from untrusted sources. The attacker needs a dump they can get an administrator to restore. Teams that never run restore-repo on outside dumps are less exposed.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"unknown","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T12:16:40+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:P/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-119546","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-119546","severity":null,"published_at":"2026-10-30T12:16:40+00:00","modified_at":"2026-10-30T12:16:40+00:00","first_seen_at":"2026-10-30T12:30:26+00:00","fetched_at":"2026-10-30T12:30:26+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"}