CVE-2013-0164: Low severity red hat openshift vulnerability

Published Jan 9, 2013
·
Updated

Michael Scherer (misc) of Red Hat reports:

Looking at a recent git checkout of openshift, I found that some script use a hardcoded or easy to guess filename in /tmp, in this case : https://github.com/openshift/origin-server/blob/master/port-proxy/bin/openshift-port-proxy-cfg#L13

I am not sure this can be exploited, but after searching a while, here is a credible attack.

This filename is used on https://github.com/openshift/origin-server/blob/master/port-proxy/bin/openshift-port-proxy-cfg#L144

While it took me a while to figure what the code of lockwrap does exactly, I found out there is a small windows of time between "we check the file exist and is empty" and "we write 0 or a return code to the file".

Let's imagine the following scenario, some attacker has shell access to the server that run this ( ie, a openshift node if I am not wrong ). People have access to the node, at least on openshift-online and this is required to push with git the code ( unless setup otherwise ).

This attacker create 5000 empty files who match the pattern /tmp/openshift-port-proxy-reload.req.????? ( and this could be something else than numbers, like .aaaaa ). Then he wait, and 1 second after, erase it and replace it by a link to another arbitrary file. Doing it with the 5000 files and a proper timing ( like waiting 1/5000 second between each file operation ) would make sure that if a operation check a file and then 1 second later, write to the file, this would not be the same for at least 1 of them. ( at least, that's my understanding, timing may be harder to get right on a real computer with enough ram, cpu and fast disk than the one I imagined ). Another variant would be to use something that is triggered when stat is run, but inotify cannot be used, and audit subsystem requires root.

Then, if someone else run the script and enter the function lockwrap that reload the proxy, it would first do a stat to check the file is empty (https://github.com/openshift/origin-server/blob/master/port-proxy/bin/openshift-port-proxy-cfg#L152) then reload the proxy ( and check all others file with stat before ), and there is a non negligeable chance that the script would write the return code in a different file ( ie, if that's a link, write it somewhere else ), since it write on all files matching the pattern, and not only the one created by mkstemp.

Depending on the kernel configuration and installation, this can be mitigated ( openshift online use polyinstanciation of /tmp, for example, newer kernel ship the yama module, for another example ). But in the most favourable case for the attacker ( ie no protection ), this mean he can create a file in a arbitray location with a content of 0 or 1.

The script is executed as root , as part as the user creation : https://github.com/openshift/origin-server/blob/master/node/lib/openshift-origin-node/model/unixuser.rb#L87 , function create, just after running useradd command ( hence the assumption this is run as root )

that function call initializeopenshiftportproxy https://github.com/openshift/origin-server/blob/master/node/lib/openshift-origin-node/model/unixuser.rb#L139

that run the command "openshift-port-proxy-cfg setproxy" https://github.com/openshift/origin-server/blob/master/node/lib/openshift-origin-node/model/unixuser.rb#L583

that then that script run the function lockwrap : https://github.com/openshift/origin-server/blob/master/port-proxy/bin/openshift-port-proxy-cfg#L263

and then lockwrap trigger the problem described before.

So a attacker could just create and remove several application until the attack succeed, ie, bruteforce it and make a 0 or 1 be written in a arbitrary location as root ( if selinux, polyinstanciation etc are disabled ).

openshift-origin-port-proxy is part of the entreprise release version 1, IIRC, of F18 and rawhide.

So I think this will requires a errata and a CVE if I am not wrong on my analysis of the problem. The issue was not discussed with anyone explicitely (I just discussed about the code on #fedora-devel on irc.freenode.net with 2 others fedora packagers but the exact issue was not disclosed ).

Other sources

The lockwrap function in port-proxy/bin/openshift-port-proxy-cfg in Red Hat OpenShift Origin before 1.1 allows local users to overwrite arbitrary files via a symlink attack on a temporary file with a predictable name in /tmp.

MITRE

Affected Software

2 affected components
redhat Openshift<=1.0
redhat OpenShift Origin=1.0.5

Event History

Jan 9, 2013
Data Sourced
05:35 AM
DescriptionSeverityAffected Software
Feb 24, 2013
CVE Published
via MITRE·10:00 PM
Data Sourced
via MITRE·10:00 PM
Description
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of CVE-2013-0164?

CVE-2013-0164 has a low severity rating due to the low impact of the vulnerability.

2

How does CVE-2013-0164 affect Red Hat OpenShift users?

CVE-2013-0164 can potentially allow unauthorized access to temporary files in Red Hat OpenShift.

3

How do I fix CVE-2013-0164?

To fix CVE-2013-0164, avoid using hardcoded or easily guessable filenames in /tmp for sensitive scripts.

4

Which versions of Red Hat OpenShift are affected by CVE-2013-0164?

CVE-2013-0164 affects Red Hat OpenShift versions up to 1.0 and specific versions of OpenShift Origin.

5

Is there a patch available for CVE-2013-0164?

There is no specific patch for CVE-2013-0164; users should review their scripts and update their coding practices.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203