![Page 1: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/1.jpg)
Introdução à pesquisa em vulnerabilidades no kernel do Linux
Anderson Nascimentoanderson [at] allelesecurity [dot] com [dot] br
![Page 2: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/2.jpg)
Sobre
Parte 1
Arquitetura de computadoresMotivaçõesAmbiente de pesquisaEcosistemaLinuxSubsistemasFerramentas
Parte 2
VulnerabilidadesConsiderações Finais
perguntas
Agenda
![Page 3: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/3.jpg)
Anderson NascimentoCEO @ allele security intelligence
Twitter: andersonc0d3Github: andersonc0d3Linkedin: andersonc0d3Blog: https://andersonc0d3.io
AnteriormenteAdministrador de sistemasAnalista de segurança da informaçãoPesquisador em segurança da informação independente
Estuda o kernel do freebsd desde ~ 2010Estuda o kernel do linux desde 2015
Principais interesses
Vulnerability research, rootkits, source code review, operating systems, computer science, mathematics, physics,
Language
Sobre
![Page 4: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/4.jpg)
Este é o resultado de um trabalho pessoal e sem revisões prévias, nascido do interesse do apresentador como uma forma
de estudar assuntos de seu interesse, sendo assim, erros poderão ser cometidos nesta apresentação e peço desculpas
desde já.
Aviso legal
![Page 5: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/5.jpg)
“A Arquitetura de Computadores é o projeto conceitual e fundamental da estrutura operacional de um sistema
computacional. Ela é o estudo dos requisitos necessários para que um computador funcione e de como organizar os diversos
componentes para obter melhores desempenhos.”
X86 X86-64/AMD64 ARM ARM64 SPARC itanium MIPS POWERPC
Arquitetura de computadores
![Page 6: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/6.jpg)
Real mode16 bitsSem rings de proteçãoacesso total ao hardware
Protected modeRings - ring 0, 1, 2, 3SegmentaçãoPaginação32 bits - 4GMultitasking
Virtual 8086DOS
Long mode4-level PaginaçãoSuporte limitado a segmentaçãoAmd64 canonical address64 bits registradoresMais registradores Sub modo de compatibilidade
Modos de operação de uma CPU x86/amd64
![Page 7: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/7.jpg)
SMM16 bitsSmramGerenciador SMI provido pela BIOS/UEFIUsado normalmente para gerenciamento de erros críticos
Modos de operação de uma CPU x86/amd64
![Page 8: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/8.jpg)
Modos de operação de uma CPU x86
https://software.intel.com/sites/default/files/managed/a4/60/325384-sdm-vol-3abcd.pdf
![Page 9: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/9.jpg)
Níveis de privilégios modo protegido
https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Priv_rings.svg/1280px-Priv_rings.svg.png
![Page 10: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/10.jpg)
Espaço de endereçamento x86
https://i.stack.imgur.com/PveNt.png
![Page 11: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/11.jpg)
Porque estudar o kernel do Linux?
Motivações
![Page 12: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/12.jpg)
Porque estudar o kernel do Linux?
Conhecimento
Motivações
![Page 13: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/13.jpg)
Porque estudar o kernel do Linux?
Conhecimento
Aprender como um kernel funciona permite ao programador entender melhor a máquina.
Motivações
![Page 14: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/14.jpg)
Porque estudar o kernel do Linux?
Conhecimento
Oportunidade de emprego
Motivações
![Page 15: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/15.jpg)
Porque estudar o kernel do Linux?
Conhecimento
Oportunidade de emprego
Ter conhecimentos de como um kernel funciona é um grande diferencial. Pode não haver muitas oportunidades mas as que existem podem ser bastantes interessantes.
Motivações
![Page 16: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/16.jpg)
Porque estudar o kernel do Linux?
Conhecimento
Oportunidade de emprego
Retorno financeiro
Motivações
![Page 17: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/17.jpg)
Porque estudar o kernel do Linux?
Conhecimento
Oportunidade de emprego
Retorno financeiro
Retorno financeiro através do mercado de compra e venda de vulnerabilidades.
pwn2own, $15,000, UbuntuZimperium, n-days, preço desconhecidoZerodium, Centos ubuntu tails, > $30,000Internet bug bounty, $10,000, comex, towelroot
Motivações
![Page 18: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/18.jpg)
Porque estudar o kernel do Linux?
Conhecimento
Oportunidade de emprego
Retorno financeiro
Furtividade
Motivações
![Page 19: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/19.jpg)
Porque estudar o kernel do Linux?
Conhecimento
Oportunidade de emprego
Retorno financeiro
Furtividade
O kernel é uma das principais partes de um sistema. Se um atacante tem controle do kernel, seu único limite será sua imaginação.
Motivações
![Page 20: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/20.jpg)
Porque estudar o kernel do Linux?
Conhecimento
Oportunidade de emprego
Retorno financeiro
Furtividade
Superfície de ataque/escalação de privilégios/SANDBOX
Motivações
![Page 21: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/21.jpg)
Porque estudar o kernel do Linux?
Conhecimento
Oportunidade de emprego
Retorno financeiro
Furtividade
Superfície de ataque/escalação de privilégios/SANDBOX
O kernel contém por padrão uma grande superfície de ataque.
Motivações
![Page 22: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/22.jpg)
P: Qual ambiente mais adequado para se iniciar os estudos do kernel do linux?
Ambiente de pesquisa/estudo
![Page 23: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/23.jpg)
P: Qual ambiente mais adequado para se iniciar os estudos do kernel do linux?
R: Depende de cada pesquisador e suas motivações
Ambiente de pesquisa/estudo
![Page 24: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/24.jpg)
P: Qual ambiente mais adequado para se iniciar os estudos do kernel do linux?
R: Depende de cada pesquisador e suas motivações
Porém, existem algumas possibilidades:
Ambiente de pesquisa/estudo
![Page 25: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/25.jpg)
P: Qual ambiente mais adequado para se iniciar os estudos do kernel do linux?
R: Depende de cada pesquisador e suas motivações
Porém, existem algumas possibilidades:
MAquinas reais
Ambiente de pesquisa/estudo
![Page 26: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/26.jpg)
P: Qual ambiente mais adequado para se iniciar os estudos do kernel do linux?
R: Depende de cada pesquisador e suas motivações
Porém, existem algumas possibilidades:
MAquinas reais
Maquinas virtuais
Ambiente de pesquisa/estudo
![Page 27: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/27.jpg)
P: Qual ambiente mais adequado para se iniciar os estudos do kernel do linux?
R: Depende de cada pesquisador e suas motivações
Porém, existem algumas possibilidades:
MAquinas reais
Maquinas virtuais
Núvem
Ambiente de pesquisa/estudo
![Page 28: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/28.jpg)
Maquinas reais
Vantagem
Segurança
Desvantagem
GerenciamentoCusto HardwareMobilidade
Ambiente de pesquisa/estudo
![Page 29: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/29.jpg)
Maquinas virtual
Vantagem
Segurançacusto
Desvantagem
Espaço em discoMobilidade
Ambiente de pesquisa/estudo
![Page 30: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/30.jpg)
Núvem
Vantagem
MobilidadeHardware
Desvantagem
Segurançacusto
Ambiente de pesquisa/estudo
![Page 31: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/31.jpg)
Linus Torvalds
Criador, mantenedor e principal desenvolvedor
Greg kroah-hartman
Desenvolvedor e mantenedor de vários subsistemasMantenedor do branch -stable
Desenvolvedores
Empresas
Red HATGoogleSuseCanonicalOracle
Distribuições
Ecosistema
![Page 32: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/32.jpg)
Empresas:
Red Hat
Red hat enterprise linuxFedoraCentos
AndroidChromeOS/chromiumos
SUSE
openSUSE
Canonical
Ubuntu
Oracle
Oracle linux
Ecosistema
![Page 33: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/33.jpg)
Kernel release 4.14.0
61,000 files
25,000,000 lines
4,394 developers
≈530 companies Kernel
releases 4.9.0 – 4.14.0
December 2016 – November 2017
Linux
https://github.com/gregkh/kernel-development/blob/master/kernel-development.pdf
![Page 34: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/34.jpg)
10,000 lines added 2,700 lines removed
2,000 lines modified Kernel
releases 4.9.0 – 4.14.0
December 2016 – November 2017
Every day
Linux
https://github.com/gregkh/kernel-development/blob/master/kernel-development.pdf
![Page 35: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/35.jpg)
Github
http://github.com/torvalds/linux
Git clone http://github.com/torvalds/linux
Kernel.org
https://git.kernel.org/
Git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
Git.centos.org
https://git.centos.org/summary/rpms!kernel.git
git clone https://git.centos.org/git/rpms/kernel.git && cd kernel && git checkout c7 / GIT CHECKOUT [tag]
Git clone https://git.centos.org/git/centos-git-common.gitget_sources.sh
Como obter o kernel do linux
![Page 36: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/36.jpg)
Continuous release - Permite acesso previamente a pacotes que estarão disponíveis nas próximas versões
Como obter o kernel do linux
https://wiki.centos.org/AdditionalResources/Repositories/CR
![Page 37: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/37.jpg)
Continuous release - como usar
Como obter o kernel do linux
https://wiki.centos.org/AdditionalResources/Repositories/CR
![Page 38: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/38.jpg)
IPC (Inter process communication)
MM (memory management)
VFS (virtual file systems)
Networking
Security
Auditing
Process
Scheduling
Power management
...
subsistemas
![Page 39: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/39.jpg)
subsistemas
![Page 40: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/40.jpg)
Editor de texto
Vim
Navegadores de base de código
Cscope
Diffing
meld
Análise estática
SmatchCoccinellesparse
Debugging
Gdb + vmware
Ferramentas
![Page 41: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/41.jpg)
Dynamic tracing
SystemtapKprobes
Fuzzers
Syzkallertrinity
Ferramentas
![Page 42: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/42.jpg)
Ferramentas - cscope
![Page 43: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/43.jpg)
Ferramentas - smatch
https://blogs.oracle.com/linuxkernel/smatch-static-analysis-tool-overview,-by-dan-carpenter
![Page 44: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/44.jpg)
PARTE 2
Vulnerabilidades
![Page 45: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/45.jpg)
CVE-2015-7613
“Race condition in the IPC object implementation in the Linux kernel through 4.2.3 allows local users to gain privileges by triggering an ipc_addid call that leads to uid and gid comparisons against uninitialized data, related to msg.c, shm.c, and util.c.”
Vulnerabilidades
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-7613
![Page 46: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/46.jpg)
IPC SUBSYSTEM - SYSTEMV IPC
Man svipc
![Page 47: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/47.jpg)
A vulnerabilidade afetava todo o subsistema (3 mecanismos) mas quando ela foi corrigida inicialmente em upstream, somente em um mecanismo foi corrigido (semáforo). Após a correção, ainda era possível explorar a mesma vulnerabilidade utilizando os outros dois mecanismos do subsistema IPC (message, shared memory).
Vulnerabilidades - CVE-2015-7613
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-7613
![Page 48: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/48.jpg)
Vulnerabilidades - CVE-2015-7613
![Page 49: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/49.jpg)
Vulnerabilidades - CVE-2015-7613
![Page 50: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/50.jpg)
Lições
Programadores experientes, também erram (esquecem).
Conhecimento do funcionamento interno do subsistema ajuda bastante durante o processo de pesquisa, entendimento e exploração de vulnerabilidades.
Vulnerabilidades - CVE-2015-7613
![Page 51: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/51.jpg)
CVE-2017-10661
“Race condition in fs/timerfd.c in the Linux kernel before 4.10.15 allows local users to gain privileges or cause a denial of service (list corruption or use-after-free) via simultaneous file-descriptor operations that leverage improper might_cancel queueing.”
Vulnerabilidades
https://nvd.nist.gov/vuln/detail/CVE-2017-10661
![Page 52: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/52.jpg)
Timerfd subsystem
Man timerfd_create
![Page 53: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/53.jpg)
Vulnerabilidade publicamente conhecida que ainda afeta, pelo menos, a versão do CentOS 7 (linux-3.10.0-693.21.1.el7)
Vulnerabilidades - CVE-2017-10661
https://nvd.nist.gov/vuln/detail/CVE-2017-10661
![Page 54: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/54.jpg)
Vulnerabilidades - CVE-2017-10661
![Page 55: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/55.jpg)
Vulnerabilidades - CVE-2017-10661
![Page 56: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/56.jpg)
Vulnerabilidades - CVE-2017-10661
![Page 57: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/57.jpg)
Vulnerabilidades - CVE-2017-10661
![Page 58: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/58.jpg)
Lições
Backporting
Vulnerabilidades corrigidas em upstream podem levar tempo para serem corrigidas nas distribuições.
Vulnerabilidades - CVE-2017-10661
![Page 59: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/59.jpg)
Vulnerabilidades - CVE-2017-10661
https://googleprojectzero.blogspot.com/2018/09/a-cache-invalidation-bug-in-linux.html
![Page 60: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/60.jpg)
CVE-2016-7117
“Use-after-free vulnerability in the __sys_recvmmsg function in net/socket.c in the Linux kernel before 4.5.2 allows remote attackers to execute arbitrary code via vectors involving a recvmmsg system call that is mishandled during error processing.”
Vulnerabilidades
https://nvd.nist.gov/vuln/detail/CVE-2016-7117
![Page 61: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/61.jpg)
recvmmsg()
Man recvmmsg
![Page 62: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/62.jpg)
Vulnerabilidade afetou uma parte principal do kernel do linux, adicionada em 2009 e foi somente corrigida em 2016 (7 anos)
Vulnerabilidades - CVE-2016-7117
https://nvd.nist.gov/vuln/detail/CVE-2016-7117
![Page 63: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/63.jpg)
Vulnerabilidades - CVE-2016-7117
![Page 64: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/64.jpg)
Vulnerabilidades - CVE-2016-7117
![Page 65: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/65.jpg)
Vulnerabilidades - CVE-2016-7117
![Page 66: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/66.jpg)
Vulnerabilidades - CVE-2016-7117
![Page 67: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/67.jpg)
Vulnerabilidades - CVE-2016-7117
Um pouco mais que 3 meses para ser corrigida
![Page 68: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/68.jpg)
Lições
Validade da Lei de linus (linus’s law)“Dados olhos suficientes, todos os erros são óbvios
(Given enough eyeballs, all bugs are shallow)”
Profundidade da base de códigoEssa vulnerabilidade afetou uma parte principal do
kernel do linux, a chamada de sistema recvmmsg()
Vulnerabilidades - CVE-2016-7117
https://pt.wikipedia.org/wiki/Lei_de_Linus
![Page 69: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/69.jpg)
CVE-2018-6554
“Memory leak in the irda_bind function in net/irda/af_irda.c and later in drivers/staging/irda/net/af_irda.c in the Linux kernel before 4.17 allows local users to cause a denial of service (memory consumption) by repeatedly binding an AF_IRDA socket.”
CVE-2018-6555
“The irda_setsockopt function in net/irda/af_irda.c and later in drivers/staging/irda/net/af_irda.c in the Linux kernel before 4.17 allows local users to cause a denial of service (ias_object use-after-free and system crash) or possibly have unspecified other impact via an AF_IRDA socket.”
Vulnerabilidades
https://nvd.nist.gov/vuln/detail/CVE-2018-6554https://nvd.nist.gov/vuln/detail/CVE-2018-6555
![Page 70: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/70.jpg)
Vulnerabilities Summary
The following advisory describes two vulnerabilities in the Linux Kernel. By combining these two vulnerabilities a privilege escalation can be achieved. The two vulnerabilities are quite old and have been around for at least 17 years, quite a few Long Term releases of Linux have them in their kernel. While the assessment of the Linux kernel team is that they only pose a denial of service, that is incorrect, we will provide here proof that they can run code with a bit of effort and some luck (the probability of success of gaining root privileges is above 50%).
IRDA Linux Driver UAF
https://blogs.securiteam.com/index.php/archives/3759
![Page 71: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/71.jpg)
Lições
Vulnerabilidades lógicasChamar bind() múltiplas vezes
explorabilidadeA vulnerabilidade isoladamente pode não permitir
escalação de privilégios mas pode fornecer primitivas necessárias para serem usadas em conjunto com outras vulnerabilidades. Toda vulnerabilidade pode ser interessante
Vulnerabilidades
CVE-2018-6554/CVE-2018-6555
https://pt.wikipedia.org/wiki/Lei_de_Linus
![Page 72: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/72.jpg)
Módulos de terceirosCapabilitiesCarregamento automático de módulosNamespacesChangelog / Novos recursos / betaLista de discussões
Considerações finais
![Page 73: Anderson Nascimento · Introdução à pesquisa em vulnerabilidades no kernel do Linux Anderson Nascimento anderson [at] allelesecurity [dot] com [dot] br](https://reader036.vdocuments.mx/reader036/viewer/2022071213/603bdb1e9fda0c2a63305a9c/html5/thumbnails/73.jpg)
dúvidas?
OBRIGADO!