{"id":"CVE-2026-124079","kind":"vulnerability","aliases":["CVE-2026-124079"],"related":[],"title":"rConfig: unauthenticated queue job deserialization lets attackers run commands","description":"rConfig Core 8.0.0 before 8.2.19 and rConfig Pro before 8.4.1 contain a deserialization of untrusted data vulnerability that allows unauthenticated network attackers to execute arbitrary code by pushing a crafted serialized job onto the Redis-backed Laravel Horizon queue, which runs without authentication in affected deployments. Laravel's CallQueuedHandler unserializes the job without class restrictions, allowing attackers to instantiate the existing App\\\\Jobs\\\\TaskDownloadRun class and invoke an attacker-controlled Artisan command. Attackers can leverage the bundled laravel/tinker package to execute arbitrary PHP and operating system commands as the queue worker's user, write a persistent web shell into the web-served storage/app/public directory, and read database credentials, stored device credentials, and API tokens. Where Redis is not directly reachable, authenticated attackers can deliver the payload through the application by configuring a device target that points at the rConfig server's loopback address.","summary":"rConfig Core and Pro unserialize jobs pushed onto a Redis-backed Laravel Horizon queue without class restrictions. An unauthenticated network attacker can run PHP and operating system commands as the queue worker, plant a web shell, and read database credentials, device credentials and API tokens.","severity":"critical","cvss":9.8,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["laravel","php","rconfig","redis","self-hosted","vendor"],"not_affected_if":["fixed-version","redis-not-reachable"],"how_to_check":"- Check the installed rConfig Core or Pro version in the application's admin interface or release metadata\n- Check whether Redis used by the queue is reachable from outside the server, for example `redis-cli -h <host> ping`\n- Look for unexpected files under `storage/app/public`","fix":"- rConfig Core: move to `8.2.19` or later\n- rConfig Pro: move to `8.4.1` or later","status":"open","published_at":"2026-11-09T13:17:07+00:00","first_seen_at":"2026-11-09T13:26:51+00:00","triaged_at":"2026-11-09T13:27:25+00:00","updated_at":"2026-11-09T13:27:26+00:00","category":"vendor","confidence":0.8,"triage":{"at":"2026-11-09T13:27:25Z","model":"claude-haiku-5-5","output":{"fix":"- rConfig Core: move to `8.2.19` or later\n- rConfig Pro: move to `8.4.1` or later","reach":"network","title":"rConfig: unauthenticated queue job deserialization lets attackers run commands","impact":"high","summary":"rConfig Core and Pro unserialize jobs pushed onto a Redis-backed Laravel Horizon queue without class restrictions. An unauthenticated network attacker can run PHP and operating system commands as the queue worker, plant a web shell, and read database credentials, device credentials and API tokens.","audience":"businesses","category":"vendor","nicknames":[],"who_cares":["rconfig","laravel","redis","php","self-hosted"],"confidence":0.8,"fix_status":"available","needs_auth":"no","worst_case":"Attacker runs OS commands, plants web shell, reads stored credentials","analyst_note":"","how_to_check":"- Check the installed rConfig Core or Pro version in the application's admin interface or release metadata\n- Check whether Redis used by the queue is reachable from outside the server, for example `redis-cli -h <host> ping`\n- Look for unexpected files under `storage/app/public`","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["fixed-version","redis-not-reachable"],"who_is_affected":"Deployments of rConfig Core 8.0.0 before 8.2.19 and rConfig Pro before 8.4.1 are exposed. The danger is worst where the Redis queue backing Laravel Horizon is reachable without authentication from the network; where Redis is not directly reachable, an authenticated user who can configure a device target pointing at the server's loopback address can still deliver the payload. Systems on current versions or without this rConfig product can skip it.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"critical"},"cost_usd":0.000806,"input_tokens":4843,"output_tokens":643,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-124079':12A,15A '-2026':11A,14A '8.0.0':72C '8.2.19':74C '8.4.1':79C 'address':215C 'affect':115C 'allow':88C,126C 'api':68B,185C 'app':132C 'applic':201C 'arbitrari':94C,153C 'artisan':142C 'attack':7A,45B,91C,127C,140C,144C,194C 'attacker-control':139C 'authent':113C,193C 'back':35B,106C 'bundl':148C 'callqueuedhandl':119C 'class':40B,124C,135C 'code':95C 'command':9A,52B,143C,158C 'configur':203C 'contain':80C 'control':141C 'core':25B,71C 'craft':99C 'credenti':64B,66B,180C,183C 'cve':10A,13A 'data':85C 'databas':63B,179C 'deliv':196C 'deploy':116C 'deseri':5A,82C 'devic':65B,182C,205C 'direct':191C 'directori':176C 'execut':93C,152C 'exist':131C 'horizon':37B,108C 'host':22B 'instanti':129C 'invok':137C 'job':4A,29B,101C,122C,133C 'laravel':16B,36B,107C,117C 'laravel/tinker':149C 'let':6A 'leverag':146C 'loopback':214C 'network':44B,90C 'onto':31B,102C 'oper':50B,156C 'packag':150C 'payload':198C 'persist':167C 'php':17B,48B,154C 'plant':57B 'point':208C 'pro':27B,77C 'push':30B,97C 'queue':3A,38B,55B,109C,161C 'rconfig':1A,18B,24B,70C,76C,211C 'reachabl':192C 'read':62B,178C 'redi':19B,34B,105C,188C 'redis-back':33B,104C 'restrict':41B,125C 'run':8A,47B,111C 'self':21B 'self-host':20B 'serial':100C 'serv':174C 'server':212C 'shell':60B,169C 'storage/app/public':175C 'store':181C 'system':51B,157C 'target':206C 'taskdownloadrun':134C 'token':69B,186C 'unauthent':2A,43B,89C 'unseri':28B,120C 'untrust':84C 'user':164C 'vendor':23B 'vulner':86C 'web':59B,168C,173C 'web-serv':172C 'without':39B,112C,123C 'worker':56B,162C 'write':165C","nicknames":[],"mitigations":[],"who_affected":"Deployments of rConfig Core 8.0.0 before 8.2.19 and rConfig Pro before 8.4.1 are exposed. The danger is worst where the Redis queue backing Laravel Horizon is reachable without authentication from the network; where Redis is not directly reachable, an authenticated user who can configure a device target pointing at the server's loopback address can still deliver the payload. Systems on current versions or without this rConfig product can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["critical","laravel","php","rconfig","redis","selfhosted","vendor"],"campaign_type":null,"search_a":"'-124079':12A,15A '-2026':11A,14A 'attack':7A 'command':9A 'cve':10A,13A 'deseri':5A 'job':4A 'let':6A 'queue':3A 'rconfig':1A 'run':8A 'unauthent':2A","search_b":"'api':68B 'attack':45B 'back':35B 'class':40B 'command':52B 'core':25B 'credenti':64B,66B 'databas':63B 'devic':65B 'horizon':37B 'host':22B 'job':29B 'laravel':16B,36B 'network':44B 'onto':31B 'oper':50B 'php':17B,48B 'plant':57B 'pro':27B 'push':30B 'queue':38B,55B 'rconfig':18B,24B 'read':62B 'redi':19B,34B 'redis-back':33B 'restrict':41B 'run':47B 'self':21B 'self-host':20B 'shell':60B 'system':51B 'token':69B 'unauthent':43B 'unseri':28B 'vendor':23B 'web':59B 'without':39B 'worker':56B","search_c":"'8.0.0':72C '8.2.19':74C '8.4.1':79C 'address':215C 'affect':115C 'allow':88C,126C 'api':185C 'app':132C 'applic':201C 'arbitrari':94C,153C 'artisan':142C 'attack':91C,127C,140C,144C,194C 'attacker-control':139C 'authent':113C,193C 'back':106C 'bundl':148C 'callqueuedhandl':119C 'class':124C,135C 'code':95C 'command':143C,158C 'configur':203C 'contain':80C 'control':141C 'core':71C 'craft':99C 'credenti':180C,183C 'data':85C 'databas':179C 'deliv':196C 'deploy':116C 'deseri':82C 'devic':182C,205C 'direct':191C 'directori':176C 'execut':93C,152C 'exist':131C 'horizon':108C 'instanti':129C 'invok':137C 'job':101C,122C,133C 'laravel':107C,117C 'laravel/tinker':149C 'leverag':146C 'loopback':214C 'network':90C 'onto':102C 'oper':156C 'packag':150C 'payload':198C 'persist':167C 'php':154C 'point':208C 'pro':77C 'push':97C 'queue':109C,161C 'rconfig':70C,76C,211C 'reachabl':192C 'read':178C 'redi':105C,188C 'redis-back':104C 'restrict':125C 'run':111C 'serial':100C 'serv':174C 'server':212C 'shell':169C 'storage/app/public':175C 'store':181C 'system':157C 'target':206C 'taskdownloadrun':134C 'token':186C 'unauthent':89C 'unseri':120C 'untrust':84C 'user':164C 'vulner':86C 'web':168C,173C 'web-serv':172C 'without':112C,123C 'worker':162C 'write':165C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-09T13:17:07+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/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-124079","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-124079","severity":null,"published_at":"2026-11-09T13:17:07+00:00","modified_at":"2026-11-09T13:17:07+00:00","first_seen_at":"2026-11-09T13:26:51+00:00","fetched_at":"2026-11-09T13:26:51+00:00","note":null}],"documents":[{"id":107556,"url":"https://github.com/rconfig/rconfig/releases/tag/core-8.2.19","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":107557,"url":"https://www.vulncheck.com/advisories/rconfig-core-before-and-rconfig-pro-before-rce-via-unauthenticated-redis-queue-poisoning","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}