{"id":"CVE-2024-5023","kind":"vulnerability","aliases":["CVE-2024-5023","GHSA-3783-62vc-jr7x"],"related":[],"title":"ConsoleMe has an Arbitrary File Read Vulnerability via Limited Git command","description":"## ID: NFLX-2024-002\n\n### Impact\nAuthenticated users can achieve limited RCE in ConsoleMe, restricted to flag inputs on a single CLI command. Due to this constraint, it is not currently known whether full RCE is possible but it is unlikely. \nHowever, a specific flag allows authenticated users to read any server files accessible by the ConsoleMe process. Given ConsoleMe's role as an AWS identity broker, accessing files containing secrets on the server could potentially be exploited for privilege escalation.\n\nDeployments of ConsoleMe that allow templated resources are impacted and urged to patch immediately. Deployments that do not permit templated resources are not affected.\n\nTo determine if your ConsoleMe deployment uses templated resources, check the configuration value for `cache_resource_templates.repositories`. If this value does not exist or is an empty array, your deployment is not impacted.\n### Description\nThe self-service flow for templated resources in ConsoleMe accepts a user-supplied JSON post body, which includes the filename for the templated resource. However, this user-supplied filename is not properly sanitized and is passed directly as a string to a CLI command. This allows users to input flags instead of filenames. By passing a specific flag with a filename value, users can induce an error that reveals the contents of the specified file, allowing them to read any files readable by the system user executing the ConsoleMe server process.\n\n### Patches\nThis issue has been patched in version [v1.4.0](https://pypi.org/project/consoleme/1.4.0/) via https://github.com/Netflix/consoleme/pull/9380. \nIf you are unable to upgrade to the latest version, users can selectively apply the code changes in the above PR. Alternatively, removing the configuration item `cache_resource_templates.repositories` or adding it as an empty array should mitigate the issue, but will result in broken functionality (templated resources will no longer be supported for self-service).\n\n### Credit\n[Jay Dhulia](https://github.com/jaydhulia)","summary":"ConsoleMe passes a user-supplied filename from its templated-resource self-service flow directly to a git CLI command, so a flag can be injected in place of a filename. An authenticated user can use a specific flag to make git print the contents of any file the ConsoleMe server process can read, which can expose AWS secrets held on the server.","severity":"critical","cvss":9.6,"epss":0.00936,"exploited":false,"exploited_at":null,"products":[{"name":"consoleme","fixed":["1.4.0"],"affected":"< 1.4.0","ecosystem":"pypi"}],"ecosystems":["pypi"],"tags":["aws","consoleme","cwe-77","package","python","self-hosted"],"not_affected_if":["auth-required","default-config"],"how_to_check":"- Check the ConsoleMe configuration for `cache_resource_templates.repositories`; if it is set to a non-empty list, the deployment is exposed.\n- Check the installed version with `pip show consoleme`; versions below `1.4.0` are affected.","fix":"- Upgrade the `consoleme` PyPI package to `1.4.0` or later.\n- If upgrading is not possible, remove `cache_resource_templates.repositories` from the configuration or set it to an empty array; this disables templated resources for self-service.","status":"open","published_at":"2024-05-16T18:15:10+00:00","first_seen_at":"2026-10-27T16:25:43+00:00","triaged_at":"2026-10-27T16:27:41+00:00","updated_at":"2026-10-27T16:33:07+00:00","category":"package","confidence":0.85,"triage":{"at":"2026-10-27T16:27:41Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade the `consoleme` PyPI package to `1.4.0` or later.\n- If upgrading is not possible, remove `cache_resource_templates.repositories` from the configuration or set it to an empty array; this disables templated resources for self-service.","reach":"internet","title":"ConsoleMe: authenticated users can read arbitrary server files via git flag","impact":"high","summary":"ConsoleMe passes a user-supplied filename from its templated-resource self-service flow directly to a git CLI command, so a flag can be injected in place of a filename. An authenticated user can use a specific flag to make git print the contents of any file the ConsoleMe server process can read, which can expose AWS secrets held on the server.","category":"package","nicknames":[],"who_cares":["consoleme","python","aws","self-hosted"],"confidence":0.85,"needs_auth":"yes","worst_case":"Authenticated user reads any server file readable by ConsoleMe, including AWS secrets","analyst_note":"","how_to_check":"- Check the ConsoleMe configuration for `cache_resource_templates.repositories`; if it is set to a non-empty list, the deployment is exposed.\n- Check the installed version with `pip show consoleme`; versions below `1.4.0` are affected.","needs_analyst":false,"not_affected_if":["default-config","auth-required"],"who_is_affected":"Deployments that allow templated resources, meaning `cache_resource_templates.repositories` is set to a non-empty list, are affected, and the flaw is reachable by any authenticated ConsoleMe user. Deployments without that setting, or with it empty, are not affected according to the advisory. Because ConsoleMe brokers AWS identities, teams running it should treat any exposed server file as a potential privilege escalation path.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000717,"input_tokens":3925,"output_tokens":648,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-002':102C '-2024':13A,22A,101C '-3783':16A '-5023':14A,23A '-62':17A '-77':28B '/jaydhulia)':405C '/netflix/consoleme/pull/9380.':344C '/project/consoleme/1.4.0/)':340C 'accept':245C 'access':151C,165C 'achiev':107C 'add':373C 'affect':202C 'allow':143C,183C,283C,313C 'altern':366C 'appli':358C 'arbitrari':4A 'array':228C,378C 'authent':68B,104C,144C 'aw':25B,93B,162C 'bodi':252C 'broken':387C 'broker':164C 'cache_resource_templates.repositories':217C,371C 'chang':361C 'check':212C 'cli':54B,119C,280C 'code':360C 'command':11A,55B,120C,281C 'configur':214C,369C 'consolem':1A,26B,34B,85B,111C,154C,157C,181C,207C,244C,326C 'consoleme':24A 'constraint':124C 'contain':167C 'content':80B,308C 'could':172C 'credit':400C 'current':128C 'cve':12A,21A 'cwe':27B 'deploy':179C,193C,208C,230C 'descript':234C 'determin':204C 'dhulia':402C 'direct':50B,274C 'due':121C 'empti':227C,377C 'error':304C 'escal':178C 'execut':324C 'exist':223C 'exploit':175C 'expos':92B 'file':5A,83B,150C,166C,312C,318C 'filenam':40B,66B,256C,266C,290C,298C 'flag':58B,74B,114C,142C,287C,295C 'flow':49B,239C 'full':131C 'function':388C 'ghsa':15A 'git':10A,53B,77B 'github.com':343C,404C 'github.com/jaydhulia)':403C 'github.com/netflix/consoleme/pull/9380.':342C 'given':156C 'held':95B 'host':33B 'howev':139C,261C 'id':99C 'ident':163C 'immedi':192C 'impact':103C,187C,233C 'includ':254C 'induc':302C 'inject':61B 'input':115C,286C 'instead':288C 'issu':331C,382C 'item':370C 'jay':401C 'jr7x':20A 'json':250C 'known':129C 'latest':353C 'limit':9A,108C 'longer':393C 'make':76B 'mitig':380C 'nflx':100C 'packag':29B 'pass':35B,273C,292C 'patch':191C,329C,334C 'permit':197C 'place':63B 'possibl':134C 'post':251C 'potenti':173C 'pr':365C 'print':78B 'privileg':177C 'process':87B,155C,328C 'proper':269C 'pypi.org':339C 'pypi.org/project/consoleme/1.4.0/)':338C 'python':30B 'rce':109C,132C 'read':6A,89B,147C,316C 'readabl':319C 'remov':367C 'resourc':45B,185C,199C,211C,242C,260C,390C 'restrict':112C 'result':385C 'reveal':306C 'role':159C 'sanit':270C 'secret':94B,168C 'select':357C 'self':32B,47B,237C,398C 'self-host':31B 'self-servic':46B,236C,397C 'server':86B,98B,149C,171C,327C 'servic':48B,238C,399C 'singl':118C 'specif':73B,141C,294C 'specifi':311C 'string':277C 'suppli':39B,249C,265C 'support':395C 'system':322C 'templat':44B,184C,198C,210C,241C,259C,389C 'templated-resourc':43B 'unabl':348C 'unlik':138C 'upgrad':350C 'urg':189C 'use':71B,209C 'user':38B,69B,105C,145C,248C,264C,284C,300C,323C,355C 'user-suppli':37B,247C,263C 'v1.4.0':337C 'valu':215C,220C,299C 'vc':19A 'vc-jr7x':18A 'version':336C,354C 'via':8A,341C 'vulner':7A 'whether':130C","nicknames":[],"mitigations":[],"who_affected":"Deployments that allow templated resources, meaning `cache_resource_templates.repositories` is set to a non-empty list, are affected, and the flaw is reachable by any authenticated ConsoleMe user. Deployments without that setting, or with it empty, are not affected according to the advisory. Because ConsoleMe brokers AWS identities, teams running it should treat any exposed server file as a potential privilege escalation path.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2024-05-16T18:15:10+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-3783-62vc-jr7x","url":"https://github.com/advisories/GHSA-3783-62vc-jr7x","severity":"critical","published_at":"2024-05-16T21:02:36+00:00","modified_at":"2026-10-27T16:21:39+00:00","first_seen_at":"2026-10-27T16:25:43+00:00","fetched_at":"2026-10-27T16:25:43+00:00","note":null},{"source":"nvd","external_id":"CVE-2024-5023","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-5023","severity":null,"published_at":"2024-05-16T18:15:10+00:00","modified_at":"2026-06-17T08:14:55+00:00","first_seen_at":"2026-10-27T16:33:07+00:00","fetched_at":"2026-10-27T16:33:07+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"}