Skip to content
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

Add missing AllowElevated policy check when creating a container #1624

Merged
merged 2 commits into from
Jan 27, 2023
Merged

Add missing AllowElevated policy check when creating a container #1624

merged 2 commits into from
Jan 27, 2023

Conversation

SeanTAllen
Copy link
Contributor

When we added AllowElevated and checked it was working correctly, we got it slightly wrong. When a container is started, we were adding in expected mounts that only happen for privileged containers and using those are mounts that are allowed.

During testing, if AllowElevated was left off, a privileged container would fail to start seemingly indicating that all was good. However, all was not good.

A malicious orchestrator with control of the API could create a container privileged that didn't contain any extra "privileged mounts" and the container would start as privileged with everything else that being privileged entails except for the mounts.

This commit adds an explicit check as part of crete container to verify that is the container is attempting to be started as privileged that it has AllowElevated.

Maksim and I both thought that this had been implemented. I remember it being implemented. Apparently that memory is incorrect. Either way, it was noticed last Thursday and here's the fix.

Signed-off-by: Sean T. Allen seanallen@microsoft.com

When we added AllowElevated and checked it was working correctly, we
got it slightly wrong. When a container is started, we were adding in
expected mounts that only happen for privileged containers and
using those are mounts that are allowed.

During testing, if AllowElevated was left off, a privileged container
would fail to start seemingly indicating that all was good. However,
all was not good.

A malicious orchestrator with control of the API could create a container
privileged that didn't contain any extra "privileged mounts" and the
container would start as privileged with everything else that being
privileged entails except for the mounts.

This commit adds an explicit check as part of crete container to verify
that is the container is attempting to be started as privileged that it
has AllowElevated.

Maksim and I both thought that this had been implemented. I remember it
being implemented. Apparently that memory is incorrect. Either way, it
was noticed last Thursday and here's the fix.

Signed-off-by: Sean T. Allen <seanallen@microsoft.com>
@SeanTAllen SeanTAllen requested a review from a team as a code owner January 23, 2023 13:37
Signed-off-by: Maksim An <maksiman@microsoft.com>
Copy link
Contributor

@helsaawy helsaawy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

minor feedback, LGTM overall

internal/guest/runtime/hcsv2/uvm.go Show resolved Hide resolved
@anmaxvl anmaxvl merged commit aee13c8 into microsoft:main Jan 27, 2023
@anmaxvl anmaxvl deleted the missing-priv-check branch January 27, 2023 02:37
anmaxvl pushed a commit that referenced this pull request Jan 27, 2023
A change to one of these two checks was requested by Hamza as part
of #1624. It was decided
to get both instances in their own PR as the change was unrelated
to the work in 1624.

Signed-off-by: Sean T. Allen <seanallen@microsoft.com>
princepereira pushed a commit to princepereira/hcsshim that referenced this pull request Aug 29, 2024
…rosoft#1624)

* Add missing AllowElevated policy check when creating a container

When we added AllowElevated and checked it was working correctly, we
got it slightly wrong. When a container is started, we were adding in
expected mounts that only happen for privileged containers and
using those are mounts that are allowed.

During testing, if AllowElevated was left off, a privileged container
would fail to start seemingly indicating that all was good. However,
all was not good.

A malicious orchestrator with control of the API could create a container
privileged that didn't contain any extra "privileged mounts" and the
container would start as privileged with everything else that being
privileged entails except for the mounts.

This commit adds an explicit check as part of crete container to verify
that is the container is attempting to be started as privileged that it
has AllowElevated.

Maksim and I both thought that this had been implemented. I remember it
being implemented. Apparently that memory is incorrect. Either way, it
was noticed last Thursday and here's the fix.

Signed-off-by: Sean T. Allen <seanallen@microsoft.com>
princepereira pushed a commit to princepereira/hcsshim that referenced this pull request Aug 29, 2024
A change to one of these two checks was requested by Hamza as part
of microsoft#1624. It was decided
to get both instances in their own PR as the change was unrelated
to the work in 1624.

Signed-off-by: Sean T. Allen <seanallen@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants