{"id":315784,"date":"2020-12-30T03:00:44","date_gmt":"2020-12-30T03:00:44","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=315784"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=315784","title":{"rendered":"\u041a\u0430\u0440\u0430\u043d\u0442\u0438\u043d \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u044f\u0434\u0440\u0430 Linux"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p>2020 \u0433\u043e\u0434. \u041f\u043e\u0432\u0441\u044e\u0434\u0443 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d. \u0418 \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0442\u043e\u0436\u0435 \u043f\u0440\u043e \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d, \u043d\u043e \u043e\u043d \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0440\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e\u0431 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445 \u0441 <strong>\u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u043e\u043c \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u044f\u0434\u0440\u0430 Linux<\/strong>. \u042d\u0442\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f (use-after-free \u0438\u043b\u0438 UAF) \u0432 \u044f\u0434\u0440\u0435 Linux. \u042f \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0432\u0435\u0434\u0443 \u0438\u0442\u043e\u0433\u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0435\u0439 \u043f\u0430\u0442\u0447-\u0441\u0435\u0440\u0438\u0438 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438 \u044f\u0434\u0440\u0430 (Linux Kernel Mailing List, LKML).<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/229\/2d8\/515\/2292d8515458ec8f3f1d9553b12513af.png\" alt=\"image\"><\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<h1 id=\"ispolzovanie-pamyati-posle-osvobozhdeniya-v-yadre-linux\">\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0432 \u044f\u0434\u0440\u0435 Linux<\/h1>\n<p>  <\/p>\n<p>UAF \u0432 \u044f\u0434\u0440\u0435 Linux \u2014 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u0442\u0438\u043f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439. \u0415\u0441\u0442\u044c \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u043e\u0432 \u044f\u0434\u0435\u0440\u043d\u044b\u0445 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u043e\u0432 \u0434\u043b\u044f UAF:<\/p>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/seclists.org\/oss-sec\/2016\/q4\/607\">CVE-2016-8655<\/a>,<\/li>\n<li><a href=\"https:\/\/www.openwall.com\/lists\/oss-security\/2017\/02\/26\/2\">CVE-2017-6074<\/a>,<\/li>\n<li><a href=\"https:\/\/a13xp0p0v.github.io\/2017\/03\/24\/CVE-2017-2636.html\">CVE-2017-2636<\/a>,<\/li>\n<li><a href=\"https:\/\/ssd-disclosure.com\/ssd-advisory-linux-kernel-af_packet-use-after-free\/\">CVE-2017-15649<\/a>,<\/li>\n<li><a href=\"https:\/\/a13xp0p0v.github.io\/2020\/02\/15\/CVE-2019-18683.html\">CVE-2019-18683<\/a>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 UAF \u043e\u0431\u044b\u0447\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 <strong>heap spraying<\/strong>. \u0426\u0435\u043b\u044c \u0434\u0430\u043d\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u0438 \u2014 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0435 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u043c, \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0430\u043a\u0436\u0435 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u00ab\u043a\u0443\u0447\u0435\u0439\u00bb. \u0422\u0435\u0445\u043d\u0438\u043a\u0430 heap spraying \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 UAF \u0432 \u044f\u0434\u0440\u0435 Linux \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0442\u043e\u043c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 <code>kmalloc()<\/code> slab-\u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441 \u0443\u0447\u0430\u0441\u0442\u043a\u0430 \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/dea\/ae6\/c4e\/deaae6c4e00c60be62995d0ec73daf7c.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u044f\u0434\u0435\u0440\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0442\u0430\u043a\u043e\u0433\u043e \u0436\u0435 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0441 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u044b\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b66\/b86\/22f\/b66b8622f448e18069e548fc4d7e1762.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: heap spraying \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0431\u0443\u0444\u0435\u0440\u0430 \u0432 \u043a\u0443\u0447\u0435 \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0438\u043d\u0430\u0447\u0435.<\/p>\n<p>  <\/p>\n<h1 id=\"ideya\">\u0418\u0434\u0435\u044f<\/h1>\n<p>  <\/p>\n<p>\u0412 \u0438\u044e\u043b\u0435 2020 \u0433\u043e\u0434\u0430 \u0443 \u043c\u0435\u043d\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0438\u0434\u0435\u044f, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0442\u0435\u0445\u043d\u0438\u043a\u0435 heap spraying \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 UAF \u0432 \u044f\u0434\u0440\u0435 Linux. \u0412 \u0430\u0432\u0433\u0443\u0441\u0442\u0435 \u044f \u043d\u0430\u0448\u0435\u043b \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u042f \u0432\u044b\u0434\u0435\u043b\u0438\u043b \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d \u0434\u043b\u044f slab-\u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440\u0430 \u0438\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438\u00a0<a href=\"https:\/\/www.kernel.org\/doc\/html\/latest\/dev-tools\/kasan.html\">KASAN<\/a>\u00a0\u0438 \u043d\u0430\u0437\u0432\u0430\u043b \u0435\u0433\u043e <code>SLAB_QUARANTINE<\/code>.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0435 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0438 \u0440\u0430\u0437\u043c\u0435\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u043d\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0433\u0434\u0435 \u043e\u0436\u0438\u0434\u0430\u044e\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u0440\u0435\u0430\u043b\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u044b \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u0430\u043c\u0438 UAF. \u0422\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438\u00a0<code>SLAB_QUARANTINE<\/code> \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440 \u044f\u0434\u0440\u0430 \u0432\u0435\u0434\u0435\u0442 \u0441\u0435\u0431\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/229\/2d8\/515\/2292d8515458ec8f3f1d9553b12513af.png\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>13 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 <a href=\"https:\/\/www.openwall.com\/lists\/kernel-hardening\/2020\/08\/13\/7\">\u044f \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b<\/a> \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u043d\u043d\u0438\u0439 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430 \u0432 LKML \u0438 \u043d\u0430\u0447\u0430\u043b \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430.<\/p>\n<p>  <\/p>\n<h1 id=\"svoystva-bezopasnosti-slab_quarantine\">\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 SLAB_QUARANTINE<\/h1>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u044f\u0434\u0440\u0430 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0434\u0432\u0430 \u0442\u0435\u0441\u0442\u0430\u00a0<code>lkdtm<\/code>\u00a0(<a href=\"https:\/\/www.openwall.com\/lists\/kernel-hardening\/2020\/09\/29\/7\">\u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d\u044b \u0432 \u0441\u0435\u0440\u0438\u0438 \u043f\u0430\u0442\u0447\u0435\u0439<\/a>).<\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u0442\u0435\u0441\u0442 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<code>lkdtm_HEAP_SPRAY<\/code>. \u041e\u043d \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e\u00a0<code>kmem_cache<\/code>, \u0430 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 400 000 \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u0414\u0440\u0443\u0433\u0438\u043c\u0438 \u0441\u043b\u043e\u0432\u0430\u043c\u0438, \u044d\u0442\u043e\u0442 \u0442\u0435\u0441\u0442 \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u0435\u0442 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0442\u0435\u0445\u043d\u0438\u043a\u0443 heap spraying \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 UAF:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">#define SPRAY_LENGTH 400000     ...     addr = kmem_cache_alloc(spray_cache, GFP_KERNEL);     ...     kmem_cache_free(spray_cache, addr);     pr_info(&quot;Allocated and freed spray_cache object %p of size %d\\n&quot;,                     addr, SPRAY_ITEM_SIZE);     ...     pr_info(&quot;Original heap spraying: allocate %d objects of size %d...\\n&quot;,                     SPRAY_LENGTH, SPRAY_ITEM_SIZE);     for (i = 0; i &lt; SPRAY_LENGTH; i++) {         spray_addrs[i] = kmem_cache_alloc(spray_cache, GFP_KERNEL);         ...         if (spray_addrs[i] == addr) {             pr_info(&quot;FAIL: attempt %lu: freed object is reallocated\\n&quot;, i);             break;         }     }      if (i == SPRAY_LENGTH)         pr_info(&quot;OK: original heap spraying hasn't succeeded\\n&quot;);<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u00a0<code>CONFIG_SLAB_QUARANTINE<\/code>, \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0440\u0435\u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442\u0441\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">  # echo HEAP_SPRAY &gt; \/sys\/kernel\/debug\/provoke-crash\/DIRECT    lkdtm: Performing direct entry HEAP_SPRAY    lkdtm: Allocated and freed spray_cache object 000000002b5b3ad4 of size 333    lkdtm: Original heap spraying: allocate 400000 objects of size 333...    lkdtm: FAIL: attempt 0: freed object is reallocated<\/code><\/pre>\n<p>  <\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u00a0<code>CONFIG_SLAB_QUARANTINE<\/code>, 400 000 \u043d\u043e\u0432\u044b\u0445 \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0439 \u043d\u0435 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u044e\u0442 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">  # echo HEAP_SPRAY &gt; \/sys\/kernel\/debug\/provoke-crash\/DIRECT    lkdtm: Performing direct entry HEAP_SPRAY    lkdtm: Allocated and freed spray_cache object 000000009909e777 of size 333    lkdtm: Original heap spraying: allocate 400000 objects of size 333...    lkdtm: OK: original heap spraying hasn't succeeded<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0434\u043b\u044f \u043f\u0440\u043e\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f <strong>\u0438 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u0435, \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438<\/strong>. \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u0432\u044b\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0438\u0437 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430, \u043a\u043e\u0433\u0434\u0430 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u043e\u0432\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b \u0441\u0432\u043e\u0439 \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440. \u0410 \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u0438 \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0432\u0442\u043e\u0440\u043e\u0439 \u0442\u0435\u0441\u0442 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c\u00a0<code>lkdtm_PUSH_THROUGH_QUARANTINE<\/code>. \u041e\u043d \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u0442 \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442 \u043e\u0434\u0438\u043d \u043e\u0431\u044a\u0435\u043a\u0442 \u0438\u0437 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e\u00a0<code>kmem_cache<\/code>\u00a0\u0438 \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 <code>kmem_cache_alloc()+kmem_cache_free()<\/code>\u00a0\u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043a\u044d\u0448\u0430 400\u00a0000 \u0440\u0430\u0437.<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">    addr = kmem_cache_alloc(spray_cache, GFP_KERNEL);     ...     kmem_cache_free(spray_cache, addr);     pr_info(&quot;Allocated and freed spray_cache object %p of size %d\\n&quot;,                     addr, SPRAY_ITEM_SIZE);      pr_info(&quot;Push through quarantine: allocate and free %d objects of size %d...\\n&quot;,                     SPRAY_LENGTH, SPRAY_ITEM_SIZE);     for (i = 0; i &lt; SPRAY_LENGTH; i++) {         push_addr = kmem_cache_alloc(spray_cache, GFP_KERNEL);         ...         kmem_cache_free(spray_cache, push_addr);          if (push_addr == addr) {             pr_info(&quot;Target object is reallocated at attempt %lu\\n&quot;, i);             break;         }     }      if (i == SPRAY_LENGTH) {         pr_info(&quot;Target object is NOT reallocated in %d attempts\\n&quot;,                     SPRAY_LENGTH);     }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0435\u0441\u0442\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0447\u0435\u0440\u0435\u0437 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d \u0438 \u0440\u0435\u0430\u043b\u043b\u043e\u0446\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">  # echo PUSH_THROUGH_QUARANTINE &gt; \/sys\/kernel\/debug\/provoke-crash\/    lkdtm: Performing direct entry PUSH_THROUGH_QUARANTINE    lkdtm: Allocated and freed spray_cache object 000000008fdb15c3 of size 333    lkdtm: Push through quarantine: allocate and free 400000 objects of size 333...    lkdtm: Target object is reallocated at attempt 182994   # echo PUSH_THROUGH_QUARANTINE &gt; \/sys\/kernel\/debug\/provoke-crash\/    lkdtm: Performing direct entry PUSH_THROUGH_QUARANTINE    lkdtm: Allocated and freed spray_cache object 000000004e223cbe of size 333    lkdtm: Push through quarantine: allocate and free 400000 objects of size 333...    lkdtm: Target object is reallocated at attempt 186830   # echo PUSH_THROUGH_QUARANTINE &gt; \/sys\/kernel\/debug\/provoke-crash\/    lkdtm: Performing direct entry PUSH_THROUGH_QUARANTINE    lkdtm: Allocated and freed spray_cache object 000000007663a058 of size 333    lkdtm: Push through quarantine: allocate and free 400000 objects of size 333...    lkdtm: Target object is reallocated at attempt 182010<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0439, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043f\u043e\u0447\u0442\u0438 \u043d\u0435 \u0438\u0437\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u042d\u0442\u043e \u043f\u043b\u043e\u0445\u043e \u0434\u043b\u044f \u0437\u0430\u0449\u0438\u0442\u044b \u0438 \u0445\u043e\u0440\u043e\u0448\u043e \u0434\u043b\u044f \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u0433\u043e, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0431\u0445\u043e\u0434\u0430 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430 \u0437\u0430 \u0441\u0447\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0434\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0441\u043f\u0440\u0435\u044f. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b <a href=\"https:\/\/www.openwall.com\/lists\/kernel-hardening\/2020\/09\/29\/6\"><strong>\u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044e \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430<\/strong><\/a>. \u0412 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u0438 \u044d\u0442\u043e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0445\u0438\u0442\u0440\u043e\u0443\u043c\u043d\u0430\u044f \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u0432\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u043c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u043d\u043e\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u044c\u044e.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0432 \u00ab\u043f\u0430\u0447\u043a\u0430\u0445\u00bb. \u0420\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0442\u0430\u043a: \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0432\u0441\u0435 \u043f\u0430\u0447\u043a\u0438 \u043d\u0430\u043f\u043e\u043b\u043d\u044f\u044e\u0442\u0441\u044f \u044f\u0434\u0435\u0440\u043d\u044b\u043c\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430\u043c\u0438. \u0410 \u043f\u043e\u0442\u043e\u043c, \u043a\u043e\u0433\u0434\u0430 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u043b \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0432\u044b\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u0447\u043a\u0430, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u0432\u0441\u0435\u0445 \u044f\u0434\u0435\u0440\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u043e\u0436\u0435 \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e. \u0422\u0435\u043f\u0435\u0440\u044c \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u043d\u044b\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u0432 \u043d\u0435\u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0443\u0435\u043c\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">   lkdtm: Target object is reallocated at attempt 107884    lkdtm: Target object is reallocated at attempt 265641    lkdtm: Target object is reallocated at attempt 100030    lkdtm: Target object is NOT reallocated in 400000 attempts    lkdtm: Target object is reallocated at attempt 204731    lkdtm: Target object is reallocated at attempt 359333    lkdtm: Target object is reallocated at attempt 289349    lkdtm: Target object is reallocated at attempt 119893    lkdtm: Target object is reallocated at attempt 225202    lkdtm: Target object is reallocated at attempt 87343<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0442\u0430\u043a\u0430\u044f \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u0430\u043c\u0430 \u043f\u043e \u0441\u0435\u0431\u0435 \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0442\u0438\u0442 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044e: \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0432 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0434\u0430\u043d\u043d\u044b\u0435 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u0433\u043e (\u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u0430). \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0442\u043e \u0446\u0435\u043b\u0435\u0432\u043e\u0439 \u043e\u0431\u044a\u0435\u043a\u0442 \u044f\u0434\u0440\u0430, \u0440\u0435\u0430\u043b\u043b\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0438 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0440\u0435\u0435\u043c, \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0435\u0433\u043e \u0434\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0440\u0435\u0430\u043b\u043b\u043e\u043a\u0430\u0446\u0438\u0438 (\u043e\u0447\u0435\u043d\u044c \u043f\u043b\u043e\u0445\u043e).<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0430\u0436\u043d\u043e <strong>\u043e\u0447\u0438\u0449\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u044f\u0434\u0435\u0440\u043d\u043e\u0439 \u043a\u0443\u0447\u0438 \u0434\u043e \u043f\u043e\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438\u0445 \u0432 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d<\/strong>. \u0411\u043e\u043b\u0435\u0435 \u0442\u043e\u0433\u043e, \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0438\u0445 \u043d\u0443\u043b\u044f\u043c\u0438 \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f: \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u0437\u044b\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0443\u043b\u0435\u0432\u043e\u0433\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f. \u0422\u0430\u043a\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0432 \u044f\u0434\u0440\u0435 \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f\u00a0<code>init_on_free<\/code>.\u00a0<a href=\"https:\/\/www.openwall.com\/lists\/kernel-hardening\/2020\/09\/29\/5\">\u042f \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043b \u0435\u0433\u043e<\/a> \u0441 <code>CONFIG_SLAB_QUARANTINE<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0445\u043e\u0434\u0435 \u044d\u0442\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b \u044f \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b \u043e\u0448\u0438\u0431\u043a\u0443 \u0432 \u044f\u0434\u0440\u0435: \u0432\u00a0<code>CONFIG_SLAB<\/code> \u0444\u0443\u043d\u043a\u0446\u0438\u044f\u00a0<code>init_on_free<\/code>\u00a0\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u043e\u0437\u0434\u043d\u043e, \u0438 \u044f\u0434\u0435\u0440\u043d\u044b\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0430 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d \u0431\u0435\u0437 \u043e\u0447\u0438\u0441\u0442\u043a\u0438. \u042f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0432 <a href=\"https:\/\/www.openwall.com\/lists\/kernel-hardening\/2020\/09\/29\/4\">\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043f\u0430\u0442\u0447\u0435<\/a> (\u043f\u0440\u0438\u043d\u044f\u0442 \u0432 mainline).<\/p>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 <code>CONFIG_SLAB_QUARANTINE<\/code> \u0441 \u0440\u0430\u043d\u0434\u043e\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439, \u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b <a href=\"https:\/\/www.openwall.com\/lists\/kernel-hardening\/2020\/09\/29\/8\">\u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0430\u0442\u0447<\/a>, \u0441 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u043c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u043e\u043c (\u043f\u0430\u0442\u0447 \u043d\u0435 \u0434\u043b\u044f \u043f\u0440\u0438\u043d\u044f\u0442\u0438\u044f \u0432 mainline). \u041f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">quarantine: PUT 508992 to tail batch 123, whole sz 65118872, batch sz 508854 quarantine: whole sz exceed max by 494552, REDUCE head batch 0 by 415392, leave 396304 quarantine: data level in batches:   0 - 77%   1 - 108%   2 - 83%   3 - 21%   ...   125 - 75%   126 - 12%   127 - 108% quarantine: whole sz exceed max by 79160, REDUCE head batch 12 by 14160, leave 17608 quarantine: whole sz exceed max by 65000, REDUCE head batch 75 by 218328, leave 195232 quarantine: PUT 508992 to tail batch 124, whole sz 64979984, batch sz 508854 ...<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u00a0<code>PUT<\/code> \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0445\u043e\u0434\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u044f\u0434\u0435\u0440\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438. \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u00a0<code>REDUCE<\/code>\u00a0\u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0445\u043e\u0434\u0435 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u044f\u0434\u0435\u0440\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0435\u0432\u044b\u0448\u0435\u043d \u0440\u0430\u0437\u043c\u0435\u0440 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430. \u041e\u0431\u044a\u0435\u043a\u0442\u044b \u044f\u0434\u0440\u0430, \u0432\u044b\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u0438\u0437 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440\u0430. \u0422\u0430\u043a\u0436\u0435 \u0432 \u044d\u0442\u043e\u043c \u0432\u044b\u0432\u043e\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u0438 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u0435\u043d\u0438\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 <code>REDUCE<\/code> \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d \u043e\u0442\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0447\u0430\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438\u0437 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u043f\u0430\u0447\u043a\u0438.<\/p>\n<p>  <\/p>\n<h1 id=\"a-chto-s-proizvoditelnostyu\">\u0410 \u0447\u0442\u043e \u0441 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e?<\/h1>\n<p>  <\/p>\n<p>\u042f \u043f\u0440\u043e\u0432\u0435\u043b <a href=\"https:\/\/www.openwall.com\/lists\/kernel-hardening\/2020\/10\/01\/7\">\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0441\u0442\u043e\u0432<\/a> \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438 \u0438 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>iperf<\/code>: <br \/>  \u0441\u0435\u0440\u0432\u0435\u0440: <code>iperf -s -f K<\/code> <br \/>  \u043a\u043b\u0438\u0435\u043d\u0442: <code>iperf -c 127.0.0.1 -t 60 -f K<\/code><\/li>\n<li>\u041d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 \u044f\u0434\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0437\u0430\u0434\u0430\u0447: <br \/>  <code>hackbench -s 4000 -l 500 -g 15 -f 25 -P<\/code><\/li>\n<li>\u0421\u0431\u043e\u0440\u043a\u0430 \u044f\u0434\u0440\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e: <br \/>  <code>time make -j2<\/code><\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u042f \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0435 \u044f\u0434\u0440\u043e Linux \u0432 \u0442\u0440\u0435\u0445 \u0440\u0435\u0436\u0438\u043c\u0430\u0445:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>init_on_free=off<\/code><\/li>\n<li><code>init_on_free=on<\/code> (\u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0438\u0437 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430)<\/li>\n<li><code>CONFIG_SLAB_QUARANTINE=y<\/code> (\u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0432 \u0441\u0435\u0431\u044f <code>init_on_free<\/code>)<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0422\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0442\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e\u00a0<code>iperf<\/code>\u00a0\u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e, \u0447\u0442\u043e:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>init_on_free=on<\/code> \u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u00a0<strong>28%<\/strong> \u043d\u0438\u0436\u0435, \u0447\u0435\u043c <code>init_on_free=off<\/code>.<\/li>\n<li><code>CONFIG_SLAB_QUARANTINE<\/code> \u0434\u0430\u0435\u0442 \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0443\u044e \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u00a0<strong>2%<\/strong>\u00a0\u043d\u0438\u0436\u0435, \u0447\u0435\u043c <code>init_on_free=on<\/code>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041d\u0430\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0439 \u0442\u0435\u0441\u0442 \u044f\u0434\u0435\u0440\u043d\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0437\u0430\u0434\u0430\u0447:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>hackbench<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430\u00a0<strong>5,3%<\/strong>\u00a0\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0441 <code>init_on_free=on<\/code> \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 <code>init_on_free=off<\/code>.<\/li>\n<li><code>hackbench<\/code> \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 <strong>91,7%<\/strong>\u00a0\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435 \u0441 <code>CONFIG_SLAB_QUARANTINE<\/code> \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 <code>init_on_free=on<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 QEMU\/KVM \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u043e \u0441\u043d\u0438\u0436\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 <strong>44%<\/strong>, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043e\u0431\u043e\u0440\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0438 (Intel Core i7-6500U CPU).<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0421\u0431\u043e\u0440\u043a\u0430 \u044f\u0434\u0440\u0430 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u041f\u0440\u0438 <code>init_on_free=on<\/code> \u0441\u0431\u043e\u0440\u043a\u0430 \u044f\u0434\u0440\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u043d\u0430 <strong>1,7%<\/strong> \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u0441 <code>init_on_free=off<\/code>.<\/li>\n<li>\u041f\u0440\u0438 <code>CONFIG_SLAB_QUARANTINE<\/code>\u0441\u0431\u043e\u0440\u043a\u0430 \u044f\u0434\u0440\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u043d\u0430 <strong>1,1%<\/strong> \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u0435\u0435, \u0447\u0435\u043c \u0441 <code>init_on_free=on<\/code>.<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u0438\u0434\u0435\u0442\u044c, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0442\u0435\u0441\u0442\u043e\u0432 \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u0430\u0440\u044c\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0438 \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u0442\u0438\u043f\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435: \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043f\u0440\u043e\u0442\u043e\u0442\u0438\u043f\u0430 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430 \u041d\u0415 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438. \u041c\u043e\u0435\u0439 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0431\u044b\u043b\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430. \u042f \u0440\u0435\u0448\u0438\u043b, \u0447\u0442\u043e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043b\u0443\u0447\u0448\u0435 \u0437\u0430\u043d\u044f\u0442\u044c\u0441\u044f \u043f\u043e\u0437\u0436\u0435, \u0435\u0441\u043b\u0438 \u0441\u0442\u0430\u043d\u0435\u0442 \u044f\u0441\u043d\u043e, \u0447\u0442\u043e \u0438\u0434\u0435\u044f \u0443\u0434\u0430\u0447\u043d\u0430\u044f.<\/p>\n<p>  <\/p>\n<h1 id=\"kontrataka\">\u041a\u043e\u043d\u0442\u0440\u0430\u0442\u0430\u043a\u0430<\/h1>\n<p>  <\/p>\n<p>\u0412 LKML \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 <code>CONFIG_SLAB_QUARANTINE<\/code>. \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c \u044f\u0434\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0434\u0435\u043b\u0438\u043b\u0438 \u0432\u0440\u0435\u043c\u044f \u0438 \u0434\u0430\u043b\u0438 \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u0440\u0430\u0442\u043d\u0443\u044e \u0441\u0432\u044f\u0437\u044c \u043d\u0430 \u043c\u043e\u044e \u0441\u0435\u0440\u0438\u044e \u043f\u0430\u0442\u0447\u0435\u0439. \u042d\u0442\u043e \u041a\u0435\u0439\u0441 \u041a\u0443\u043a (Kees Cook), \u0410\u043d\u0434\u0440\u0435\u0439 \u041a\u043e\u043d\u043e\u0432\u0430\u043b\u043e\u0432, \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440 \u041f\u043e\u0442\u0430\u043f\u0435\u043d\u043a\u043e, \u041c\u044d\u0442\u0442\u044c\u044e \u0423\u0438\u043b\u043a\u043e\u043a\u0441 (Matthew Wilcox), \u0414\u044d\u043d\u0438\u0435\u043b \u041c\u0430\u0439\u043a\u0435\u0439 (Daniel Micay), \u041a\u0440\u0438\u0441\u0442\u043e\u0444\u0435\u0440 \u041b\u0430\u043c\u0435\u0442\u0435\u0440 (Christopher Lameter), \u041f\u0430\u0432\u0435\u043b \u041c\u0430\u0447\u0435\u043a (Pavel Machek) \u0438 \u042d\u0440\u0438\u043a \u0411\u0438\u0434\u0435\u0440\u043c\u0430\u043d (Eric W. Biederman).<\/p>\n<p>  <\/p>\n<p>\u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u044f \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u0435\u043d \u042f\u043d\u0443 \u0425\u043e\u0440\u043d\u0443 (Jann Horn) \u0438\u0437 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <a href=\"https:\/\/googleprojectzero.blogspot.com\/\">Google Project Zero<\/a>. \u041e\u043d \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043b \u043a\u043e\u043d\u0442\u0440\u0430\u0442\u0430\u043a\u0443, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0443\u0434\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043e\u0439\u0442\u0438 <code>CONFIG_SLAB_QUARANTINE<\/code> \u0438 \u043f\u0440\u043e\u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c UAF \u0432 \u044f\u0434\u0440\u0435 Linux.<\/p>\n<p>  <\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0447\u0442\u043e \u043d\u0430\u0448\u0430 \u0434\u0438\u0441\u043a\u0443\u0441\u0441\u0438\u044f \u0441 \u042f\u043d\u043e\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0430\u0441\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u043e \u0441\u0442\u0440\u0438\u043c\u043e\u043c \u041a\u0435\u0439\u0441\u0430 \u0432 Twitch, \u0432 \u0445\u043e\u0434\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043e\u043d \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043c\u043e\u0438 \u043f\u0430\u0442\u0447\u0438 (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/www.youtube.com\/watch?v=1sBMwnKNSw0\">\u0437\u0430\u043f\u0438\u0441\u044c<\/a>).<\/p>\n<p>  <\/p>\n<p>\u0426\u0438\u0442\u0430\u0442\u0430 \u0438\u0437 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0438 \u0441 \u0438\u0434\u0435\u0435\u0439 \u043a\u043e\u043d\u0442\u0440\u0430\u0442\u0430\u043a\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">On 06.10.2020 21:37, Jann Horn wrote: &gt; On Tue, Oct 6, 2020 at 7:56 PM Alexander Popov wrote: &gt;&gt; So I think the control over the time of the use-after-free access doesn't help &gt;&gt; attackers, if they don't have an &quot;infinite spray&quot; -- unlimited ability to store &gt;&gt; controlled data in the kernelspace objects of the needed size without freeing them.    [...] &gt;&gt; Would you agree? &gt; &gt; But you have a single quarantine (per CPU) for all objects, right? So &gt; for a UAF on slab A, the attacker can just spam allocations and &gt; deallocations on slab B to almost deterministically flush everything &gt; in slab A back to the SLUB freelists?  Aaaahh! Nice shot Jann, I see.  Another slab cache can be used to flush the randomized quarantine, so eventually the vulnerable object returns into the allocator freelist in its cache, and original heap spraying can be used again.  For now I think the idea of a global quarantine for all slab objects is dead.<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u0440\u0443\u0433\u0438\u043c slab-\u043a\u044d\u0448\u0435\u043c \u0432 \u044f\u0434\u0435\u0440\u043d\u043e\u043c \u0430\u043b\u043b\u043e\u043a\u0430\u0442\u043e\u0440\u0435, \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0438 \u043e\u0441\u0432\u043e\u0431\u043e\u0434\u0438\u0442\u044c \u0432 \u043d\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0432\u044b\u0442\u0435\u0441\u043d\u0435\u043d\u0438\u044e \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438\u0437 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0430\u0442\u0430\u043a\u0443\u044e\u0449\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u0438\u043a\u043e\u0439 heap spraying \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 UAF.<\/p>\n<p>  <\/p>\n<p>\u042f \u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u043b\u0441\u044f \u044d\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u043e\u0439 \u0432 \u0447\u0430\u0442\u0435 \u0441\u0442\u0440\u0438\u043c\u0430 \u041a\u0435\u0439\u0441\u0430 \u0432 Twitch. \u041e\u043d \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043c\u043e\u0439 \u0442\u0435\u0441\u0442 <code>PUSH_THROUGH_QUARANTINE<\/code> \u043f\u043e \u0438\u0434\u0435\u0435 \u042f\u043d\u0430 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043b \u0430\u0442\u0430\u043a\u0443. \u0411\u0430\u0431\u0430\u0445!<\/p>\n<p>  <\/p>\n<p>\u041e\u0447\u0435\u043d\u044c \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c <a href=\"https:\/\/lore.kernel.org\/kernel-hardening\/20200929183513.380760-1-alex.popov@linux.com\/T\/#u\">\u044d\u0442\u0443 \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u043a\u0443 \u0432 LKML<\/a> \u0446\u0435\u043b\u0438\u043a\u043e\u043c. \u0422\u0430\u043c \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u043d\u043e\u0432\u044b\u0435 \u0438\u0434\u0435\u0438 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 UAF \u0432 \u044f\u0434\u0440\u0435.<\/p>\n<p>  <\/p>\n<h1 id=\"zaklyuchenie\">\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h1>\n<p>  <\/p>\n<p>\u042f \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u0430 \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u044f\u0434\u0440\u0430 Linux, \u043f\u0440\u043e\u0432\u0435\u043b \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u044b, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0435 \u0435\u0433\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043d\u0430 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u044e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0435\u0439 use-after-free. \u041f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u041d\u0430\u0434\u0435\u0436\u043d\u043e\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e \u0437\u0430\u0449\u0438\u0442\u044b, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043d\u043e\u0435 \u0432 mainline, \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c, \u043d\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0438 \u0438\u0434\u0435\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u0440\u0430\u0431\u043e\u0442\u0430\u0445 \u043f\u043e \u0437\u0430\u0449\u0438\u0442\u0435 \u044f\u0434\u0440\u0430 Linux.<\/p>\n<p>  <\/p>\n<p>\u0410 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044c\u0442\u0435 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u043c \u0441\u0442\u0438\u0445\u043e\u0442\u0432\u043e\u0440\u0435\u043d\u0438\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u0440\u0438\u0448\u043b\u043e \u043c\u043d\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0435\u0440\u0435\u0434 \u0441\u043d\u043e\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">  Quarantine patch version three   Won't appear. No need.   Let's exploit use-after-free   Like we always did ;)      -- a13xp0p0v<\/code><\/pre>\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\/company\/pt\/blog\/535620\/\"> https:\/\/habr.com\/ru\/company\/pt\/blog\/535620\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p>2020 \u0433\u043e\u0434. \u041f\u043e\u0432\u0441\u044e\u0434\u0443 \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d. \u0418 \u044d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u0442\u043e\u0436\u0435 \u043f\u0440\u043e \u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d, \u043d\u043e \u043e\u043d \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0440\u043e\u0434\u0430.<\/p>\n<p>  <\/p>\n<p>\u042f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043e\u0431 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445 \u0441 <strong>\u043a\u0430\u0440\u0430\u043d\u0442\u0438\u043d\u043e\u043c \u0434\u043b\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u044f\u0434\u0440\u0430 Linux<\/strong>. \u042d\u0442\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044e \u043f\u0430\u043c\u044f\u0442\u0438 \u043f\u043e\u0441\u043b\u0435 \u043e\u0441\u0432\u043e\u0431\u043e\u0436\u0434\u0435\u043d\u0438\u044f (use-after-free \u0438\u043b\u0438 UAF) \u0432 \u044f\u0434\u0440\u0435 Linux. \u042f \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0434\u0432\u0435\u0434\u0443 \u0438\u0442\u043e\u0433\u0438 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u043c\u043e\u0435\u0439 \u043f\u0430\u0442\u0447-\u0441\u0435\u0440\u0438\u0438 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0438 \u044f\u0434\u0440\u0430 (Linux Kernel Mailing List, LKML).<\/p>\n<p>  <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/229\/2d8\/515\/2292d8515458ec8f3f1d9553b12513af.png\" alt=\"image\"><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-315784","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/315784","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=315784"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/315784\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=315784"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=315784"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=315784"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}