-
Notifications
You must be signed in to change notification settings - Fork 18.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
seccomp: Whitelist clock_adjtime
#40929
seccomp: Whitelist clock_adjtime
#40929
Conversation
Should this use the same approach as (added in #31966) ? moby/profiles/seccomp/seccomp_default.go Lines 641 to 652 in cdf49f3
IIRC, with that approach seccomp by default blocks these (so both /cc @justincormack |
99a4b53
to
eb66264
Compare
Related issue: #33126 |
This only allows making the syscall. CAP_SYS_TIME is still required for time adjustment (enforced by the kernel): ``` kernel/time/posix-timers.c: 1112 SYSCALL_DEFINE2(clock_adjtime, const clockid_t, which_clock, 1113 struct __kernel_timex __user *, utx) ... 1121 err = do_clock_adjtime(which_clock, &ktx); 1100 int do_clock_adjtime(const clockid_t which_clock, struct __kernel_timex * ktx) 1101 { ... 1109 return kc->clock_adj(which_clock, ktx); 1299 static const struct k_clock clock_realtime = { ... 1304 .clock_adj = posix_clock_realtime_adj, 188 static int posix_clock_realtime_adj(const clockid_t which_clock, 189 struct __kernel_timex *t) 190 { 191 return do_adjtimex(t); kernel/time/timekeeping.c: 2312 int do_adjtimex(struct __kernel_timex *txc) 2313 { ... 2321 /* Validate the data before disabling interrupts */ 2322 ret = timekeeping_validate_timex(txc); 2246 static int timekeeping_validate_timex(const struct __kernel_timex *txc) 2247 { 2248 if (txc->modes & ADJ_ADJTIME) { ... 2252 if (!(txc->modes & ADJ_OFFSET_READONLY) && 2253 !capable(CAP_SYS_TIME)) 2254 return -EPERM; 2255 } else { 2256 /* In order to modify anything, you gotta be super-user! */ 2257 if (txc->modes && !capable(CAP_SYS_TIME)) 2258 return -EPERM; ``` Fixes: moby#40919 Signed-off-by: Stanislav Levin <slev@altlinux.org>
eb66264
to
5d3a9e4
Compare
Ah, thanks for linking that one 👍 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thanks!
@tonistiigi @cpuguy83 good to go? |
- What I did
fixes #40919
- How I did it
Allow making the syscall by default
seccomp
filter.CAP_SYS_TIME is still required for time adjustment (enforced by the kernel):
- How to verify it
without cap:
Expected result:
chronyd
should fail to makeadjtimex
.with cap:
Expected result:
chronyd
should not fail to makeadjtimex
.- Description for the changelog
Whitelist clock_adjtime. CAP_SYS_TIME is still required for time adjustment.
- A picture of a cute animal (not mandatory but encouraged)