{"id":"CVE-2026-113429","kind":"vulnerability","aliases":["CVE-2026-113429"],"related":[],"title":"Gitea: Actions artifact downloads let uploaded HTML run scripts on the origin","description":"Legacy (v1 to v3) Actions artifact uploads stored the request's `Content-Encoding` header unchecked in the column that is served as the artifact's `Content-Type` on download, and a value starting with `video/` or `audio/` also removed the sandboxing Content-Security-Policy. A user who can run an Actions job could upload an artifact that a browser renders as HTML on the Gitea origin when the direct artifact download URL is opened, and the URL is reachable anonymously on public repositories. A victim who opens the link runs the attacker's script with their own session, which for an administrator means control of the instance. Legacy uploads now store only the `gzip` marker, and the special serve headers are chosen only for valid media types.","summary":"Legacy Gitea Actions artifact uploads (v1 to v3) stored the request's Content-Encoding header unchecked as the served Content-Type, and a video/ or audio/ value also removed the sandboxing Content-Security-Policy. An attacker who can run an Actions job can make a browser execute script on the Gitea origin with a victim's session, which for an administrator means control of the instance.","severity":"high","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"gitea","fixed":["28.3.0"],"affected":"< 28.3.0","ecosystem":"vendor"}],"ecosystems":[],"tags":["actions","gitea","runtime","self-hosted","xss"],"not_affected_if":["actions-disabled","no-legacy-artifacts"],"how_to_check":"Check your Gitea version (Site Administration > Overview, or 'gitea --version'); anything below 28.3.0 is affected if Actions is enabled. Also check whether Actions artifacts uploaded via legacy upload-artifact v1 to v3 exist.","fix":"Upgrade Gitea to 28.3.0 or later","status":"open","published_at":"2026-11-01T10:18:34+00:00","first_seen_at":"2026-11-01T10:49:32+00:00","triaged_at":"2026-11-01T10:51:47+00:00","updated_at":"2026-11-01T10:53:42+00:00","category":"runtime","confidence":0.85,"triage":{"at":"2026-11-01T10:51:47Z","model":"claude-haiku-5-5","output":{"fix":"unknown","reach":"internet","title":"Gitea: Actions artifact downloads let uploaded HTML run scripts on the origin","impact":"high","summary":"Legacy Gitea Actions artifact uploads (v1 to v3) stored the request's Content-Encoding header unchecked as the served Content-Type, and a video/ or audio/ value also removed the sandboxing Content-Security-Policy. An attacker who can run an Actions job can make a browser execute script on the Gitea origin with a victim's session, which for an administrator means control of the instance.","audience":"businesses","category":"runtime","nicknames":[],"who_cares":["gitea","self-hosted","actions"],"confidence":0.7,"fix_status":"unknown","needs_auth":"yes","worst_case":"Victim's session runs attacker script; admin takeover gives instance control.","analyst_note":"Find the Gitea release that fixed the legacy artifact Content-Encoding handling and the affected version range, from the NVD entry or the Gitea advisory.","how_to_check":"unknown","plain_action":"","needs_analyst":true,"not_affected_if":["actions-disabled","no-legacy-artifacts"],"who_is_affected":"Gitea instances that run Actions and hold artifacts uploaded through the legacy v1 to v3 artifact upload path are exposed. Artifact download URLs on public repositories are reachable without logging in, so those repositories widen the exposure. Instances with Actions disabled or with no legacy-era artifacts have less to look at.","user_interaction":"yes","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.001276,"input_tokens":4259,"output_tokens":1701,"severity_before":"unknown"},"analyst_status":"done","analyst_note":"Find the Gitea release that fixed the legacy artifact Content-Encoding handling and the affected version range, from the NVD entry or the Gitea advisory.","search":"'-113429':15A,18A '-2026':14A,17A 'action':2A,20B,29B,70B,100C,149C 'administr':90B,200C 'also':56B,135C 'anonym':178C 'artifact':3A,30B,101C,120C,154C,168C 'attack':65B,190C 'audio':54B,134C 'browser':75B,157C 'chosen':220C 'column':114C 'content':40B,48B,61B,108C,123C,140C 'content-encod':39B,107C 'content-security-polici':60B,139C 'content-typ':47B,122C 'control':92B,202C 'could':151C 'cve':13A,16A 'direct':167C 'download':4A,126C,169C 'encod':41B,109C 'execut':76B 'gitea':1A,19A,21B,28B,80B,163C 'gzip':212C 'header':42B,110C,218C 'host':25B 'html':7A,160C 'instanc':95B,205C 'job':71B,150C 'legaci':27B,96C,206C 'let':5A 'link':187C 'make':73B 'marker':213C 'mean':91B,201C 'media':224C 'open':172C,185C 'origin':12A,81B,164C 'polici':63B,142C 'public':180C 'reachabl':177C 'remov':57B,136C 'render':158C 'repositori':181C 'request':37B,105C 'run':8A,68B,147C,188C 'runtim':22B 'sandbox':59B,138C 'script':9A,77B,192C 'secur':62B,141C 'self':24B 'self-host':23B 'serv':46B,117C,217C 'session':86B,196C 'special':216C 'start':130C 'store':35B,103C,209C 'type':49B,124C,225C 'uncheck':43B,111C 'upload':6A,31B,102C,152C,207C 'url':170C,175C 'user':144C 'v1':32B,97C 'v3':34B,99C 'valid':223C 'valu':55B,129C 'victim':84B,183C 'video':52B,132C 'xss':26B","nicknames":[],"mitigations":[],"who_affected":"Gitea instances that run Actions and hold artifacts uploaded through the legacy v1 to v3 artifact upload path are exposed. Artifact download URLs on public repositories are reachable without logging in, so those repositories widen the exposure. Instances with Actions disabled or with no legacy-era artifacts have less to look at.","tier":"B","verified":{"fix":{"at":"2026-11-01T10:53:42Z","by":"analyst","doc":"https://git.trackers.run/public/gitea/commit/4f744d15be035b228e424a5384c81707b3792ead","run_id":1292},"products":{"at":"2026-11-01T10:53:42Z","by":"analyst","doc":"https://git.trackers.run/public/gitea/commit/4f744d15be035b228e424a5384c81707b3792ead","run_id":1292}},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-11-01T10:18:34+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-113429","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-113429","severity":null,"published_at":"2026-11-01T10:18:34+00:00","modified_at":"2026-11-01T10:18:34+00:00","first_seen_at":"2026-11-01T10:49:32+00:00","fetched_at":"2026-11-01T10:49:32+00:00","note":null},{"source":"analyst","external_id":"CVE-2026-113429:1292","url":null,"severity":null,"published_at":"2026-11-01T10:53:42+00:00","modified_at":"2026-11-01T10:53:42+00:00","first_seen_at":"2026-11-01T10:53:42+00:00","fetched_at":"2026-11-01T10:53:42+00:00","note":"Gitea release blog (vendor) lists CVE-2026-113429 fixed in 28.3.0 via #39855/#39996; NVD range 0 < 28.3.0. Advisory GHSA page unreadable by web-cli. No PoC/exploitation found; backports to older series not stated."}],"documents":[{"id":38385,"url":"https://blog.gitea.com/release-of-28.3.0/","title":"Gitea 28.3.0 is released (security section)","kind":"vendor","source":"analyst","publisher":null,"text":null,"published_at":null,"relation":"advisory","confidence":null,"note":null},{"id":38389,"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-113429","title":"NVD CVE-2026-113429","kind":"advisory","source":"analyst","publisher":null,"text":null,"published_at":null,"relation":"describes","confidence":null,"note":null},{"id":38390,"url":"https://git.trackers.run/public/gitea/commit/4f744d15be035b228e424a5384c81707b3792ead","title":"fix(actions): drop untrusted Content-Encoding from v1 artifact uploads (#39855)","kind":"release","source":"analyst","publisher":null,"text":null,"published_at":null,"relation":"fix","confidence":null,"note":null}],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}