Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
path-auditor — Auditor de funções libc em tempo de execução que detecta condições de corrida de acesso a arquivos e vulnerabilidades de symlink ao interceptar syscalls do sistema de arquivos via LD_PRELOAD, registrando potenciais caminhos de escalonamento de privilégios. | Kitploit
Ferramentas/GitHubGitHub/google/path-auditor
Escalada de PrivilégiosAnálise de VulnerabilidadesAnálise Dinâmica de Código (DAST)ExploraçãoFuzzingAnálise de BináriosArchived
GitHubgoogle/path-auditor

path-auditor

Auditor de funções libc em tempo de execução que detecta condições de corrida de acesso a arquivos e vulnerabilidades de symlink ao interceptar syscalls do sistema de arquivos via LD_PRELOAD, registrando potenciais caminhos de escalonamento de privilégios.

Ver Repositório
25038há 5 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

PathAuditor

O PathAuditor é uma ferramenta criada para encontrar vulnerabilidades relacionadas a acesso a arquivos, auditando funções da libc.

A ideia é basicamente a seguinte:

  • Auditar cada chamada a funções da libc relacionadas ao sistema de arquivos realizadas pelo binário.
  • Verificar se o caminho usado na chamada de sistema pode ser escrito por usuários comuns. Nesse caso, um usuário não privilegiado poderia ter substituído um diretório ou arquivo por um link simbólico.
  • Registrar todas as violações como potenciais vulnerabilidades.

Estamos usando LD_PRELOAD para interceptar todas as chamadas de biblioteca relacionadas ao sistema de arquivos e registrar quaisquer violações encontradas no syslog.

Este não é um produto oficial do Google.

Exemplo de Vulnerabilidade

Vejamos um exemplo do tipo de vulnerabilidade que esta ferramenta pode detectar. O CVE-2019-3461 foi um bug no tmpreaper, uma ferramenta que percorre /tmp e exclui arquivos antigos. Geralmente é executado como um cron job como root. Como ele não quer excluir arquivos fora de tmp, usava o seguinte código para verificar se um diretório é um ponto de montagem:

root@kitploit:~
if (S_ISDIR (sb.st_mode)) {
    char *dst;

    if ((dst = malloc(strlen(ent->d_name) + 3)) == NULL)
        message (LOG_FATAL, "malloc falhou.\n");
    strcpy(dst, ent->d_name);
    strcat(dst, "/X");
    rename(ent->d_name, dst);
    if (errno == EXDEV) {
        free(dst);
        message (LOG_VERBOSE,
                 "Arquivo em dispositivo diferente ignorado: `%s/%s'\n",
                 dirname, ent->d_name);
        continue;
    }
    // [...]

Em resumo, este código chama rename("/tmp/foo", "/tmp/foo/x") que retornará EXDEV se "/tmp/foo" for um ponto de montagem. O PathAuditor sinalizaria esta chamada como uma potencial vulnerabilidade se "/tmp/foo" for de propriedade de qualquer usuário que não seja root. Para entender o porquê, precisamos pensar no que acontece no kernel quando a chamada de sistema rename é executada (simplificado):

  1. O kernel percorre o caminho "/tmp/foo" para o primeiro argumento.
  2. O kernel percorre o caminho "/tmp/foo/x" para o segundo argumento.
  3. Se a origem e o destino estiverem em sistemas de arquivos diferentes, retorna EXDEV.
  4. Caso contrário, move o arquivo do primeiro para o segundo diretório.

Aqui existe uma condição de corrida, pois "/tmp/foo" será resolvido duas vezes. Se for controlado pelo usuário, ele pode substituí-lo por um arquivo diferente a qualquer momento. Em particular, queremos que "/tmp/foo" seja um diretório inicialmente para passar na verificação if(S_ISDIR) no código do tmpreaper. Em seguida, o substituímos por um arquivo pouco antes do código entrar na chamada de sistema. Quando o kernel resolver o primeiro argumento, verá um arquivo com conteúdo controlado pelo usuário. Agora o substituímos novamente, desta vez com um link simbólico para um diretório arbitrário no mesmo sistema de arquivos. O kernel resolverá o caminho uma segunda vez, seguirá o link simbólico e moverá o arquivo controlado para um diretório escolhido.

A restrição do mesmo sistema de arquivos ocorre porque rename não funciona entre sistemas de arquivos. Mas em algumas distribuições Linux, /tmp é apenas uma pasta na raiz por padrão, e você poderia usar este bug para mover um arquivo para /etc/cron, que será executado como root.

Como executar

Para testar, você precisa compilar libpath_auditor.so com o bazel e carregá-lo em um binário usando LD_PRELOAD. Qualquer violação será registrada no syslog, portanto certifique-se de que ele esteja em execução.

root@kitploit:~
bazel build //pathauditor/libc:libpath_auditor.so
LD_PRELOAD=/caminho/para/bazel-bin/pathauditor/libc/libpath_auditor.so cat /tmp/foo/bar
tail /var/log/syslog

Também é possível executar isso em todos os processos do sistema adicionando-o ao /etc/ld.so.preload. Porém, vale ressaltar que isso é recomendado apenas em sistemas de teste, pois pode causar instabilidade.

Como início rápido, você pode testar o contêiner docker fornecido com este projeto:

root@kitploit:~
docker build -t pathauditor-example .
docker run -it pathauditor-example
# LD_PRELOAD=/pathauditor/bazel-bin/pathauditor/libc/libpath_auditor.so cat /tmp/foo/bar
# cat /var/log/syslog
Baixar ferramenta