{"id":479012,"date":"2026-05-08T06:48:38","date_gmt":"2026-05-08T06:48:38","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=479012"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=479012","title":{"rendered":"Dirty Frag: \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 Linux LPE"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p><em>\u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 LPE \u043d\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u044f\u0434\u0440\u0430\u0445 Linux: \u043e\u0434\u0438\u043d \u0431\u0438\u043d\u0430\u0440\u044c \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 root \u043d\u0430 Ubuntu 24.04, RHEL 10.1, AlmaLinux 10, Fedora 44, openSUSE Tumbleweed. CVE \u043f\u043e\u043a\u0430 \u043d\u0435\u0442, PoC \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443, \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u043d\u0435 \u00ab\u0435\u0449\u0451 \u043e\u0434\u0438\u043d Dirty Pipe\u00bb, \u0438 \u0434\u0430\u0451\u043c \u0447\u0435\u043a\u043b\u0438\u0441\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432.<\/em><\/p>\n<h3>\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442<\/h3>\n<p>7 \u043c\u0430\u044f 2026 \u0433\u043e\u0434\u0430\u00a0<a href=\"https:\/\/x.com\/v4bel\">Hyunwoo Kim (@v4bel)<\/a>\u00a0\u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u00a0<a href=\"https:\/\/github.com\/V4bel\/dirtyfrag\">\u043f\u043e\u043b\u043d\u044b\u0439 write-up \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 PoC<\/a>\u00a0\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u043d\u0430\u0437\u0432\u0430\u043b\u00a0<strong>Dirty Frag<\/strong>. \u042d\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 (LPE) \u0434\u043e root, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0432\u0441\u0435\u0445 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u0441 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u044f\u0434\u0440\u0430\u043c\u0438 \u2013 \u043e\u0442 6.12 \u0434\u043e 7.0.<\/p>\n<ul>\n<li>\n<p>29 \u0430\u043f\u0440\u0435\u043b\u044f \u2013 \u0430\u0432\u0442\u043e\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0447\u0451\u0442 \u043f\u043e RxRPC-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0443 \u0432\u00a0<a href=\"mailto:security@kernel.org\"><code>security@kernel.org<\/code><\/a>\u00a0\u0438 \u043f\u0430\u0442\u0447 \u0432 netdev.<\/p>\n<\/li>\n<li>\n<p>30 \u0430\u043f\u0440\u0435\u043b\u044f \u2013 \u0442\u0443\u0434\u0430 \u0436\u0435 \u0443\u0445\u043e\u0434\u0438\u0442 ESP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u043e\u0431\u0435\u0438\u043c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0430\u0445 kernel-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430.<\/p>\n<\/li>\n<li>\n<p>7 \u043c\u0430\u044f \u2013 Kim \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0435\u0442\u0430\u043b\u0438 \u0438 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 \u0432\u00a0<a href=\"mailto:linux-distros@vs.openwall.org\"><code>linux-distros@vs.openwall.org<\/code><\/a>\u00a0\u0441 \u044d\u043c\u0431\u0430\u0440\u0433\u043e \u043d\u0430 5 \u0434\u043d\u0435\u0439. \u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435: \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 PoC \u0434\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u044d\u043c\u0431\u0430\u0440\u0433\u043e \u2013 \u0430\u0432\u0442\u043e\u0440 \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0432\u0435\u0440\u0441\u0438\u044e.<\/p>\n<\/li>\n<li>\n<p>7 \u043c\u0430\u044f (\u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432) \u2013 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 ESP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430. \u041f\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044e \u0432\u00a0<a href=\"https:\/\/lwn.net\/Articles\/1071719\/\">LWN<\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/news.ycombinator.com\/item?id=48053623\">Hacker News<\/a>\u00a0\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 PoC \u043f\u043e \u0443\u0436\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 netdev \u043f\u0430\u0442\u0447\u0443 \u2013 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u044d\u043c\u0431\u0430\u0440\u0433\u043e \u043d\u0435 \u043d\u0430\u0440\u0443\u0448\u0430\u043b\u0438, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u043e\u0442 \u0436\u0435.<\/p>\n<\/li>\n<li>\n<p>7 \u043c\u0430\u044f (\u0432\u0435\u0447\u0435\u0440\u043e\u043c) \u2013 \u043f\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044e \u0441 \u043c\u0435\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 \u0430\u0432\u0442\u043e\u0440 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442\u00a0<a href=\"https:\/\/github.com\/V4bel\/dirtyfrag\">\u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442<\/a>\u00a0\u0441 PoC \u043d\u0430 GitHub.<\/p>\n<\/li>\n<\/ul>\n<p>\u0427\u0442\u043e \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u043d\u0430 \u0440\u0443\u043a\u0430\u0445:<\/p>\n<ul>\n<li>\n<p><strong>CVE \u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e<\/strong>\u00a0\u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041f\u0430\u0442\u0447 ESP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u00a0<a href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/netdev\/net.git\/commit\/?id=f4c50a4034e62ab75f1d5cdd191dd5f9c77fdff4\">\u0443\u0436\u0435 \u0432 netdev<\/a>\u00a0(\u0441\u043c\u0435\u0440\u0436\u0435\u043d 7 \u043c\u0430\u044f), \u043f\u0430\u0442\u0447 RxRPC \u2013 \u043f\u043e\u043a\u0430\u00a0<a href=\"https:\/\/lore.kernel.org\/all\/afKV2zGR6rrelPC7@v4bel\/\">\u0442\u043e\u043b\u044c\u043a\u043e \u0432 LKML<\/a>.<\/p>\n<\/li>\n<li>\n<p>\u0412 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u043f\u0430\u0442\u0447\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435: AlmaLinux \u0443\u0436\u0435\u00a0<a href=\"https:\/\/almalinux.org\/blog\/2026-05-07-dirty-frag\/\">\u0432\u044b\u043a\u0430\u0442\u0438\u043b \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u044f\u0434\u0440\u0430<\/a>, CloudLinux\u00a0<a href=\"https:\/\/blog.cloudlinux.com\/dirty-frag-mitigation-and-kernel-update\">\u0433\u043e\u0442\u043e\u0432\u0438\u0442 KernelCare livepatch<\/a>. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u2013 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u0436\u0434\u0451\u043c \u0431\u044d\u043a\u043f\u043e\u0440\u0442\u0430\u00bb.<\/p>\n<\/li>\n<li>\n<p>\u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0431\u0430\u0433\u0430: ESP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u00a0<code>cac2661c53f3<\/code>\u00a0(\u044f\u043d\u0432\u0430\u0440\u044c 2017), RxRPC \u2013 \u0441\u00a0<code>2dc334f1a63a<\/code>\u00a0(\u0438\u044e\u043d\u044c 2023). \u041e\u043a\u043e\u043b\u043e\u00a0<strong>9 \u043b\u0435\u0442<\/strong>\u00a0\u043d\u0430 ESP-\u0441\u0442\u043e\u0440\u043e\u043d\u0435.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041c\u0435\u0445\u0430\u043d\u0438\u043a\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438<\/h3>\n<p>Dirty Frag \u2013 \u044d\u0442\u043e \u043d\u0435 \u043e\u0434\u043d\u0430, \u0430\u00a0<strong>\u0434\u0432\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430<\/strong>, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0435 \u0432 \u043e\u0431\u0449\u0438\u0439 exploit chain. \u041a\u043b\u0430\u0441\u0441 \u2013 \u0442\u043e\u0442 \u0436\u0435, \u0447\u0442\u043e \u0443\u00a0<a href=\"https:\/\/dirtypipe.cm4all.com\/\">Dirty Pipe<\/a>\u00a0\u0438\u00a0<a href=\"https:\/\/copy.fail\/\">Copy Fail<\/a>: \u0437\u0430\u043f\u0438\u0441\u044c \u0432 page cache \u0444\u0430\u0439\u043b\u043e\u0432, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0443 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e read-\u0434\u043e\u0441\u0442\u0443\u043f. \u0422\u043e\u043b\u044c\u043a\u043e Dirty Pipe \u00ab\u0433\u0440\u044f\u0437\u043d\u0438\u043b\u00bb\u00a0<code>struct pipe_buffer<\/code>, \u0430 Dirty Frag \u00ab\u0433\u0440\u044f\u0437\u043d\u0438\u0442\u00bb\u00a0<code>frag<\/code>\u00a0\u0432\u00a0<code>struct sk_buff<\/code>.<\/p>\n<h3>\u041e\u0431\u0449\u0430\u044f \u0438\u0434\u0435\u044f<\/h3>\n<p>\u0410\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0439 \u0447\u0435\u0440\u0435\u0437\u00a0<code>splice(file -&gt; pipe -&gt; socket)<\/code>\u00a0\u0441\u00a0<code>MSG_SPLICE_PAGES<\/code>\u00a0\u043f\u043e\u0434\u0441\u0430\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u00a0<code>frag<\/code>\u00a0\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e skb \u043f\u0440\u044f\u043c\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 page cache, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443\u00a0<code>\/usr\/bin\/su<\/code>\u00a0\u0438\u043b\u0438\u00a0<code>\/etc\/passwd<\/code>. \u042d\u0442\u043e\u0442 \u0436\u0435 skb \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 loopback \u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 receiving-\u043f\u0443\u0442\u044c \u044f\u0434\u0440\u0430, \u0433\u0434\u0435 \u043a\u0440\u0438\u043f\u0442\u043e\u043a\u043e\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u00a0<strong>in-place crypto<\/strong>\u00a0\u043f\u0440\u044f\u043c\u043e \u043f\u043e\u0432\u0435\u0440\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. AEAD-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u043d\u043e 4\u20138 \u0431\u0430\u0439\u0442 \u0432 page cache \u0443\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u2013 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043b\u0438\u00a0<code>drop_caches<\/code>.<\/p>\n<h3>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1: xfrm-ESP Page-Cache Write<\/h3>\n<p>\u0422\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u2013\u00a0<code>esp_input()<\/code>\u00a0\u0432\u00a0<code>net\/ipv4\/esp4.c<\/code>\u00a0\u0438\u00a0<code>net\/ipv6\/esp6.c<\/code>. \u041f\u0435\u0440\u0435\u0434 in-place AEAD-\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e skb \u043a\u043e\u0434\u00a0<strong>\u0434\u043e\u043b\u0436\u0435\u043d<\/strong>\u00a0\u043f\u043e\u0437\u0432\u0430\u0442\u044c\u00a0<code>skb_cow_data()<\/code>\u00a0\u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 frag \u0432 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440. \u041d\u043e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u0432\u0435\u0442\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 COW:<\/p>\n<pre><code>cif (!skb_cloned(skb)) {    if (!skb_is_nonlinear(skb)) {        nfrags = 1;        goto skip_cow;    } else if (!skb_has_frag_list(skb)) {        nfrags = skb_shinfo(skb)-&gt;nr_frags;        nfrags++;        goto skip_cow;          \/\/ \u0432\u043e\u0442 \u0441\u044e\u0434\u0430 \u0443\u043b\u0435\u0442\u0430\u0435\u0442 skb \u0441 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code><strong>if<\/strong> (!skb_cloned(skb)) {     <strong>if<\/strong> (!skb_is_nonlinear(skb)) {         nfrags = 1;         <strong>goto<\/strong> skip_cow;     } <strong>else<\/strong> <strong>if<\/strong> (!skb_has_frag_list(skb)) {         nfrags = skb_shinfo(skb)-&gt;nr_frags;         nfrags++;         <strong>goto<\/strong> skip_cow;          <em>\/\/ \u0432\u043e\u0442 \u0441\u044e\u0434\u0430 \u0443\u043b\u0435\u0442\u0430\u0435\u0442 skb \u0441 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439<\/em>     } }<\/code><\/p>\n<p>\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 ESP + ESN +\u00a0<code>authencesn(hmac(sha256), cbc(aes))<\/code>\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0<code>crypto_authenc_esn_decrypt()<\/code>\u00a0\u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u0430\u0439\u0442 seqno \u0434\u0435\u043b\u0430\u0435\u0442 4-\u0431\u0430\u0439\u0442\u043d\u044b\u0439 STORE \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443\u00a0<code>assoclen + cryptlen<\/code>\u00a0\u0432 dst SGL:<\/p>\n<pre><code>cscatterwalk_map_and_copy(tmp + 1, dst, assoclen + cryptlen, 4, 1);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>scatterwalk_map_and_copy(tmp + 1, dst, assoclen + cryptlen, 4, 1);<\/code><\/p>\n<p>\u0410\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u00a0<strong>\u0438 \u0430\u0434\u0440\u0435\u0441, \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>\u00a0\u044d\u0442\u0438\u0445 4 \u0431\u0430\u0439\u0442:<\/p>\n<ul>\n<li>\n<p><strong>\u0410\u0434\u0440\u0435\u0441<\/strong>\u00a0\u2013 \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0431\u043e\u0440 \u0434\u043b\u0438\u043d\u044b payload (\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 file offset \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b P).<\/p>\n<\/li>\n<li>\n<p><strong>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong>\u00a0\u2013 \u044d\u0442\u043e\u00a0<code>seq_hi<\/code>\u00a0\u0438\u0437\u00a0<code>XFRMA_REPLAY_ESN_VAL<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u0430\u043c \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 SA \u0447\u0435\u0440\u0435\u0437 netlink.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u043e\u00a0<strong>arbitrary 4-byte STORE primitive<\/strong>\u00a0\u0432 page cache. AEAD-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 STORE \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u00a0<code>-EBADMSG<\/code>, \u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e.<\/p>\n<p>\u0426\u0435\u043d\u0430 \u0432\u0445\u043e\u0434\u0430: \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 XFRM SA \u043d\u0443\u0436\u0435\u043d\u00a0<code>CAP_NET_ADMIN<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 \u0434\u0435\u043b\u0430\u0435\u0442\u00a0<code>unshare(CLONE_NEWUSER | CLONE_NEWNET)<\/code>. \u041d\u0430 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445, \u0433\u0434\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 user namespace, \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.<\/p>\n<h3>\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2: RxRPC Page-Cache Write<\/h3>\n<p>\u0422\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u2013\u00a0<code>rxkad_verify_packet_1()<\/code>\u00a0\u0432\u00a0<code>net\/rxrpc\/rxkad.c<\/code>. \u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435\u00a0<code>RXRPC_SECURITY_AUTH<\/code>\u00a0\u044f\u0434\u0440\u043e \u0434\u0435\u043b\u0430\u0435\u0442 in-place\u00a0<code>pcbc(fcrypt)<\/code>\u00a0decrypt \u043f\u0435\u0440\u0432\u044b\u0445 8 \u0431\u0430\u0439\u0442 payload skb:<\/p>\n<pre><code>cret = skb_to_sgvec(skb, sg, sp-&gt;offset, 8);memset(&amp;iv, 0, sizeof(iv));skcipher_request_set_crypt(req, sg, sg, 8, iv.x);   \/\/ src == dst, in-placeret = crypto_skcipher_decrypt(req);<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>ret = skb_to_sgvec(skb, sg, sp-&gt;offset, 8); memset(&amp;iv, 0, <strong>sizeof<\/strong>(iv)); skcipher_request_set_crypt(req, sg, sg, 8, iv.x);   <em>\/\/ src == dst, in-place<\/em> ret = crypto_skcipher_decrypt(req);<\/code><\/p>\n<p>\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u2013 \u0442\u043e\u043b\u044c\u043a\u043e\u00a0<code>skb_cloned(skb)<\/code>, \u043d\u043e \u043d\u0435\u00a0<code>skb-&gt;data_len<\/code>, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 skb \u0441 \u043f\u043e\u0434\u0441\u0430\u0436\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0432 frag \u043f\u0440\u043e\u0441\u043a\u0430\u043a\u0438\u0432\u0430\u0435\u0442.<\/p>\n<p>\u0422\u0443\u0442 \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441: STORE-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2013 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0431\u0430\u0439\u0442\u044b, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u00a0<code>fcrypt_decrypt(C, K)<\/code>, \u0433\u0434\u0435\u00a0<code>C<\/code>\u00a0\u2013 \u0443\u0436\u0435 \u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e ciphertext, \u0430\u00a0<code>K<\/code>\u00a0\u2013 \u0441\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0438\u0437 RxRPC v1 token (\u0435\u0433\u043e \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0439 \u0441\u0430\u043c \u043a\u043b\u0430\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437\u00a0<code>add_key(\"rxrpc\", ...)<\/code>, \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439).<\/p>\n<p><code>fcrypt<\/code>\u00a0\u2013 \u044d\u0442\u043e AFS-cipher \u0441 56-\u0431\u0438\u0442\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c \u0438 \u0431\u043b\u043e\u043a\u043e\u043c 8 \u0431\u0430\u0439\u0442. \u0414\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 user-space. \u042d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442\u00a0<code>K<\/code>\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e (~18 M \u043a\u043b\u044e\u0447\u0435\u0439\/\u0441\u0435\u043a) \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430\u00a0<code>fcrypt_decrypt(C, K)<\/code>\u00a0\u043d\u0435 \u0432\u044b\u0434\u0430\u0441\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d plaintext. \u041f\u043e\u043b\u043d\u044b\u0435 8 \u0431\u0430\u0439\u0442 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u043e (~2\u2075\u2076), \u043d\u043e \u0435\u0441\u043b\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 2\u20133 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0431\u0430\u0439\u0442\u0430 \u2013 \u043f\u043e\u0434\u0431\u043e\u0440 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b.<\/p>\n<p>\u0426\u0435\u043b\u044c \u2013 \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0451\u00a0<code>\/etc\/passwd<\/code>, \u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432:<\/p>\n<pre><code>textroot::0:0:GGGGGG:\/root:\/bin\/bash<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>root::0:0:GGGGGG:\/root:\/bin\/bash<\/code><\/p>\n<p>\u041f\u0443\u0441\u0442\u043e\u0435 \u043f\u043e\u043b\u0435 \u043f\u0430\u0440\u043e\u043b\u044f +\u00a0<code>pam_<\/code><a href=\"http:\/\/unix.so\"><code>unix.so<\/code><\/a><code> nullok<\/code>\u00a0\u0432 PAM common-auth =\u00a0<code>su -<\/code>\u00a0\u0431\u0435\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f. \u0414\u0430\u043b\u044c\u0448\u0435 \u2013\u00a0<code>setresuid(0,0,0)<\/code>\u00a0\u0438\u00a0<code>\/bin\/bash<\/code>\u00a0\u043e\u0442 root.<\/p>\n<p>\u0413\u043b\u0430\u0432\u043d\u043e\u0435:\u00a0<strong>\u043d\u0438\u043a\u0430\u043a\u0438\u0445 namespace, \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e\u00a0<\/strong><code><strong>CAP_*<\/strong><\/code>. \u0422\u043e\u043b\u044c\u043a\u043e\u00a0<code>add_key()<\/code>,\u00a0<code>socket(AF_RXRPC)<\/code>,\u00a0<code>splice()<\/code>,\u00a0<code>recvmsg()<\/code>\u00a0\u2013 \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.<\/p>\n<h3>\u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u043d\u0435 Dirty Pipe-2<\/h3>\n<p>Dirty Pipe \u0431\u044b\u043b race-condition-free, \u043d\u043e \u043e\u043f\u0438\u0440\u0430\u043b\u0441\u044f \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u00a0<code>struct pipe_buffer<\/code>\u00a0\u2013 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u00ab\u043f\u0440\u043e\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u00bb \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438 \u0447\u0435\u0440\u0435\u0437 splice. Dirty Frag \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0435\u0449\u0451 \u043f\u0440\u044f\u043c\u043e\u043b\u0438\u043d\u0435\u0439\u043d\u0435\u0435: in-place crypto\u00a0<strong>\u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e<\/strong>\u00a0\u043f\u0438\u0448\u0435\u0442 \u0432 dst, \u0430 dst \u2013 \u044d\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 page cache, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u0433\u043e read-only \u0434\u043e\u0441\u0442\u0443\u043f.<\/p>\n<ul>\n<li>\n<p><strong>\u041d\u0435 \u043d\u0443\u0436\u0435\u043d timing window.<\/strong>\u00a0\u041c\u0435\u0436\u0434\u0443 splice \u0438 crypto-STORE \u043d\u0435\u0442 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0434\u043e \u0443\u0441\u043f\u0435\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p><strong>\u041d\u0435 \u043d\u0443\u0436\u0435\u043d race.<\/strong>\u00a0\u041b\u043e\u0433\u0438\u043a\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f: \u043f\u043e\u0434\u0441\u0430\u0434\u0438\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u2013 \u043e\u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u0430 \u0434\u043e sink \u2013 STORE \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d.<\/p>\n<\/li>\n<li>\n<p><strong>\u042f\u0434\u0440\u043e \u043d\u0435 \u043f\u0430\u043d\u0438\u043a\u0443\u0435\u0442 \u043f\u0440\u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u0435.<\/strong>\u00a0AEAD\/HMAC \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443, skb \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0440\u043e\u043f\u0430\u0435\u0442\u0441\u044f, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 BUG\/oops.<\/p>\n<\/li>\n<li>\n<p><strong>\u0412\u044b\u0441\u043e\u043a\u0438\u0439 success rate.<\/strong>\u00a0\u041d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u0442\u0435\u043d\u0434\u0430\u0445 \u2013 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 100%.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0427\u0435\u043c \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 Dirty Pipe \u0438 Copy Fail<\/h3>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440<\/p>\n<\/th>\n<th>\n<p align=\"left\">Dirty Pipe (CVE-2022-0847)<\/p>\n<\/th>\n<th>\n<p align=\"left\">Copy Fail (CVE-2026-31431)<\/p>\n<\/th>\n<th>\n<p align=\"left\">Dirty Frag (CVE pending)<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0431\u044a\u0435\u043a\u0442 \u0437\u0430\u043f\u0438\u0441\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>struct pipe_buffer<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">TX SGL \u043f\u043e\u0432\u0435\u0440\u0445 page cache<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>frag<\/code>\u00a0\u043f\u043e\u0432\u0435\u0440\u0445 page cache<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Sink<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>copy_page_to_iter_pipe<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>scatterwalk_map_and_copy<\/code>\u00a0\u0432\u00a0<code>authencesn<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>authencesn<\/code>\u00a0\u0432\u00a0<code>esp_input<\/code>\u00a0+\u00a0<code>pcbc(fcrypt)<\/code>\u00a0\u0432\u00a0<code>rxkad_verify_packet_1<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Triggering subsystem<\/p>\n<\/td>\n<td>\n<p align=\"left\">pipe + splice<\/p>\n<\/td>\n<td>\n<p align=\"left\">AF_ALG (<code>algif_aead<\/code>)<\/p>\n<\/td>\n<td>\n<p align=\"left\">xfrm\/IPsec ESP + RxRPC<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Race condition<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u041d\u0435\u0442<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c<\/p>\n<\/td>\n<td>\n<p align=\"left\">4 \u0431\u0430\u0439\u0442\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">4 \u0431\u0430\u0439\u0442\u0430 (ESP) \/ 8 \u0431\u0430\u0439\u0442 (RxRPC)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 user<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 user (\u0435\u0441\u043b\u0438 algif_aead \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d)<\/p>\n<\/td>\n<td>\n<p align=\"left\"><code>CAP_NET_ADMIN<\/code>\u00a0\u0447\u0435\u0440\u0435\u0437 user namespace (ESP)\u00a0<strong>\u0438\u043b\u0438<\/strong>\u00a0\u043d\u0438\u0447\u0435\u0433\u043e (RxRPC)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Workaround<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043f\u0430\u0442\u0447 \u044f\u0434\u0440\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">blacklist\u00a0<code>algif_aead<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">blacklist\u00a0<code>esp4<\/code>,\u00a0<code>esp6<\/code>,\u00a0<code>rxrpc<\/code><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Mitigation Copy Fail \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442?<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2013<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u2013<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u041d\u0435\u0442<\/strong>, \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">Affected \u044f\u0434\u0440\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">5.8+<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">ESP: \u0441 4.10 (2017), RxRPC: \u0441 6.5 (2023)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">CVE<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e<\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e<\/strong><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u2013\u00a0<strong>\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 workaround Copy Fail (<\/strong><code><strong>algif_aead<\/strong><\/code><strong>\u00a0blacklist) \u043d\u0435 \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043e\u0442 Dirty Frag<\/strong>. \u042d\u0442\u043e \u0443\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 sink, \u0447\u0435\u0440\u0435\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 crypto-\u043f\u0443\u0442\u044c.<\/p>\n<h3>\u041a\u043e\u0433\u043e \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f<\/h3>\n<p>\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u043d\u0435 \u0432\u0441\u0435 \u0441\u0440\u0435\u0434\u044b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u044b.<\/p>\n<h3>\u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u0440\u0438\u0441\u043a<\/h3>\n<ul>\n<li>\n<p><strong>Shared hosting \u0438 VPS-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b.<\/strong>\u00a0\u041b\u044e\u0431\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 shell-\u0441\u0435\u0441\u0441\u0438\u0435\u0439 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0434\u043e root \u043d\u0430 \u0445\u043e\u0441\u0442-\u043d\u043e\u0434\u0435, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u0430 cgroup-\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0431\u0435\u0437 user namespace lockdown. \u0414\u043b\u044f CloudLinux \u0443\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439\u00a0<a href=\"https:\/\/blog.cloudlinux.com\/dirty-frag-mitigation-and-kernel-update\">\u043f\u043e\u0441\u0442<\/a>\u00a0\u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u043c livepatch.<\/p>\n<\/li>\n<li>\n<p><strong>Kubernetes worker nodes.<\/strong>\u00a0\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441\u00a0<code>hostPID: false<\/code>\u00a0\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c seccomp \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u0430\u0451\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0<code>add_key()<\/code>,\u00a0<code>socket(AF_RXRPC)<\/code>,\u00a0<code>splice()<\/code>. RxRPC-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb \u043d\u0430 Ubuntu-\u043d\u043e\u0434\u0430\u0445, \u0433\u0434\u0435 \u043c\u043e\u0434\u0443\u043b\u044c \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. ESP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 \u043d\u0430 \u043d\u043e\u0434\u0430\u0445 \u0441\u00a0<code>kernel.unprivileged_userns_clone=1<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>CI\/CD runners<\/strong>\u00a0(GitLab Runner, GitHub Actions self-hosted, Jenkins agents). \u041b\u044e\u0431\u043e\u0439 PR \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u0430 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 = \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 runner-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438. \u0415\u0441\u043b\u0438 runner \u043e\u0431\u0449\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u2013 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 = \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u044f \u0432\u0441\u0435\u0445.<\/p>\n<\/li>\n<li>\n<p><strong>Multi-tenant sandbox-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f<\/strong>: code playgrounds, ML-\u0442\u0440\u0435\u043d\u0430\u0436\u0451\u0440\u044b, \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u0440\u0438\u0441\u043a<\/h3>\n<ul>\n<li>\n<p><strong>\u0421\u0435\u0440\u0432\u0435\u0440\u044b \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438.<\/strong>\u00a0\u041a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 jump-hosts, dev-\u0431\u043e\u043a\u0441\u044b, build-\u0441\u0435\u0440\u0432\u0435\u0440\u044b. \u0415\u0441\u043b\u0438 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0435\u0441\u0442\u044c SSH \u2013 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c root.<\/p>\n<\/li>\n<li>\n<p><strong>\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0431\u0435\u0437 user namespace lockdown.<\/strong>\u00a0Docker \u0431\u0435\u0437\u00a0<code>userns-remap<\/code>, podman \u0432 rootfull-\u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u0430 Ubuntu.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041f\u043e\u043d\u0438\u0436\u0435\u043d\u043d\u044b\u0439 \u0440\u0438\u0441\u043a<\/h3>\n<ul>\n<li>\n<p><strong>\u0414\u0435\u0441\u043a\u0442\u043e\u043f\u044b \u0441 \u043e\u0434\u043d\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c.<\/strong>\u00a0\u0411\u0435\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p><strong>Single-purpose \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0430\u043f\u043b\u0430\u0439\u0430\u043d\u0441\u044b.<\/strong>\u00a0\u041e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043d\u0438\u0436\u0435.<\/p>\n<\/li>\n<\/ul>\n<h3>\u041d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 Ideco NGFW<\/h3>\n<p><strong>\u0423\u044f\u0437\u0432\u0438\u043c \u043b\u0438 Ideco NGFW?<\/strong><\/p>\n<p>\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0434\u0440\u043e Linux, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Ideco NGFW, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043a\u043b\u0430\u0441\u0441\u0443 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b\u0445. \u041d\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 attack surface \u0434\u043b\u044f Dirty Frag \u043d\u0430 NGFW \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0439:<\/p>\n<ul>\n<li>\n<p>\u041d\u0430 Ideco NGFW \u043d\u0435\u0442 shell-\u0441\u0435\u0441\u0441\u0438\u0439 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u2013 \u0447\u0435\u0440\u0435\u0437 web-\u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 SSH \u043f\u043e\u0434 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0431\u0435\u0437\u00a0<code>splice<\/code>\/<code>add_key<\/code>-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0442 CI\/CD-\u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a, \u043d\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043d\u0435\u0442 multi-tenant \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0430\u043f\u043b\u0430\u0439\u0430\u043d\u0441\u0430.<\/p>\n<\/li>\n<li>\n<p>Trigger-\u0432\u0435\u043a\u0442\u043e\u0440 Dirty Frag \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u00a0<strong>\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u0438\u043d\u0430\u0440\u044f<\/strong>\u00a0\u043f\u043e\u0434 \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c. \u041d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c NGFW \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442 \u2013 \u043d\u0443\u0436\u0435\u043d \u0441\u043d\u0430\u0447\u0430\u043b\u0430 RCE \u0438\u0437 \u0441\u0435\u0442\u0438, \u0430 \u044d\u0442\u043e \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u0430\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u044f \u0443\u0433\u0440\u043e\u0437\u044b.<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0434\u043b\u044f Dirty Frag \u043d\u0430 NGFW \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u00ab\u043d\u0435 \u043f\u0435\u0440\u0432\u0430\u044f \u0434\u0432\u0435\u0440\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0441\u043b\u043e\u043c\u0430\u0442\u044c\u00bb. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043c\u044b \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441 \u043f\u0430\u0442\u0447\u0435\u043c netdev \u0441\u0440\u0430\u0437\u0443, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u043f\u0441\u0442\u0440\u0438\u043c \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u043f\u0440\u043e\u0439\u0434\u0451\u0442 \u0440\u0435\u0433\u0440\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<h3>\u0427\u0442\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441<\/h3>\n<p>\u041c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0447\u0435\u043a\u043b\u0438\u0441\u0442 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 Linux. \u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0448\u0430\u0433\u043e\u0432 \u0432\u0430\u0436\u0435\u043d.<\/p>\n<h3>1. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b \u043b\u0438 \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438<\/h3>\n<p><code>lsmod | grep -E '^(esp4|esp6|rxrpc) '<\/code><\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u2013 \u043c\u043e\u0434\u0443\u043b\u0438 \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u044b, \u0440\u0438\u0441\u043a \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 (\u043d\u043e \u043d\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0439: \u043c\u043e\u0434\u0443\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0447\u0435\u0440\u0435\u0437\u00a0<code>MODULE_ALIAS_NETPROTO<\/code>).<\/p>\n<h3>2. \u041e\u0446\u0435\u043d\u0438\u0442\u044c, \u043d\u0443\u0436\u043d\u044b \u043b\u0438 \u043c\u043e\u0434\u0443\u043b\u0438 \u0432 \u043f\u0440\u043e\u0434\u0435<\/h3>\n<ul>\n<li>\n<p><code>esp4<\/code>\/<code>esp6<\/code>\u00a0\u043d\u0443\u0436\u043d\u044b, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c IPsec (strongSwan, libreswan, racoon, FRR \u0441 IPsec-\u0442\u0443\u043d\u043d\u0435\u043b\u044f\u043c\u0438, \u043b\u044e\u0431\u044b\u0435 kernel-mode VPN).<\/p>\n<\/li>\n<li>\n<p><code>rxrpc<\/code>\u00a0\u043d\u0443\u0436\u0435\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 AFS (Andrew File System) \u2013 \u043d\u0430 99% \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432\u00a0<strong>\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f<\/strong>, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u0430 Ubuntu, \u0433\u0434\u0435 \u043e\u043d \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u00ab\u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439\u00bb.<\/p>\n<\/li>\n<li>\n<p>WireGuard, OpenVPN, Tailscale, Nebula, GRE \u2013\u00a0<strong>\u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442<\/strong>\u00a0\u043d\u0438 esp4\/esp6, \u043d\u0438 rxrpc. \u041d\u0430 \u043d\u0438\u0445 \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 blacklist \u043c\u043e\u0434\u0443\u043b\u0435\u0439 esp.<\/p>\n<\/li>\n<\/ul>\n<h3>3. \u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c workaround \u0442\u0430\u043c, \u0433\u0434\u0435 \u044d\u0442\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e<\/h3>\n<p>\u0414\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432\u00a0<strong>\u0431\u0435\u0437 IPsec<\/strong>:<\/p>\n<pre><code>bashsudo sh -c \"printf 'install esp4 \/bin\/false\\ninstall esp6 \/bin\/false\\ninstall rxrpc \/bin\/false\\n' &gt; \/etc\/modprobe.d\/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2&gt;\/dev\/null; true\"sudo sync &amp;&amp; echo 3 | sudo tee \/proc\/sys\/vm\/drop_caches<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>sudo sh -c \"printf 'install esp4 \/bin\/false\\ninstall esp6 \/bin\/false\\ninstall rxrpc \/bin\/false\\n' &gt; \/etc\/modprobe.d\/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2&gt;\/dev\/null; true\" sudo sync &amp;&amp; echo 3 | sudo tee \/proc\/sys\/vm\/drop_caches<\/code><\/p>\n<p>\u0414\u043b\u044f \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432\u00a0<strong>\u0441 IPsec<\/strong>\u00a0\u2013 blacklist&#8217;\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e\u00a0<code>rxrpc<\/code>:<\/p>\n<pre><code>bashsudo sh -c \"printf 'install rxrpc \/bin\/false\\n' &gt; \/etc\/modprobe.d\/dirtyfrag-rxrpc.conf; rmmod rxrpc 2&gt;\/dev\/null; true\"<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>sudo sh -c \"printf 'install rxrpc \/bin\/false\\n' &gt; \/etc\/modprobe.d\/dirtyfrag-rxrpc.conf; rmmod rxrpc 2&gt;\/dev\/null; true\"<\/code><\/p>\n<p>\u042d\u0442\u043e \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u0438\u0437 \u0434\u0432\u0443\u0445 \u0432\u0435\u043a\u0442\u043e\u0440\u043e\u0432 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043d\u0430 Ubuntu (\u0433\u0434\u0435\u00a0<code>rxrpc<\/code>\u00a0\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u0430\u0436\u0435 \u0431\u0435\u0437 AFS). ESP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0434\u043e \u0432\u044b\u0445\u043e\u0434\u0430 \u043f\u0430\u0442\u0447\u0430 \u043e\u0442 \u0432\u0435\u043d\u0434\u043e\u0440\u0430, \u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f user namespace.<\/p>\n<h3>4. \u0417\u0430\u043a\u0440\u044b\u0442\u044c user namespace \u0442\u0430\u043c, \u0433\u0434\u0435 \u043e\u043d\u0438 \u043d\u0435 \u043d\u0443\u0436\u043d\u044b<\/h3>\n<p>\u041d\u0430 Ubuntu\/Debian:<\/p>\n<pre><code>bashsudo sysctl -w kernel.unprivileged_userns_clone=0echo 'kernel.unprivileged_userns_clone = 0' | sudo tee \/etc\/sysctl.d\/99-no-userns.conf<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>sudo sysctl -w kernel.unprivileged_userns_clone=0 echo 'kernel.unprivileged_userns_clone = 0' | sudo tee \/etc\/sysctl.d\/99-no-userns.conf<\/code><\/p>\n<p>\u041d\u0430 RHEL\/Alma\/Rocky\/Fedora:<\/p>\n<pre><code>bashsudo sysctl -w user.max_user_namespaces=0echo 'user.max_user_namespaces = 0' | sudo tee \/etc\/sysctl.d\/99-no-userns.conf<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>sudo sysctl -w user.max_user_namespaces=0 echo 'user.max_user_namespaces = 0' | sudo tee \/etc\/sysctl.d\/99-no-userns.conf<\/code><\/p>\n<p>\u0423\u0447\u0442\u0438\u0442\u0435, \u0447\u0442\u043e \u044d\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u0435\u0442 rootless Docker\/Podman, Firefox sandbox \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u0445, \u0438 \u0447\u0430\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0432\u0440\u043e\u0434\u0435\u00a0<code>bwrap<\/code>\/<code>flatpak<\/code>. \u041f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0442\u0430\u043c, \u0433\u0434\u0435 \u044d\u0442\u043e \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e.<\/p>\n<h3>5. \u041f\u043e\u0434\u043f\u0438\u0441\u0430\u0442\u044c\u0441\u044f \u043d\u0430 security-\u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u044f \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f, \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u044b\u0439\u0434\u0435\u0442 \u043f\u0430\u0442\u0447<\/h3>\n<ul>\n<li>\n<p><strong>Ubuntu<\/strong>\u00a0\u2013\u00a0<a href=\"https:\/\/ubuntu.com\/security\/notices\">USN-\u043a\u0430\u043d\u0430\u043b<\/a>, \u043f\u043e\u043a\u0430 \u0442\u0438\u043a\u0435\u0442\u0430 \u043d\u0435\u0442, \u043d\u043e \u043e\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>Debian<\/strong>\u00a0\u2013\u00a0<a href=\"https:\/\/www.debian.org\/security\/\">DSA<\/a>.<\/p>\n<\/li>\n<li>\n<p><strong>RHEL\/Alma\/Rocky<\/strong>\u00a0\u2013\u00a0<a href=\"https:\/\/almalinux.org\/blog\/2026-05-07-dirty-frag\/\">AlmaLinux \u0443\u0436\u0435 \u0432\u044b\u043a\u0430\u0442\u0438\u043b \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u044f\u0434\u0440\u0430<\/a>.<\/p>\n<\/li>\n<li>\n<p><strong>CloudLinux<\/strong>\u00a0\u2013\u00a0<a href=\"https:\/\/blog.cloudlinux.com\/dirty-frag-mitigation-and-kernel-update\">KernelCare livepatch \u0432 \u0440\u0430\u0431\u043e\u0442\u0435<\/a>.<\/p>\n<\/li>\n<li>\n<p><strong>SUSE\/openSUSE<\/strong>\u00a0\u2013 \u0442\u0438\u043a\u0435\u0442 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435, \u0430\u043f\u0434\u0435\u0439\u0442 \u043e\u0436\u0438\u0434\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u044d\u0442\u043e\u0439 \u043d\u0435\u0434\u0435\u043b\u0435.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043d\u0430\u043a\u0430\u0442\u043a\u0438 \u043f\u0430\u0442\u0447\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 SKBFL_SHARED_FRAG-\u043e\u0431\u0445\u043e\u0434\u0430:<\/p>\n<pre><code>bashzgrep -E 'SKBFL_SHARED_FRAG|skb_has_shared_frag' \/proc\/config.gz 2&gt;\/dev\/null# \u0438\u043b\u0438, \u0435\u0441\u043b\u0438 \/proc\/config.gz \u043d\u0435\u0442:modinfo esp4 | grep -i version<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code>zgrep -E 'SKBFL_SHARED_FRAG|skb_has_shared_frag' \/proc\/config.gz 2&gt;\/dev\/null <em># \u0438\u043b\u0438, \u0435\u0441\u043b\u0438 \/proc\/config.gz \u043d\u0435\u0442:<\/em> modinfo esp4 | grep -i version<\/code><\/p>\n<p>\u0418 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u2013 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0441\u043b\u0435\u0434\u043e\u0432 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u0438. \u0415\u0441\u043b\u0438 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435\u00a0<strong>\u0443\u0436\u0435<\/strong>\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b\u0441\u044f PoC, \u0432 page cache \u043c\u043e\u0433\u0443\u0442 \u043e\u0441\u0442\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043f\u0438\u0438\u00a0<code>\/usr\/bin\/su<\/code>\u00a0\u0438\u00a0<code>\/etc\/passwd<\/code>. \u0413\u0440\u0443\u0431\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430:<\/p>\n<pre><code>bash# \u0421\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0445\u0435\u0448 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0438 \u0447\u0435\u0440\u0435\u0437 cat (page cache)sha256sum \/usr\/bin\/sucat \/usr\/bin\/su | sha256sumdiff &lt;(getent passwd root) &lt;(grep '^root:' \/etc\/passwd)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p><code><em># \u0421\u0440\u0430\u0432\u043d\u0438\u0442\u044c \u0445\u0435\u0448 \u0444\u0430\u0439\u043b\u0430 \u043d\u0430 \u0434\u0438\u0441\u043a\u0435 \u0438 \u0447\u0435\u0440\u0435\u0437 cat (page cache)<\/em> sha256sum \/usr\/bin\/su cat \/usr\/bin\/su | sha256sum diff &lt;(getent passwd root) &lt;(grep '^root:' \/etc\/passwd)<\/code><\/p>\n<p>\u041f\u0440\u0438 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u2013\u00a0<code>echo 3 &gt; \/proc\/sys\/vm\/drop_caches<\/code>\u00a0\u0438 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0441 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0447\u0435\u0440\u0435\u0437\u00a0<code>rpm -V<\/code>\u00a0\/\u00a0<code>dpkg --verify<\/code>\u00a0\/\u00a0<code>debsums<\/code>. \u0415\u0441\u043b\u0438 \u0440\u0430\u0441\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u2013 \u0438\u0441\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u0444\u0430\u043a\u0442\u0430 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u0438 \u0445\u043e\u0441\u0442\u0430.<\/p>\n<h3>\u0418\u0442\u043e\u0433<\/h3>\n<p>Dirty Frag \u2013 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u043b\u0430\u0441\u0441 \u00abin-place crypto over splice&#8217;d page\u00bb \u043e\u043a\u0430\u0437\u0430\u043b\u0441\u044f \u0448\u0438\u0440\u0435, \u0447\u0435\u043c \u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0441\u043b\u0435 Copy Fail. \u041b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 \u0434\u043e root \u043d\u0430 \u0432\u0441\u0435\u0445 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u0447\u0435\u0440\u0435\u0437\u00a0<strong>\u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439<\/strong>\u00a0\u0431\u0430\u0433 \u0431\u0435\u0437 race condition, \u0431\u0435\u0437 CVE, \u0441 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u043c PoC \u0438 \u0431\u0435\u0437 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u043f\u0430\u0442\u0447\u0435\u0439 \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 \u2013 \u044d\u0442\u043e \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041c\u044b \u0432 Ideco \u0441\u043b\u0435\u0434\u0438\u043c \u0437\u0430 \u044d\u0442\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u043e\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432 netdev 30 \u0430\u043f\u0440\u0435\u043b\u044f. \u041c\u044b \u0443\u0436\u0435 \u0432\u043a\u043b\u044e\u0447\u0438\u043b\u0438 \u0432 \u043f\u043b\u0430\u043d \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0445 \u043c\u0438\u043d\u043e\u0440\u043d\u044b\u0445 \u0440\u0435\u043b\u0438\u0437\u043e\u0432 \u0432\u044b\u043f\u0443\u0441\u043a\u0430 \u043f\u0430\u0442\u0447\u0435\u0439 \u0434\u043b\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0432\u0435\u0440\u0441\u0438\u0439 \u2013 \u043a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u0430\u043f\u0441\u0442\u0440\u0438\u043c \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442 \u0444\u0438\u043a\u0441.<\/p>\n<p>\u041f\u043e\u0445\u043e\u0436\u0435, \u0447\u0442\u043e \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 \u043c\u0435\u0441\u044f\u0446\u044b \u043f\u0440\u0438\u043d\u0435\u0441\u0443\u0442 \u0435\u0449\u0451 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u2013 \u0432 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0434\u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0445, \u0433\u0434\u0435 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c splice \u2192 in-place transform \u2192 STORE.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1032842\/\">https:\/\/habr.com\/ru\/articles\/1032842\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 LPE \u043d\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u044f\u0434\u0440\u0430\u0445 Linux: \u043e\u0434\u0438\u043d \u0431\u0438\u043d\u0430\u0440\u044c \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 root \u043d\u0430 Ubuntu 24.04, RHEL 10.1, AlmaLinux 10, Fedora 44, openSUSE Tumbleweed. CVE \u043f\u043e\u043a\u0430 \u043d\u0435\u0442, PoC \u043b\u0435\u0436\u0438\u0442 \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438. \u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0443, \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0435\u043c, \u043f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u043d\u0435 \u00ab\u0435\u0449\u0451 \u043e\u0434\u0438\u043d Dirty Pipe\u00bb, \u0438 \u0434\u0430\u0451\u043c \u0447\u0435\u043a\u043b\u0438\u0441\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0434\u043b\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432.\u041a\u043e\u043d\u0442\u0435\u043a\u0441\u04427 \u043c\u0430\u044f 2026 \u0433\u043e\u0434\u0430\u00a0Hyunwoo Kim (@v4bel)\u00a0\u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b\u00a0\u043f\u043e\u043b\u043d\u044b\u0439 write-up \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 PoC\u00a0\u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043e\u043d \u043d\u0430\u0437\u0432\u0430\u043b\u00a0Dirty Frag. \u042d\u0442\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435 \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439 (LPE) \u0434\u043e root, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 \u0432\u0441\u0435\u0445 \u043c\u0430\u0436\u043e\u0440\u043d\u044b\u0445 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u0441 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u044f\u0434\u0440\u0430\u043c\u0438 \u2013 \u043e\u0442 6.12 \u0434\u043e 7.0.29 \u0430\u043f\u0440\u0435\u043b\u044f \u2013 \u0430\u0432\u0442\u043e\u0440 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0447\u0451\u0442 \u043f\u043e RxRPC-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0443 \u0432\u00a0security@kernel.org\u00a0\u0438 \u043f\u0430\u0442\u0447 \u0432 netdev.30 \u0430\u043f\u0440\u0435\u043b\u044f \u2013 \u0442\u0443\u0434\u0430 \u0436\u0435 \u0443\u0445\u043e\u0434\u0438\u0442 ESP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u043e \u043e\u0431\u0435\u0438\u043c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044f\u043c \u043f\u043e\u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0430\u0445 kernel-\u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430.7 \u043c\u0430\u044f \u2013 Kim \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0434\u0435\u0442\u0430\u043b\u0438 \u0438 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 \u0432\u00a0linux-distros@vs.openwall.org\u00a0\u0441 \u044d\u043c\u0431\u0430\u0440\u0433\u043e \u043d\u0430 5 \u0434\u043d\u0435\u0439. \u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0435: \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0442\u0440\u0435\u0442\u0438\u0439 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 PoC \u0434\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f \u044d\u043c\u0431\u0430\u0440\u0433\u043e \u2013 \u0430\u0432\u0442\u043e\u0440 \u0441\u0440\u0430\u0437\u0443 \u0432\u044b\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u044e \u0432\u0435\u0440\u0441\u0438\u044e.7 \u043c\u0430\u044f (\u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432) \u2013 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 ESP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430. \u041f\u043e \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044e \u0432\u00a0LWN\u00a0\u0438\u00a0Hacker News\u00a0\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 PoC \u043f\u043e \u0443\u0436\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u0432 netdev \u043f\u0430\u0442\u0447\u0443 \u2013 \u0444\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u044d\u043c\u0431\u0430\u0440\u0433\u043e \u043d\u0435 \u043d\u0430\u0440\u0443\u0448\u0430\u043b\u0438, \u043d\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0442\u043e\u0442 \u0436\u0435.7 \u043c\u0430\u044f (\u0432\u0435\u0447\u0435\u0440\u043e\u043c) \u2013 \u043f\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u0438\u044e \u0441 \u043c\u0435\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432 \u0430\u0432\u0442\u043e\u0440 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u0435\u0442\u00a0\u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u00a0\u0441 PoC \u043d\u0430 GitHub.\u0427\u0442\u043e \u043c\u044b \u0438\u043c\u0435\u0435\u043c \u043d\u0430 \u0440\u0443\u043a\u0430\u0445:CVE \u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e\u00a0\u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0434\u0432\u0443\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0438.\u041f\u0430\u0442\u0447 ESP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u00a0\u0443\u0436\u0435 \u0432 netdev\u00a0(\u0441\u043c\u0435\u0440\u0436\u0435\u043d 7 \u043c\u0430\u044f), \u043f\u0430\u0442\u0447 RxRPC \u2013 \u043f\u043e\u043a\u0430\u00a0\u0442\u043e\u043b\u044c\u043a\u043e \u0432 LKML.\u0412 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445 \u043f\u0430\u0442\u0447\u0438 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435: AlmaLinux \u0443\u0436\u0435\u00a0\u0432\u044b\u043a\u0430\u0442\u0438\u043b \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0435 \u044f\u0434\u0440\u0430, CloudLinux\u00a0\u0433\u043e\u0442\u043e\u0432\u0438\u0442 KernelCare livepatch. \u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u2013 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u00ab\u0436\u0434\u0451\u043c \u0431\u044d\u043a\u043f\u043e\u0440\u0442\u0430\u00bb.\u0416\u0438\u0437\u043d\u0435\u043d\u043d\u044b\u0439 \u0446\u0438\u043a\u043b \u0431\u0430\u0433\u0430: ESP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0441 \u043a\u043e\u043c\u043c\u0438\u0442\u0430\u00a0cac2661c53f3\u00a0(\u044f\u043d\u0432\u0430\u0440\u044c 2017), RxRPC \u2013 \u0441\u00a02dc334f1a63a\u00a0(\u0438\u044e\u043d\u044c 2023). \u041e\u043a\u043e\u043b\u043e\u00a09 \u043b\u0435\u0442\u00a0\u043d\u0430 ESP-\u0441\u0442\u043e\u0440\u043e\u043d\u0435.\u041c\u0435\u0445\u0430\u043d\u0438\u043a\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438Dirty Frag \u2013 \u044d\u0442\u043e \u043d\u0435 \u043e\u0434\u043d\u0430, \u0430\u00a0\u0434\u0432\u0435 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430, \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u0435 \u0432 \u043e\u0431\u0449\u0438\u0439 exploit chain. \u041a\u043b\u0430\u0441\u0441 \u2013 \u0442\u043e\u0442 \u0436\u0435, \u0447\u0442\u043e \u0443\u00a0Dirty Pipe\u00a0\u0438\u00a0Copy Fail: \u0437\u0430\u043f\u0438\u0441\u044c \u0432 page cache \u0444\u0430\u0439\u043b\u043e\u0432, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0443 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u0433\u043e \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e read-\u0434\u043e\u0441\u0442\u0443\u043f. \u0422\u043e\u043b\u044c\u043a\u043e Dirty Pipe \u00ab\u0433\u0440\u044f\u0437\u043d\u0438\u043b\u00bb\u00a0struct pipe_buffer, \u0430 Dirty Frag \u00ab\u0433\u0440\u044f\u0437\u043d\u0438\u0442\u00bb\u00a0frag\u00a0\u0432\u00a0struct sk_buff.\u041e\u0431\u0449\u0430\u044f \u0438\u0434\u0435\u044f\u0410\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0439 \u0447\u0435\u0440\u0435\u0437\u00a0splice(file -&gt; pipe -&gt; socket)\u00a0\u0441\u00a0MSG_SPLICE_PAGES\u00a0\u043f\u043e\u0434\u0441\u0430\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u00a0frag\u00a0\u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e skb \u043f\u0440\u044f\u043c\u0443\u044e \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 page cache, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443\u00a0\/usr\/bin\/su\u00a0\u0438\u043b\u0438\u00a0\/etc\/passwd. \u042d\u0442\u043e\u0442 \u0436\u0435 skb \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 loopback \u0438 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 receiving-\u043f\u0443\u0442\u044c \u044f\u0434\u0440\u0430, \u0433\u0434\u0435 \u043a\u0440\u0438\u043f\u0442\u043e\u043a\u043e\u0434 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u00a0in-place crypto\u00a0\u043f\u0440\u044f\u043c\u043e \u043f\u043e\u0432\u0435\u0440\u0445 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b. AEAD-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043e\u0448\u0438\u0431\u043a\u043e\u0439, \u043d\u043e 4\u20138 \u0431\u0430\u0439\u0442 \u0432 page cache \u0443\u0436\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u2013 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u0434\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0438\u043b\u0438\u00a0drop_caches.\u0412\u0430\u0440\u0438\u0430\u043d\u0442 1: xfrm-ESP Page-Cache Write\u0422\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u2013\u00a0esp_input()\u00a0\u0432\u00a0net\/ipv4\/esp4.c\u00a0\u0438\u00a0net\/ipv6\/esp6.c. \u041f\u0435\u0440\u0435\u0434 in-place AEAD-\u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u043e\u0439 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0433\u043e skb \u043a\u043e\u0434\u00a0\u0434\u043e\u043b\u0436\u0435\u043d\u00a0\u043f\u043e\u0437\u0432\u0430\u0442\u044c\u00a0skb_cow_data()\u00a0\u0438 \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 frag \u0432 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u0431\u0443\u0444\u0435\u0440. \u041d\u043e \u0432 \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c \u043a\u043e\u0434\u0435 \u0435\u0441\u0442\u044c \u0432\u0435\u0442\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u0442 COW:cif (!skb_cloned(skb)) {    if (!skb_is_nonlinear(skb)) {        nfrags = 1;        goto skip_cow;    } else if (!skb_has_frag_list(skb)) {        nfrags = skb_shinfo(skb)-&gt;nr_frags;        nfrags++;        goto skip_cow;          \/\/ \u0432\u043e\u0442 \u0441\u044e\u0434\u0430 \u0443\u043b\u0435\u0442\u0430\u0435\u0442 skb \u0441 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439    }}if (!skb_cloned(skb)) {     if (!skb_is_nonlinear(skb)) {         nfrags = 1;         goto skip_cow;     } else if (!skb_has_frag_list(skb)) {         nfrags = skb_shinfo(skb)-&gt;nr_frags;         nfrags++;         goto skip_cow;          \/\/ \u0432\u043e\u0442 \u0441\u044e\u0434\u0430 \u0443\u043b\u0435\u0442\u0430\u0435\u0442 skb \u0441 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439     } }\u0414\u0430\u043b\u044c\u0448\u0435 \u043f\u0440\u0438 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 ESP + ESN +\u00a0authencesn(hmac(sha256), cbc(aes))\u00a0\u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0crypto_authenc_esn_decrypt()\u00a0\u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u0430\u0439\u0442 seqno \u0434\u0435\u043b\u0430\u0435\u0442 4-\u0431\u0430\u0439\u0442\u043d\u044b\u0439 STORE \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443\u00a0assoclen + cryptlen\u00a0\u0432 dst SGL:cscatterwalk_map_and_copy(tmp + 1, dst, assoclen + cryptlen, 4, 1);scatterwalk_map_and_copy(tmp + 1, dst, assoclen + cryptlen, 4, 1);\u0410\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442\u00a0\u0438 \u0430\u0434\u0440\u0435\u0441, \u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00a0\u044d\u0442\u0438\u0445 4 \u0431\u0430\u0439\u0442:\u0410\u0434\u0440\u0435\u0441\u00a0\u2013 \u0447\u0435\u0440\u0435\u0437 \u0432\u044b\u0431\u043e\u0440 \u0434\u043b\u0438\u043d\u044b payload (\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0433\u043e\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 file offset \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b P).\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u00a0\u2013 \u044d\u0442\u043e\u00a0seq_hi\u00a0\u0438\u0437\u00a0XFRMA_REPLAY_ESN_VAL, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u0430\u043c \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0440\u0438 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 SA \u0447\u0435\u0440\u0435\u0437 netlink.\u0422\u043e \u0435\u0441\u0442\u044c \u044d\u0442\u043e\u00a0arbitrary 4-byte STORE primitive\u00a0\u0432 page cache. AEAD-\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u043e\u0441\u043b\u0435 STORE \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u00a0-EBADMSG, \u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0443\u0436\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e.\u0426\u0435\u043d\u0430 \u0432\u0445\u043e\u0434\u0430: \u0434\u043b\u044f \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 XFRM SA \u043d\u0443\u0436\u0435\u043d\u00a0CAP_NET_ADMIN, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 \u0434\u0435\u043b\u0430\u0435\u0442\u00a0unshare(CLONE_NEWUSER | CLONE_NEWNET). \u041d\u0430 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430\u0445, \u0433\u0434\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 user namespace, \u0432\u0441\u0451 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442.\u0412\u0430\u0440\u0438\u0430\u043d\u0442 2: RxRPC Page-Cache Write\u0422\u043e\u0447\u043a\u0430 \u0432\u0445\u043e\u0434\u0430 \u2013\u00a0rxkad_verify_packet_1()\u00a0\u0432\u00a0net\/rxrpc\/rxkad.c. \u041d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435\u00a0RXRPC_SECURITY_AUTH\u00a0\u044f\u0434\u0440\u043e \u0434\u0435\u043b\u0430\u0435\u0442 in-place\u00a0pcbc(fcrypt)\u00a0decrypt \u043f\u0435\u0440\u0432\u044b\u0445 8 \u0431\u0430\u0439\u0442 payload skb:cret = skb_to_sgvec(skb, sg, sp-&gt;offset, 8);memset(&amp;iv, 0, sizeof(iv));skcipher_request_set_crypt(req, sg, sg, 8, iv.x);   \/\/ src == dst, in-placeret = crypto_skcipher_decrypt(req);ret = skb_to_sgvec(skb, sg, sp-&gt;offset, 8); memset(&amp;iv, 0, sizeof(iv)); skcipher_request_set_crypt(req, sg, sg, 8, iv.x);   \/\/ src == dst, in-place ret = crypto_skcipher_decrypt(req);\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u2013 \u0442\u043e\u043b\u044c\u043a\u043e\u00a0skb_cloned(skb), \u043d\u043e \u043d\u0435\u00a0skb-&gt;data_len, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u044b\u0439 skb \u0441 \u043f\u043e\u0434\u0441\u0430\u0436\u0435\u043d\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435\u0439 \u0432 frag \u043f\u0440\u043e\u0441\u043a\u0430\u043a\u0438\u0432\u0430\u0435\u0442.\u0422\u0443\u0442 \u0435\u0441\u0442\u044c \u043d\u044e\u0430\u043d\u0441: STORE-\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2013 \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0435 \u0431\u0430\u0439\u0442\u044b, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u00a0fcrypt_decrypt(C, K), \u0433\u0434\u0435\u00a0C\u00a0\u2013 \u0443\u0436\u0435 \u043b\u0435\u0436\u0430\u0449\u0438\u0439 \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u0441\u043c\u0435\u0449\u0435\u043d\u0438\u044e ciphertext, \u0430\u00a0K\u00a0\u2013 \u0441\u0435\u0441\u0441\u0438\u043e\u043d\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0438\u0437 RxRPC v1 token (\u0435\u0433\u043e \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0439 \u0441\u0430\u043c \u043a\u043b\u0430\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437\u00a0add_key(&#171;rxrpc&#187;, &#8230;), \u0431\u0435\u0437 \u043a\u0430\u043a\u0438\u0445-\u043b\u0438\u0431\u043e \u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0439).fcrypt\u00a0\u2013 \u044d\u0442\u043e AFS-cipher \u0441 56-\u0431\u0438\u0442\u043d\u044b\u043c \u043a\u043b\u044e\u0447\u043e\u043c \u0438 \u0431\u043b\u043e\u043a\u043e\u043c 8 \u0431\u0430\u0439\u0442. \u0414\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 user-space. \u042d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u0442\u00a0K\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e (~18 M \u043a\u043b\u044e\u0447\u0435\u0439\/\u0441\u0435\u043a) \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430\u00a0fcrypt_decrypt(C, K)\u00a0\u043d\u0435 \u0432\u044b\u0434\u0430\u0441\u0442 \u043d\u0443\u0436\u043d\u044b\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d plaintext. \u041f\u043e\u043b\u043d\u044b\u0435 8 \u0431\u0430\u0439\u0442 \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u043d\u0435\u0440\u0435\u0430\u043b\u044c\u043d\u043e (~2\u2075\u2076), \u043d\u043e \u0435\u0441\u043b\u0438 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e 2\u20133 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0431\u0430\u0439\u0442\u0430 \u2013 \u043f\u043e\u0434\u0431\u043e\u0440 \u0443\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b.\u0426\u0435\u043b\u044c \u2013 \u043d\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432\u0441\u0451\u00a0\/etc\/passwd, \u0430 \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0432:textroot::0:0:GGGGGG:\/root:\/bin\/bashroot::0:0:GGGGGG:\/root:\/bin\/bash\u041f\u0443\u0441\u0442\u043e\u0435 \u043f\u043e\u043b\u0435 \u043f\u0430\u0440\u043e\u043b\u044f +\u00a0pam_unix.so nullok\u00a0\u0432 PAM common-auth =\u00a0su &#8212;\u00a0\u0431\u0435\u0437 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u043f\u0430\u0440\u043e\u043b\u044f. \u0414\u0430\u043b\u044c\u0448\u0435 \u2013\u00a0setresuid(0,0,0)\u00a0\u0438\u00a0\/bin\/bash\u00a0\u043e\u0442 root.\u0413\u043b\u0430\u0432\u043d\u043e\u0435:\u00a0\u043d\u0438\u043a\u0430\u043a\u0438\u0445 namespace, \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e\u00a0CAP_*. \u0422\u043e\u043b\u044c\u043a\u043e\u00a0add_key(),\u00a0socket(AF_RXRPC),\u00a0splice(),\u00a0recvmsg()\u00a0\u2013 \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u043c\u0443 \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e.\u041f\u043e\u0447\u0435\u043c\u0443 \u044d\u0442\u043e \u043d\u0435 Dirty Pipe-2Dirty Pipe \u0431\u044b\u043b race-condition-free, \u043d\u043e \u043e\u043f\u0438\u0440\u0430\u043b\u0441\u044f \u043d\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u00a0struct pipe_buffer\u00a0\u2013 \u043d\u0443\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u00ab\u043f\u0440\u043e\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u00bb \u043d\u0443\u0436\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438 \u0447\u0435\u0440\u0435\u0437 splice. Dirty Frag \u0443\u0441\u0442\u0440\u043e\u0435\u043d \u0435\u0449\u0451 \u043f\u0440\u044f\u043c\u043e\u043b\u0438\u043d\u0435\u0439\u043d\u0435\u0435: in-place crypto\u00a0\u043f\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044e\u00a0\u043f\u0438\u0448\u0435\u0442 \u0432 dst, \u0430 dst \u2013 \u044d\u0442\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 page cache, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0443 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u0433\u043e read-only \u0434\u043e\u0441\u0442\u0443\u043f.\u041d\u0435 \u043d\u0443\u0436\u0435\u043d timing window.\u00a0\u041c\u0435\u0436\u0434\u0443 splice \u0438 crypto-STORE \u043d\u0435\u0442 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u0430\u0434\u043e \u0443\u0441\u043f\u0435\u0442\u044c.\u041d\u0435 \u043d\u0443\u0436\u0435\u043d race.\u00a0\u041b\u043e\u0433\u0438\u043a\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u0430\u044f: \u043f\u043e\u0434\u0441\u0430\u0434\u0438\u043b\u0438 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u2013 \u043e\u043d\u0430 \u043f\u0440\u043e\u0448\u043b\u0430 \u0434\u043e sink \u2013 STORE \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d.\u042f\u0434\u0440\u043e \u043d\u0435 \u043f\u0430\u043d\u0438\u043a\u0443\u0435\u0442 \u043f\u0440\u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u0435.\u00a0AEAD\/HMAC \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0443, skb \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u0440\u043e\u043f\u0430\u0435\u0442\u0441\u044f, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 BUG\/oops.\u0412\u044b\u0441\u043e\u043a\u0438\u0439 success rate.\u00a0\u041d\u0430 \u0442\u0435\u0441\u0442\u043e\u0432\u044b\u0445 \u0441\u0442\u0435\u043d\u0434\u0430\u0445 \u2013 \u0444\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 100%.\u0427\u0435\u043c \u044d\u0442\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 Dirty Pipe \u0438 Copy Fail\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440Dirty Pipe (CVE-2022-0847)Copy Fail (CVE-2026-31431)Dirty Frag (CVE pending)\u041e\u0431\u044a\u0435\u043a\u0442 \u0437\u0430\u043f\u0438\u0441\u0438struct pipe_bufferTX SGL \u043f\u043e\u0432\u0435\u0440\u0445 page cachefrag\u00a0\u043f\u043e\u0432\u0435\u0440\u0445 page cacheSinkcopy_page_to_iter_pipescatterwalk_map_and_copy\u00a0\u0432\u00a0authencesnauthencesn\u00a0\u0432\u00a0esp_input\u00a0+\u00a0pcbc(fcrypt)\u00a0\u0432\u00a0rxkad_verify_packet_1Triggering subsystempipe + spliceAF_ALG (algif_aead)xfrm\/IPsec ESP + RxRPCRace condition\u041d\u0435\u0442\u041d\u0435\u0442\u041d\u0435\u0442\u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u0430\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c4 \u0431\u0430\u0439\u0442\u04304 \u0431\u0430\u0439\u0442\u0430 (ESP) \/ 8 \u0431\u0430\u0439\u0442 (RxRPC)\u041f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0438\u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 user\u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 user (\u0435\u0441\u043b\u0438 algif_aead \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d)CAP_NET_ADMIN\u00a0\u0447\u0435\u0440\u0435\u0437 user namespace (ESP)\u00a0\u0438\u043b\u0438\u00a0\u043d\u0438\u0447\u0435\u0433\u043e (RxRPC)Workaround\u043f\u0430\u0442\u0447 \u044f\u0434\u0440\u0430blacklist\u00a0algif_aeadblacklist\u00a0esp4,\u00a0esp6,\u00a0rxrpcMitigation Copy Fail \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442?\u2013\u2013\u041d\u0435\u0442, \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044fAffected \u044f\u0434\u0440\u04305.8+\u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435ESP: \u0441 4.10 (2017), RxRPC: \u0441 6.5 (2023)CVE\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e\u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u043e\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u2013\u00a0\u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 workaround Copy Fail (algif_aead\u00a0blacklist) \u043d\u0435 \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043e\u0442 Dirty Frag. \u042d\u0442\u043e \u0443\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 sink, \u0447\u0435\u0440\u0435\u0437 \u0434\u0440\u0443\u0433\u043e\u0439 crypto-\u043f\u0443\u0442\u044c.\u041a\u043e\u0433\u043e \u044d\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f\u041a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u043d\u0435 \u0432\u0441\u0435 \u0441\u0440\u0435\u0434\u044b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0443\u044f\u0437\u0432\u0438\u043c\u044b.\u0412\u044b\u0441\u043e\u043a\u0438\u0439 \u0440\u0438\u0441\u043aShared hosting \u0438 VPS-\u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b.\u00a0\u041b\u044e\u0431\u043e\u0439 \u043a\u043b\u0438\u0435\u043d\u0442 \u0441 \u043e\u0431\u044b\u0447\u043d\u043e\u0439 shell-\u0441\u0435\u0441\u0441\u0438\u0435\u0439 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0434\u043e root \u043d\u0430 \u0445\u043e\u0441\u0442-\u043d\u043e\u0434\u0435, \u0435\u0441\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u0430 cgroup-\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0431\u0435\u0437 user namespace lockdown. \u0414\u043b\u044f CloudLinux \u0443\u0436\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439\u00a0\u043f\u043e\u0441\u0442\u00a0\u0441 \u0433\u043e\u0442\u043e\u0432\u044b\u043c livepatch.Kubernetes worker nodes.\u00a0\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441\u00a0hostPID: false\u00a0\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u043c seccomp \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e \u0434\u0430\u0451\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u00a0add_key(),\u00a0socket(AF_RXRPC),\u00a0splice(). RxRPC-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u00ab\u0438\u0437 \u043a\u043e\u0440\u043e\u0431\u043a\u0438\u00bb \u043d\u0430 Ubuntu-\u043d\u043e\u0434\u0430\u0445, \u0433\u0434\u0435 \u043c\u043e\u0434\u0443\u043b\u044c \u0433\u0440\u0443\u0437\u0438\u0442\u0441\u044f \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. ESP-\u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u2013 \u043d\u0430 \u043d\u043e\u0434\u0430\u0445 \u0441\u00a0kernel.unprivileged_userns_clone=1.CI\/CD runners\u00a0(GitLab Runner, GitHub Actions self-hosted, Jenkins agents). \u041b\u044e\u0431\u043e\u0439 PR \u043e\u0442 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u044c\u044e\u0442\u043e\u0440\u0430 \u0432 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u043e\u043c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438 = \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0432 runner-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438. \u0415\u0441\u043b\u0438 runner \u043e\u0431\u0449\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\u0438 \u2013 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 = \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0435\u0442\u0430\u0446\u0438\u044f \u0432\u0441\u0435\u0445.Multi-tenant sandbox-\u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f: code playgrounds, ML-\u0442\u0440\u0435\u043d\u0430\u0436\u0451\u0440\u044b, \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0435\u0439 \u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f.\u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u0440\u0438\u0441\u043a\u0421\u0435\u0440\u0432\u0435\u0440\u044b \u0441 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u043c\u0438 \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438.\u00a0\u041a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0435 jump-hosts, dev-\u0431\u043e\u043a\u0441\u044b, build-\u0441\u0435\u0440\u0432\u0435\u0440\u044b. \u0415\u0441\u043b\u0438 \u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0435\u0441\u0442\u044c SSH \u2013 \u0443 \u043d\u0435\u0433\u043e \u0435\u0441\u0442\u044c root.\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u044b\u0435 \u0441\u0440\u0435\u0434\u044b \u0431\u0435\u0437 user namespace lockdown.\u00a0Docker \u0431\u0435\u0437\u00a0userns-remap, podman \u0432 rootfull-\u0440\u0435\u0436\u0438\u043c\u0435 \u043d\u0430 Ubuntu.\u041f\u043e\u043d\u0438\u0436\u0435\u043d\u043d\u044b\u0439 \u0440\u0438\u0441\u043a\u0414\u0435\u0441\u043a\u0442\u043e\u043f\u044b \u0441 \u043e\u0434\u043d\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c.\u00a0\u0411\u0435\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043f\u043e\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0433\u043e \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442 \u043d\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c.Single-purpose \u0441\u0435\u0440\u0432\u0435\u0440\u044b \u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0430\u043f\u043b\u0430\u0439\u0430\u043d\u0441\u044b.\u00a0\u041e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043d\u0438\u0436\u0435.\u041d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 Ideco NGFW\u0423\u044f\u0437\u0432\u0438\u043c \u043b\u0438 Ideco NGFW?\u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044f\u0434\u0440\u043e Linux, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 Ideco NGFW, \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043a\u043b\u0430\u0441\u0441\u0443 \u0437\u0430\u0442\u0440\u043e\u043d\u0443\u0442\u044b\u0445. \u041d\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 attack surface \u0434\u043b\u044f Dirty Frag \u043d\u0430 NGFW \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0439:\u041d\u0430 Ideco NGFW \u043d\u0435\u0442 shell-\u0441\u0435\u0441\u0441\u0438\u0439 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u2013 \u0447\u0435\u0440\u0435\u0437 web-\u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 SSH \u043f\u043e\u0434 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u0430\u043c\u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u043e\u0432, \u0431\u0435\u0437\u00a0splice\/add_key-\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432.\u041d\u0435\u0442 CI\/CD-\u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a, \u043d\u0435\u0442 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043d\u0435\u0442 multi-tenant \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u0430\u043f\u043b\u0430\u0439\u0430\u043d\u0441\u0430.Trigger-\u0432\u0435\u043a\u0442\u043e\u0440 Dirty Frag \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0433\u043e \u0431\u0438\u043d\u0430\u0440\u044f\u00a0\u043f\u043e\u0434 \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c. \u041d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c NGFW \u0442\u0430\u043a\u043e\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0443 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u0433\u043e&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-479012","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/479012","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=479012"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/479012\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=479012"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=479012"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=479012"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}