Aikido

Dirty Frag (CVE-2026-43284): o bug do kernel Linux que transforma acesso de leitura em root

Escrito por
Nicholas Thomson

Um ficheiro de leitura exclusiva deve permanecer de leitura exclusiva. O Dirty Frag (CVE-2026-43284, CVE-2026-43500 e CVE-2026-46300) faz com que o kernel Linux edite a respetiva cópia em cache de qualquer forma.

Este bug permite que um programa executado quase sem privilégios escreva em ficheiros aos quais apenas deveria ter acesso de leitura, alterando a cópia que o kernel mantém em memória. A partir daí, pode reescrever algo em que o sistema confia e conceder a si próprio acesso root. Em ambientes de container, o mesmo truque que acede ao kernel do host pode aceder ao kernel do nó partilhado por todas as cargas de trabalho.

O padrão vulnerável esteve no código de rede do kernel durante anos, razão pela qual afeta a maioria das versões de kernel suportadas e quase todas as principais distribuições. O Linux corrigiu a falha e todas as distribuições aplicaram o backport, pelo que a correção terá um número de versão diferente em cada uma delas.

Visão geral do Dirty Frag

A Red Hat agrupa três CVEs sob o Dirty Frag. Encontram-se em diferentes áreas do código de rede do kernel, sendo que uma delas é uma variante posterior que a primeira ronda de correções não detetou. Eis como se comparam.

O subsistema indica se isto é relevante para o seu caso. Se não executar VPNs IPsec ou AFS, serve como um sinal rápido para avaliar o nível de importância. O módulo é o que irá verificar para (lsmod | grep -E 'esp4|esp6|rxrpc) para ver o que está carregado.

CVE Caminho do kernel (módulo) Pontuação CVSS Condição prática Impacto
CVE-2026-43284 IPsec/XFRM ESP (esp4 / esp6) 8.8 (Alto) Kernel vulnerável; o caminho de ataque público depende habitualmente da criação de namespaces de utilizador ou de rede. Corrupção de cache de páginas seguida de escalação de root local.
CVE-2026-43500 RxRPC / AFS (rxrpc) 7.8 (Elevado) O módulo rxrpc deve estar disponível e acessível. A exposição da distribuição varia. Corrupção de cache de páginas seguida de escalação de root local.
CVE-2026-46300 (Fragnesia) XFRM ESP-in-TCP (esp4, esp6) 7.8 (Elevado) Uma variante de acompanhamento separada que exigia uma correção adicional no kernel. Escritas arbitrárias na cache de páginas que podem alterar binários privilegiados e conceder acesso root.

O Linux mantém dados de ficheiros acedidos recentemente na memória para que não tenha de ler do disco todas as vezes. Essa cópia em memória chama-se page cache. Certas funções do kernel como splice() passam esses dados em cache para o código de rede sem os copiar, fornecendo em vez disso um ponteiro para o local onde os dados já residem. Isso poupa esforço, desde que cada passo subsequente saiba que a memória é partilhada e não escreva nela.

O erro manifestou-se em dois cantos diferentes do código de rede do kernel. Um foi o ESP, que lida com tráfego VPN encriptado. O outro foi o RxRPC, um protocolo mais antigo utilizado principalmente pelo sistema de ficheiros AFS. Nenhum dos caminhos, nem o do ESP nem o do RxRPC, verifica se a memória é partilhada antes de escrever nela.

Isto permitia a um atacante pegar num ficheiro de leitura única que lhe pudesse conceder privilégios se fosse adulterado, algo como /usr/bin/su, e injetar o seu conteúdo no caminho de rede para que a desencriptação vulnerável acabasse por escrever na memória desse ficheiro. A escrita termina na page cache, que é a cópia do ficheiro que o sistema serve a qualquer processo que o leia. O ficheiro no disco nunca muda, mas a versão em memória passa a refletir o que o atacante lá colocou. Executar o su lê a cópia adulterada e concede ao atacante acesso root, mesmo que este apenas tivesse permissão para ler esse ficheiro.

Fragnesia, rastreado como CVE-2026-46300, é a variante mais recente. A correção para o Dirty Frag fez com que o kernel passasse a depender de um marcador que diz "este fragmento é partilhado, faça uma cópia segura antes de lhe tocar". Mas um erro antigo de 2013 no código que junta fragmentos de pacotes remove discretamente esse marcador. Permaneceu inofensivo durante treze anos porque nada dependia dele. Infelizmente, a correção do Dirty Frag dependia dele, o que transformou um erro latente num novo caminho para obter acesso root. 

Porque é que o Dirty Frag é importante para os Container?

Os Container partilham todos um único kernel com o anfitrião (host), pelo que um container comprometido pode aceder ao código vulnerável do kernel se as suas permissões o permitirem (definições de syscall / namespace / política de segurança). Os investigadores já publicaram exploits de prova de conceito funcionais para o Kubernetes, e o Ubuntu detalha o risco de um Escape de container. Se o container conseguir aceder ao kernel, o risco traduz-se em acesso root em todo o nó.

Pode desativar partes do ataque executando cargas de trabalho como não-root (non-root), ativando o perfil seccomp RuntimeDefault, aplicando políticas de pod restritas e limitando os namespaces de utilizadores não privilegiados. No entanto, nada disso corrige a falha real. Apenas a atualização do kernel fornecida pelo fabricante o faz.

Como pode verificar se um anfitrião (host) está exposto?

Comece pelo anfitrião que está efetivamente em execução, e não pelo Dockerfile. Três comandos ajudam.

Execute uname -r para descobrir qual a versão do kernel em execução e, em seguida, compará-la com a versão corrigida no aviso da sua distribuição. Não a compare com o número da árvore principal (upstream). O padrão vulnerável remonta a kernels de cerca de 2017, e as distribuições empresariais e LTS como o RHEL, Ubuntu e Debian aplicam correções retroativas (backport) na versão mais antiga do kernel que já utiliza; logo, um kernel corrigido ainda pode reportar uma versão de anos anteriores. Um anfitrião RHEL 8 totalmente corrigido continuará a indicar 4.18, e esse 4.18 tem a correção aplicada. Confirme com base na versão do pacote corrigido do seu fabricante.

lsmod | grep -E 'esp4|esp6|rxrpc mostra se o caminho de código vulnerável está carregado. Um resultado vazio não significa que esteja totalmente seguro, uma vez que estes módulos são carregados a pedido. E um módulo carregado não é automaticamente prejudicial. O esp4, esp6 e rxrpc são módulos comuns que são perfeitamente seguros num kernel corrigido. Isto indica qual é a sua superfície de ataque e se vale a pena aplicar a mitigação de bloqueio (blacklist).

sysctl user.max_user_namespaces mostra o quão acessível o caminho ESP é. Acima de zero significa que utilizadores sem privilégios podem criar namespaces, a forma habitual de entrar no caminho ESP. Zero fecha essa porta, mas apenas para o ESP. O caminho RxRPC não precisa de namespaces, por isso não está totalmente coberto.

Verifique o estado do seu fornecedor. A Red Hat afirma que o CVE-2026-43500 não afeta os seus produtos, enquanto os CVE-2026-43284 e CVE-2026-46300 afetam os kernels suportados do Red Hat Enterprise Linux e qualquer sistema baseado neles. O Ubuntu publica a versão exata do pacote corrigido para cada linha de kernel que suporta.

O que deve monitorizar?

O código de prova de conceito (PoC) já é público. A Microsoft relatou atividade limitada no mundo real onde um atacante eleva privilégios utilizando su, embora ressalve que isto pode ser o Dirty Frag ou o seu predecessor Copy Fail, uma vez que os dois são difíceis de distinguir apenas através dos registos de processos.

O local realista para detetar isto é nas ferramentas de auditoria e EDR que já utiliza. O framework de auditoria do Linux pode registar a execução de processos e transições setuid, que é onde a sequência reveladora viria ao de cima: um binário desconhecido a ser descarregado e executado, seguido imediatamente por su. Fique atento ao carregamento de esp4, esp6 ou rxrpc por altura de outra atividade suspeita, especialmente num host que não tenha motivos para utilizar IPsec ou AFS, bem como à execução de ficheiros ELF recentemente descarregados. 

Se suspeitar de exploração, execute as suas verificações de integridade a partir de um ambiente de confiança em vez do próprio host possivelmente comprometido. E lembre-se de que bloquear os módulos do kernel não anula quaisquer alterações na cache de páginas que um atacante já tenha feito.

Onde entra o Aikido

A maioria das análises fica-se pela imagem ou pelo repositório. O Dirty Frag vive uma camada abaixo, no kernel que o nó efetivamente arranca.

A varredura de máquinas virtuais do Aikido Security lê o que está realmente instalado no host em execução a partir de um snapshot na cloud, para que um pacote de kernel vulnerável apareça como uma ocorrência no host. Como também associa hosts às workloads e contas que neles correm, pode ver o raio de impacto caso um nó seja comprometido.

Para os hosts na cloud ligados ao Aikido, a varredura de máquinas virtuais deteta os que transportam o pacote de kernel vulnerável e mostra quais as workloads executadas nos mesmos. A correção mantém-se a mesma: aplicar o patch ao kernel do nó e confirmar a build carregada após o reinício.

{{cta}}

FAQ

Quais são os CVEs que fazem parte do Dirty Frag?

O conjunto atual do Dirty Frag inclui o CVE-2026-43284 em IPsec/XFRM ESP, o CVE-2026-43500 em RxRPC e o CVE-2026-46300, a variante Fragnesia, no tratamento de fragmentos XFRM ESP-in-TCP.

O CVE-2026-43284 é explorável remotamente?

A exploração começa com a capacidade de executar código localmente como um utilizador ou workload com poucos privilégios. Uma vulnerabilidade remota, uma conta SSH roubada ou um container comprometido podem fornecer esse ponto de apoio inicial, após o qual o Dirty Frag pode fornecer a elevação para root.

O Dirty Frag consegue fazer Escape do Kubernetes ou do Docker?

Um kernel de host vulnerável pode tornar possível a elevação ao nível do nó a partir de um container quando a workload consegue aceder à funcionalidade de kernel necessária. O Seccomp, as definições de segurança de pods, as restrições de namespace e a distribuição do nó alteram a acessibilidade prática.

Reconstruir uma imagem de container corrige o Dirty Frag?

Não. O código afetado é executado no kernel do host. Aplique o patch e recarregue o kernel no nó e, em seguida, verifique se os nós antigos e os templates de máquinas já não estão a servir workloads. Proteger o que está realmente dentro das suas imagens é uma tarefa separada.

Compartilhar:

https://www.aikido.dev/blog/dirty-frag-cve-2026-43284

<script type="application/ld+json">
{
 "@context": "https://schema.org",
 "@graph": [
   {
     "@type": ["BlogPosting", "TechArticle"],
     "@id": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284#article",
     "isPartOf": { "@id": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284#webpage" },
     "mainEntityOfPage": { "@id": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284#webpage" },
     "headline": "Dirty Frag (CVE-2026-43284): the Linux kernel bug that turns read access into root",
     "description": "Dirty Frag lets a local attacker turn low-privileged Linux access into root. See the affected CVEs, container risk, exposure checks and fixes.",
     "datePublished": "2026-09-04",
     "dateModified": "2026-09-04",
     "wordCount": 1250,
     "timeRequired": "PT6M",
     "inLanguage": "en-US",
     "articleSection": "Malware & CVEs",
     "author": { "@id": "https://www.aikido.dev/authors/nicholas-thomson#person" },
     "publisher": { "@id": "https://www.aikido.dev/#organization" },
     "image": { "@id": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284#primaryimage" },
     "keywords": [
       "Dirty Frag",
       "CVE-2026-43284",
       "CVE-2026-43500",
       "CVE-2026-46300",
       "Fragnesia",
       "Linux kernel privilege escalation",
       "local privilege escalation",
       "container escape",
       "Kubernetes security",
       "page cache",
       "IPsec ESP",
       "RxRPC",
       "XFRM",
       "kernel patching"
     ],
     "about": [
       { "@type": "Thing", "name": "Dirty Frag" },
       { "@type": "Thing", "name": "Linux kernel local privilege escalation" },
       { "@type": "Thing", "name": "Linux kernel vulnerability" }
     ],
     "mentions": [
       { "@type": "Thing", "name": "CVE-2026-43284", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-43284" },
       { "@type": "Thing", "name": "CVE-2026-43500", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-43500" },
       { "@type": "Thing", "name": "CVE-2026-46300", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-46300" },
       { "@type": "Thing", "name": "Linux kernel" },
       { "@type": "Thing", "name": "IPsec ESP" },
       { "@type": "Thing", "name": "RxRPC" },
       { "@type": "Thing", "name": "Andrew File System" },
       { "@type": "Thing", "name": "page cache" },
       { "@type": "Thing", "name": "Kubernetes" },
       { "@type": "Thing", "name": "Docker" },
       { "@type": "SoftwareApplication", "name": "Aikido Security VM Scanning", "applicationCategory": "SecurityApplication", "url": "https://www.aikido.dev/cloud/virtual-machine-scanning" },
       { "@type": "SoftwareApplication", "name": "Aikido Container Image Scanning", "applicationCategory": "SecurityApplication", "url": "https://www.aikido.dev/code/container-image-scanning" }
     ],
     "speakable": {
       "@type": "SpeakableSpecification",
       "cssSelector": ["h1", "h2"]
     }
   },
   {
     "@type": "WebPage",
     "@id": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284#webpage",
     "url": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284",
     "name": "Dirty Frag (CVE-2026-43284): the Linux kernel bug that turns read access into root",
     "description": "Dirty Frag lets a local attacker turn low-privileged Linux access into root. See the affected CVEs, container risk, exposure checks and fixes.",
     "inLanguage": "en-US",
     "isPartOf": { "@id": "https://www.aikido.dev/#website" },
     "primaryImageOfPage": { "@id": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284#primaryimage" },
     "breadcrumb": { "@id": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284#breadcrumb" },
     "datePublished": "2026-09-04",
     "dateModified": "2026-09-04"
   },
   {
     "@type": "ImageObject",
     "@id": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284#primaryimage",
     "url": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284/hero.png",
     "caption": "Dirty Frag (CVE-2026-43284): the Linux kernel bug that turns read access into root"
   },
   {
     "@type": "BreadcrumbList",
     "@id": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284#breadcrumb",
     "itemListElement": [
       { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://www.aikido.dev" },
       { "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://www.aikido.dev/blog" },
       { "@type": "ListItem", "position": 3, "name": "Dirty Frag (CVE-2026-43284)", "item": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284" }
     ]
   },
   {
     "@type": "WebSite",
     "@id": "https://www.aikido.dev/#website",
     "url": "https://www.aikido.dev",
     "name": "Aikido Security",
     "publisher": { "@id": "https://www.aikido.dev/#organization" },
     "inLanguage": "en-US"
   },
   {
     "@type": "Organization",
     "@id": "https://www.aikido.dev/#organization",
     "name": "Aikido Security",
     "url": "https://www.aikido.dev",
     "logo": {
       "@type": "ImageObject",
       "url": "https://www.aikido.dev/logo.png"
     },
     "sameAs": [
       "https://www.linkedin.com/company/aikido-security",
       "https://x.com/AikidoSecurity"
     ]
   },
   {
     "@type": "Person",
     "@id": "https://www.aikido.dev/authors/nicholas-thomson#person",
     "name": "Nicholas Thomson",
     "url": "https://www.aikido.dev/authors/nicholas-thomson",
     "jobTitle": "Senior SEO & Growth Lead",
     "worksFor": { "@id": "https://www.aikido.dev/#organization" },
     "sameAs": [
       "https://www.linkedin.com/in/nicholas-gray-thomson/"
     ]
   },
   {
     "@type": "FAQPage",
     "@id": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284#faq",
     "isPartOf": { "@id": "https://www.aikido.dev/blog/dirty-frag-cve-2026-43284#webpage" },
     "mainEntity": [
       {
         "@type": "Question",
         "name": "Which CVEs are part of Dirty Frag?",
         "acceptedAnswer": {
           "@type": "Answer",
           "text": "The current Dirty Frag set contains CVE-2026-43284 in IPsec/XFRM ESP, CVE-2026-43500 in RxRPC, and CVE-2026-46300, the Fragnesia variant, in XFRM ESP-in-TCP fragment handling."
         }
       },
       {
         "@type": "Question",
         "name": "Is CVE-2026-43284 remotely exploitable?",
         "acceptedAnswer": {
           "@type": "Answer",
           "text": "Exploitation begins with the ability to run code locally as a low-privileged user or workload. A remote vulnerability, stolen SSH account, or compromised container can provide that first foothold, after which Dirty Frag can supply root escalation."
         }
       },
       {
         "@type": "Question",
         "name": "Can Dirty Frag escape Kubernetes or Docker?",
         "acceptedAnswer": {
           "@type": "Answer",
           "text": "A vulnerable host kernel can make node-level escalation possible from a container when the workload can reach the required kernel functionality. Seccomp, pod security settings, namespace restrictions, and the node distribution all change practical reachability."
         }
       },
       {
         "@type": "Question",
         "name": "Does rebuilding a container image fix Dirty Frag?",
         "acceptedAnswer": {
           "@type": "Answer",
           "text": "No. The affected code runs in the host kernel. Patch and reload the kernel on the node, then verify that old nodes and machine templates are no longer serving workloads. Securing what's actually inside your images is a separate job."
         }
       }
     ]
   }
 ]
}
</script>

‍

Assine para receber notícias

4.7/5
Cansado de falsos positivos?

Experimente Aikido como 100 mil outros.
Começar Agora
Obtenha um tour personalizado

Confiado por mais de 100 mil equipes

Agende Agora
Escaneie seu aplicativo em busca de IDORs e caminhos de ataque reais

Confiado por mais de 100 mil equipes

Iniciar Escaneamento
Veja como o pentest de IA testa seu aplicativo

Confiado por mais de 100 mil equipes

Iniciar Testes
Encontre os hosts expostos antes que um atacante o faça

A varredura de máquinas virtuais do Aikido deteta pacotes de kernel vulneráveis nos hosts que executa

Experimente gratuitamente

Torne-se seguro hoje,
de forma rápida e gratuita.

Proteja o seu código, a cloud e o runtime num sistema central.
Conecte um repositório para descobrir o que os agentes de raciocínio encontram na sua base de código.

Não é necessário cartão de crédito | Resultados do teste em 32 segundos.
Confiado por mais de 150 mil orgs