Playing with Sandbox: An analysis of Capsicum

Blog post written by me and originally posted in 2015 on an information security company blog. Reproduced only for historical reasons.

Introduction

In this post we talk a little about sandbox. People that work and study software exploitation know the sandbox concept. This kind of feature when properly implemented on a system makes hard to exploit some kind of vulnerabilities, especially that involving memory corruption. In wikipedia we have a good reference about this:

“In computer security, a sandbox is a security mechanism for separating running programs. It is often used to execute untested code, or untrusted programs from unverified third parties, suppliers, untrusted users and untrusted websites. A sandbox typically provides a tightly controlled set of resources for guest programs to run in, such as scratch space on disk and memory. Network access, the ability to inspect the host system or read from input devices are usually disallowed or heavily restricted.”

The sandbox is a security mechanism that separates running processes. Basically we have a process with least privileges (target) and another process with greater privileges (broker). If the process with least privileges need execute some operation that is not allowed, a request is sent to the process with greater privileges that checks whether the operation has permissions to be executed and run with return to target (process with least privilege). Sandbox normally is used to protect the application and can also be used to provide a restricted environment for execute and test some malicious binaries, one example of this is Cuckoo Sandbox that used for malware analysis.

In this post we talk about Capsicum[1], is that a kind of sandbox developed by the University of Cambridge that support several common commands of the system such as tcpdump[2], hastd, dhclient, kdump and sshd as mentioned in the website[3]. The Capsicum is a new kind of sandbox but we have support for use in the FreeBSD and Linux[4]. The first experimental version was made only for FreeBSD[5] and available since version 9.0. This sandbox add two new features to the system, called capability mode and capabilities.

Here we introduced a rapid explanation about two modes. Capability mode is the feature that enable for the developers isolate processes allowing only that some system calls execute some tasks reducing the permissions of the process. Capabilities enables a more refined control over the files and devices. This post has more focus on the capability mode.

Continue reading “Playing with Sandbox: An analysis of Capsicum”

Uma análise do CVE-2012-0217

Artigo escrito por mim e publicado originalmente em 2012 no blog de uma empresa de segurança da informação. Reproduzido aqui somente por motivos históricos.

Introdução

Em junho desse ano (2012) o time de segurança do sistema operacional FreeBSD publicou um alerta de segurança sobre uma vulnerabilidade descoberta por Rafal Wojtczuk que afeta todas as versões 64 bits.

Essa  vulnerabilidade não só afeta o sistema  operacional FreeBSD  mas também vários sistemas operacionais e sistemas de virtualização[1] disponíveis, com exceção do OpenBSD 5.0 e o Linux que já tinham corrigido a vulnerabilidade desde 2006[3].

Nesse post será explicado a natureza da vulnerabilidade e como ela pode ser utilizada para obter execução de códigos no kernel. Apesar de já existir exploits públicos para Windows [4] e para FreeBSD[5] [6], um exploit para FreeBSD também será apresentado nesse artigo.

Assume-se que o leitor saiba  como funciona exploração  de vulnerabilidades  em kernel, sistemas operacionais e suas estruturas, principalmente IDT[7] e como realizar debugging do kernel.

Os experimentos  realizados  nesse  artigo  foram  realizados  utilizando  a  versão  9.0 RELEASE  do FreeBSD.

Continue reading “Uma análise do CVE-2012-0217”

Entendendo e explorando o CVE-2012-4576 para o kernel do FreeBSD

Artigo escrito por mim e publicado originalmente em 2013 no blog de uma empresa de segurança da informação. Reproduzido aqui somente por motivos históricos.

Introdução

Dando continuidade a exploração de vulnerabilidades em kernel-land [1], neste artigo serão analisados os detalhes da vulnerabilidade registrada no CVE-2012-4576 e como podemos utilizá-la para obter execução de código no kernel do FreeBSD.

Esta vulnerabilidade foi reportada por Mateusz Guzik e o advisory [2] oficial do time de segurança do FreeBSD foi publicado no dia 22 de Novembro de 2012.

A falha ocorre devido a falta de validação em uma chamada de sistema. Como resultado, regiões de memória podem ser sobrescritas. A vulnerabilidade existe no módulo que adiciona a compatibilidade de execução de arquivos binários nativos do Linux no FreeBSD, então apenas sistemas que usam este recurso podem estar vulneráveis.

Todos os experimentos neste artigo foram realizados no sistema operacional FreeBSD 7.0, 8.2 e 9.0 arquitetura 32 bits (i386).

Continue reading “Entendendo e explorando o CVE-2012-4576 para o kernel do FreeBSD”

NullByte Security Conference – 4º Edição

No último Sábado (18/11) aconteceu a 4º edição da NullByte Security Conference. A NullByte Security Conference é uma conferência técnica em segurança da informação que acontece anualmente em Salvador, Bahia e que vem se consolidando entre as conferências técnicas de segurança da informação no Brasil. A conferência é limitada a 50 pessoas e as inscrições esgotaram bem antes da conferência mas o pessoal da organização abriu mais inscrições que totalizou 87 pessoas inscritas oficialmente nessa edição. Como de costume, esse ano a conferência apresentou trabalhos técnicos interessantes e de bastante relevância no mercado.

A conferência foi realizada no mesmo local da edição anterior, a Sala de Arte do Museu Geológico da Bahia. O local comportou muito bem a edição anterior e dessa vez não foi diferente. Não tenho ideia quantas pessoas estavam presentes ao certo, mas acredito que tanto na sala de apresentações (um cinema) quanto na área livre, todos estavam confortáveis. O bar/lanchonete começou a funcionar cedo e bem antes da conferência iniciar, então, quem chegou cedo, teve tempo suficiente de pegar uma bebida, comer algo e ainda bater um papo antes de assistir a primeira apresentação que demorou um pouco de começar. Os slides estão disponíveis aqui e algumas fotos postadas pelo pessoal podem ser encontradas aqui. Até o momento que olhei, somente duas apresentações tem os slides publicados.

Continue reading “NullByte Security Conference – 4º Edição”

Olá mundo de um outro lugar – Hello World from another place

Português / English

Português:

Estou de volta ao mundo dos blogs. Na verdade eu nunca tive um blog antes, eu estava acostumado a escrever no blog do meu antigo empregador. Mas agora eu decidi criar um e voltar a escrever sobre meus projetos, pesquisas e coisas interessantes que eu me deparar durante meu dia a dia. Irei escrever sobre sistemas operacionais, kernel, FreeBSD, Linux, programação e assim por diante. Talvez eu também escreva algo sobre criptografia, matemática, física, neurociência ou outro assunto relacionado à ciência. O idioma predominante neste blog será o português mas também pretendo escrever em inglês.

English:

I’m back to the world of blogs. In fact, I have never had a blog, I was used to write at my previous employer’s blog. But now I decided to create one and coming back to write about my personal researches, projects and interesting things I bump daily. I will write about operating systems, kernels, FreeBSD, Linux, low-level stuff and so on. Maybe I also write about cryptography, mathematics, physics, neuroscience or other science. The main language here will be Portuguese but sometimes English posts will pop up as well.

Continue reading “Olá mundo de um outro lugar – Hello World from another place”