-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
images/tests: Globally-writeable /etc/passwd #22592
Conversation
This lets us SSH from the teardown container into the cluster without hitting: $ ssh -A core@$bootstrap_ip No user exists for uid 1051910000 OpenSSH has a very early getpwuid call [1] with no provision for bypassing via HOME or USER environment variables like we did for Bazel [2]. OpenShift runs with the random UIDs by default [3]: By default, all containers that we try and launch within OpenShift, are set blocked from “RunAsAny” which basically means that they are not allowed to use a root user within the container. This prevents root actions such as chown or chmod from being run and is a sensible security precaution as, should a user be able to perform a local exploit to break out of the container, then they would not be running as root on the underlying container host. NB what about user-namespaces some of you are no doubt asking, these are definitely coming but the testing/hardening process is taking a while and whilst companies such as Red Hat are working hard in this space, there is still a way to go until they are ready for the mainstream. while Kubernetes sorts out user namespacing [4]. Despite the high UIDs, all users on the cluster are GID 0, so the g+w is sufficient (vs. a+w), and maybe this mitigates concerns about increased writability for such an important file. The main mitigation is that these are throw-away CI containers, and not long-running production containers where we are concerned about malicious entry. A more polished fix has landed in CRI-O [5], but the CI cluster is stuck on OpenShift 3.11 and Docker at the moment. Our SSH usecase is for gathering logs in the teardown container [6], but we've been using the tests image for both tests and teardown since b16dcfc (images/tests/Dockerfile*: Install gzip for compressing logs, 2019-02-19, openshift#22094). [1]: https://github.com/openssh/openssh-portable/blob/V_7_4_P1/ssh.c#L577 [2]: openshift/release#1185 [3]: https://blog.openshift.com/getting-any-docker-image-running-in-your-own-openshift-cluster/ [4]: kubernetes/enhancements#127 [5]: cri-o/cri-o#2022 [6]: openshift/release#3475
/lgtm |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: sdodson, wking The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/retest |
e2e-aws failed on flakes hopefully
/retest |
/retest
|
This reverts commit ca35cd6, openshift#22592. As described in that commit message, the access was broadened to allow ssh from containers launched from the tests image. But since openshift/release@7baa9f2e44 (ci-operator/templates/openshift: Remove Terraform-state-based SSH gathers, 2020-01-25, openshift/release#6854) landed, we no longer need to SSH from those containers. Restore the usual access restrictions to address CVE-2019-19347[1]. [1]: https://bugzilla.redhat.com/show_bug.cgi?id=1793287
This reverts commit ca35cd6, openshift#22592. As described in that commit message, the access was broadened to allow ssh from containers launched from the tests image. But since openshift/release@7baa9f2e44 (ci-operator/templates/openshift: Remove Terraform-state-based SSH gathers, 2020-01-25, openshift/release#6854) landed, we no longer need to SSH from those containers. Restore the usual access restrictions to address CVE-2019-19347[1]. [1]: https://bugzilla.redhat.com/show_bug.cgi?id=1793287
This lets us SSH from the teardown container into the cluster without hitting:
OpenSSH has a very early
getpwuid
call with no provision for bypassing viaHOME
orUSER
environment variables like we did for Bazel. OpenShift runs with the random UIDs by default:while Kubernetes sorts out user namespacing. Despite the high UIDs, all users on the cluster are GID 0, so the
g+w
is sufficient (vs.a+w
), and maybe this mitigates concerns about increased writability for such an important file. The main mitigation is that these are throw-away CI containers, and not long-running production containers where we are concerned about malicious entry.A more polished fix has landed in CRI-O, but the CI cluster is stuck on OpenShift 3.11 and Docker at the moment.
Our SSH usecase is for gathering logs in the teardown container, but we've been using the tests image for both tests and teardown since b16dcfc (#22094).