{"id":"CVE-2026-123357","kind":"vulnerability","aliases":["CVE-2026-123357"],"related":[],"title":"GROBID: crafted PDF filename lets attackers run shell commands","description":"GROBID is machine learning software for extracting information from scholarly documents. Prior to 0.9.1, the Linux non-server PDF conversion path in grobid-core/src/main/java/org/grobid/core/document/DocumentSource.java passes an attacker-influenced PDF filename through DocumentSource.pdfalto, which interpolates the path into a bash -c command string. A single quote in the filename can terminate the intended quoting, and ProcessRunner.run in grobid-core/src/main/java/org/grobid/core/process/ProcessRunner.java starts the resulting command through ProcessBuilder, allowing arbitrary commands to execute with GROBID process privileges. The bundled REST server path is not affected. This issue is fixed in version 0.9.1.","summary":"GROBID's Linux non-server PDF conversion path puts the PDF filename into a bash -c command string, so a single quote in the name breaks the quoting. An attacker who controls the filename can run arbitrary commands with GROBID's process privileges.","severity":"high","cvss":0.0,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["grobid","java","linux","package"],"not_affected_if":["filename-not-attacker-controlled","non-linux","rest-server-only"],"how_to_check":"- Check the GROBID version in use; versions before `0.9.1` are affected.\n- Look for use of grobid-core's non-server PDF conversion (DocumentSource.pdfalto) on Linux, not the bundled REST server.","fix":"- Move GROBID to version `0.9.1` or later.","status":"open","published_at":"2026-11-06T19:17:44+00:00","first_seen_at":"2026-11-06T19:43:48+00:00","triaged_at":"2026-11-06T19:46:04+00:00","updated_at":"2026-11-06T19:46:04+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-06T19:46:04Z","model":"claude-haiku-5-5","output":{"fix":"- Move GROBID to version `0.9.1` or later.","reach":"unknown","title":"GROBID: crafted PDF filename lets attackers run shell commands","impact":"high","summary":"GROBID's Linux non-server PDF conversion path puts the PDF filename into a bash -c command string, so a single quote in the name breaks the quoting. An attacker who controls the filename can run arbitrary commands with GROBID's process privileges.","audience":"developers","category":"package","nicknames":[],"who_cares":["grobid","java","linux"],"confidence":0.7,"fix_status":"available","needs_auth":"unknown","worst_case":"Attacker runs arbitrary commands with GROBID process privileges.","analyst_note":"","how_to_check":"- Check the GROBID version in use; versions before `0.9.1` are affected.\n- Look for use of grobid-core's non-server PDF conversion (DocumentSource.pdfalto) on Linux, not the bundled REST server.","plain_action":"","needs_analyst":false,"not_affected_if":["rest-server-only","non-linux","filename-not-attacker-controlled"],"who_is_affected":"Only deployments that use GROBID's non-server PDF conversion path on Linux are exposed, where the PDF filename can be influenced by an outside party. The bundled REST server path is not affected according to the sources, so teams running only that server can treat this as lower priority.","user_interaction":"unknown","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000971,"input_tokens":4394,"output_tokens":1063,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-123357':12A,15A '-2026':11A,14A '/src/main/java/org/grobid/core/document/documentsource.java':90C '/src/main/java/org/grobid/core/process/processrunner.java':127C '0.9.1':77C,157C 'affect':150C 'allow':134C 'arbitrari':57B,135C 'attack':6A,50B,94C 'attacker-influenc':93C 'bash':35B,106C 'break':46B 'bundl':144C 'c':36B,107C 'command':9A,37B,58B,108C,131C,136C 'control':52B 'convers':27B,84C 'core':89C,126C 'craft':2A 'cve':10A,13A 'document':74C 'documentsource.pdfalto':99C 'execut':138C 'extract':70C 'filenam':4A,32B,54B,97C,115C 'fix':154C 'grobid':1A,16B,20B,60B,64C,88C,125C,140C 'grobid-cor':87C,124C 'influenc':95C 'inform':71C 'intend':119C 'interpol':101C 'issu':152C 'java':17B 'learn':67C 'let':5A 'linux':18B,22B,79C 'machin':66C 'name':45B 'non':24B,81C 'non-serv':23B,80C 'packag':19B 'pass':91C 'path':28B,85C,103C,147C 'pdf':3A,26B,31B,83C,96C 'prior':75C 'privileg':63B,142C 'process':62B,141C 'processbuild':133C 'processrunner.run':122C 'put':29B 'quot':42B,48B,112C,120C 'rest':145C 'result':130C 'run':7A,56B 'scholar':73C 'server':25B,82C,146C 'shell':8A 'singl':41B,111C 'softwar':68C 'start':128C 'string':38B,109C 'termin':117C 'version':156C","nicknames":[],"mitigations":[],"who_affected":"Only deployments that use GROBID's non-server PDF conversion path on Linux are exposed, where the PDF filename can be influenced by an outside party. The bundled REST server path is not affected according to the sources, so teams running only that server can treat this as lower priority.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["grobid","high","java","linux","package"],"campaign_type":null,"search_a":"'-123357':12A,15A '-2026':11A,14A 'attack':6A 'command':9A 'craft':2A 'cve':10A,13A 'filenam':4A 'grobid':1A 'let':5A 'pdf':3A 'run':7A 'shell':8A","search_b":"'arbitrari':57B 'attack':50B 'bash':35B 'break':46B 'c':36B 'command':37B,58B 'control':52B 'convers':27B 'filenam':32B,54B 'grobid':16B,20B,60B 'java':17B 'linux':18B,22B 'name':45B 'non':24B 'non-serv':23B 'packag':19B 'path':28B 'pdf':26B,31B 'privileg':63B 'process':62B 'put':29B 'quot':42B,48B 'run':56B 'server':25B 'singl':41B 'string':38B","search_c":"'/src/main/java/org/grobid/core/document/documentsource.java':90C '/src/main/java/org/grobid/core/process/processrunner.java':127C '0.9.1':77C,157C 'affect':150C 'allow':134C 'arbitrari':135C 'attack':94C 'attacker-influenc':93C 'bash':106C 'bundl':144C 'c':107C 'command':108C,131C,136C 'convers':84C 'core':89C,126C 'document':74C 'documentsource.pdfalto':99C 'execut':138C 'extract':70C 'filenam':97C,115C 'fix':154C 'grobid':64C,88C,125C,140C 'grobid-cor':87C,124C 'influenc':95C 'inform':71C 'intend':119C 'interpol':101C 'issu':152C 'learn':67C 'linux':79C 'machin':66C 'non':81C 'non-serv':80C 'pass':91C 'path':85C,103C,147C 'pdf':83C,96C 'prior':75C 'privileg':142C 'process':141C 'processbuild':133C 'processrunner.run':122C 'quot':112C,120C 'rest':145C 'result':130C 'scholar':73C 'server':82C,146C 'singl':111C 'softwar':68C 'start':128C 'string':109C 'termin':117C 'version':156C","first_public_at":"2026-06-26T09:31:33+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:N","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-123357","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-123357","severity":null,"published_at":"2026-11-06T19:17:44+00:00","modified_at":"2026-11-06T19:17:44+00:00","first_seen_at":"2026-11-06T19:43:48+00:00","fetched_at":"2026-11-06T19:43:48+00:00","note":null}],"documents":[{"id":89342,"url":"https://github.com/grobidOrg/grobid/releases/tag/0.9.1","title":"Release notes: github.com","kind":"release","source":"nvd","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release notes: github.com"},{"id":89345,"url":"https://github.com/grobidOrg/grobid/security/advisories/GHSA-mgxf-7mg7-qpmf","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-06-26T09:31:33+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}