rabbitmq-server: RabbitMQ: Admin path-traversal write via trace name
What fixes it
- 3.13.15rabbitmq-server, otherGitHub
- 4.0.20rabbitmq-server, otherGitHub
- 4.1.11rabbitmq-server, otherGitHub
- 4.2.6rabbitmq-server, otherGitHub
- 4.3.1rabbitmq-server, otherGitHub
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
RabbitMQ is a messaging and streaming broker. Prior to versions 3.13.15, 4.0.20, 4.1.11, 4.2.6, and 4.3.1, The trace consumer constructs the output path as filename:join(TraceDir, Name ++ ".log") where Name comes from PUT /api/traces/:vhost/:name. No safe_relative_path / traversal check is applied on the write side, while the read side (rabbit_tracing_files.erl) does call rabbit_misc:safe_relative_path/1 , proving the omission is an oversight, not design. The .log suffix is forced and the endpoint requires administrator. A user with the administrator tag can write a .log-suffixed file to an arbitrary filesystem path writable by the rabbitmq user via the tracing plugin's name parameter, e.g. /etc/cron.d/x.log (if writable) or overwrite existing .log files outside the trace directory. Preconditions include rabbitmq_tracing plugin enabled administrator tag Target path writable by rabbitmq OS user. This issue is fixed in versions 3.13.15, 4.0.20, 4.1.11, 4.2.6, and 4.3.1.
Text from CVE List
Affected versions 10
- rabbitmq-serveraffected: >= 3.13.0, < 3.13.15CVE List
- rabbitmq-serveraffected: >= 4.0.0, < 4.0.20CVE List
- rabbitmq-serveraffected: >= 4.1.0, < 4.1.11CVE List
- rabbitmq-serveraffected: >= 4.2.0, < 4.2.6CVE List
- rabbitmq-serveraffected: >= 4.3.0, < 4.3.1CVE List
- rabbitmq-server, other>= 3.13.0, < 3.13.15GitHub
- rabbitmq-server, other>= 4.0.0, < 4.0.20GitHub
- rabbitmq-server, other>= 4.1.0, < 4.1.11GitHub
- rabbitmq-server, other>= 4.2.0, < 4.2.6GitHub
- rabbitmq-server, other>= 4.3.0, < 4.3.1GitHub