
PACKET_EDIT_MEME.c (aka CVE-2026-46331): yet another page cache poisoning nightmare
net/sched act_pedit 부분 COW 페이지 캐시 손상 (문제 제기: 899ee91156e5, v5.18부터 v7.1-rc7에서 수정됨). packet_edit_meme.c는 이를 권한 없는 로컬 루트로 만듭니다: userns CAP_NET_ADMIN 자식이 setuid-root /bin/su의 캐시된 ELF 엔트리를 setgid(0)+setuid(0)+execve("/bin/sh") 셸코드로 덮어씁니다.
make
./packet_edit_meme
./packet_edit_meme --ubuntu # AppArmor-gated Ubuntu: aa-exec bypass first
| 배포판 | 커널 | 플래그 | 결과 |
|---|---|---|---|
| RHEL 10.0 | 6.12.0-228.el10 | (none) | ROOT |
| Debian 13 trixie | 6.12.90+deb13.1 | (none) | ROOT |
| Ubuntu 24.04.4 | 6.17.0-22 | --ubuntu | ROOT |
| Ubuntu 26.04 | 7.0.0-14-generic | --ubuntu | FAIL |
RHEL / Debian: 권한 없는 userns는 기본적으로 열려 있으므로 플래그가 필요하지 않습니다. RHEL은 cls_basic / em_meta를 제공하지 않으므로 기본 기능이 자동으로 matchall로 대체됩니다.
Ubuntu는 두 가지 sysctl을 통해 제한되지 않은 권한 없는 userns를 거부합니다:
kernel.apparmor_restrict_unprivileged_userns # denies unconfined userns creation
kernel.apparmor_restrict_unprivileged_unconfined # forces unconfined change_profile to STACK,
# so an aa-exec permissive profile cannot
# shed the userns restriction
--ubuntu는 aa-exec -p {trinity,chrome,flatpak}을 통해 재실행합니다 (이 프로필은 userns, 규칙을 가지고 있습니다).
24.04.4 : userns=1, unconfined=0 -> aa-exec bypass WORKS
26.04 : userns=1, unconfined=1 -> aa-exec bypass CLOSED