AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 410056
Accepted
Peter
Peter
Asked: 2017-12-11 06:28:14 +0800 CST2017-12-11 06:28:14 +0800 CST 2017-12-11 06:28:14 +0800 CST

Qual é a promessa do OpenBSD em resumo?

  • 772

Alguém pode descrever, para um não programador, mas para uma pessoa de TI, o que é penhor ?

Ex.: existe um programa, ex.: "xterm". Como o penhor pode torná-lo mais seguro? Ele promete dentro do código dos programas, ou fora no próprio SO?

Onde está o penhor? Está no código do programa; ou o sistema operacional possui uma lista de binários que só podem invocar xy syscalls?

security openbsd
  • 3 3 respostas
  • 4670 Views

3 respostas

  • Voted
  1. Best Answer
    arif
    2017-12-16T14:08:54+08:002017-12-16T14:08:54+08:00

    O que é Promessa?

    pledgeé uma chamada do sistema.

    Chamar pledgeum programa é prometer que o programa usará apenas determinados recursos.

    Outra maneira de dizer é limitar a operação de um programa às suas necessidades, por exemplo,

    "Eu me comprometo a não usar nenhuma outra porta, exceto port 63"
    "Eu me comprometo a não usar nenhuma outra chamada de sistema, exceto lseek()e fork()"

    Como isso torna um programa mais seguro?

    Limita a operação de um programa. Exemplo:

    • Você escreveu um programa chamado xyzque só precisa da readchamada do sistema.
    • Então você adiciona pledgepara usar apenas read, mas nada mais.
    • Então, um usuário mal-intencionado descobriu que em seu programa existe uma vulnerabilidade pela qual se pode invocar um rootshell.
    • Explorar seu programa para abrir um rootshell fará com que o kernel mate o processo com SIGABRT(que não pode ser capturado/ignorado) e gere um log (que você pode encontrar com dmesg).

    Isso acontece porque antes de executar outros códigos do seu programa, primeiro pledgenão use nada além da readchamada do sistema. Mas abrir rooto shell chamará várias outras chamadas do sistema, o que é proibido porque já foi prometido não usar nenhum outro, exceto read.

    Onde está o Juramento?

    Geralmente está em um programa. Uso da página de manual do OpenBSD 6.5 :

    #include <unistd.h>
    
    int pledge(const char *promises, const char *execpromises);
    

    Exemplo de código: exemplo de código de catcomando de cat.c

    ........
    #include <unistd.h>
    ........
    int ch;
    if (pledge("stdio rpath", NULL) == -1)
        err(1, "pledge");
    
    while ((ch = getopt(argc, argv, "benstuv")) != -1)
    ..........
    
    • 18
  2. Johan Myréen
    2017-12-11T07:51:43+08:002017-12-11T07:51:43+08:00

    Um programa normalmente faz uso de apenas um determinado conjunto de chamadas de sistema ou biblioteca. Com pledgevocê pode restringir o conjunto de chamadas de sistema permitidas apenas para este conjunto. Por exemplo, se um programa não precisar ler o banco de dados de senhas, você pode proibir a chamada da getpwnam()função.

    Como isso é útil? É uma linha extra de defesa contra vulnerabilidades. Se o programa contiver um bug, alguém poderá explorar o bug para alterar o fluxo de execução do programa ou injetar algum código extra no processo. O bug pode ser, por exemplo, um erro de estouro de buffer em um daemon voltado para a rede, que o invasor pode acionar enviando ao programa mais dados do que ele pode manipular, possivelmente fazendo com que o programa leia e envie o conteúdo do /etc/passwdarquivo pelo rede.

    • 6
  3. Neil McGuigan
    2017-12-13T11:35:38+08:002017-12-13T11:35:38+08:00

    Seu programa "compromete-se" a usar apenas a funcionalidade {A,B,C}

    Se um hacker puder injetar código em seu processo prometido e tentar a funcionalidade D, o sistema operacional travará seu programa

    Por exemplo, digamos que você tenha um servidor NTP. Ele se comprometeu a usar apenas a funcionalidade DNS e CLOCK. Mas tem uma falha que permite a execução remota de código. Hacker pede para WRITE FILE. Mas pledgeirá detectar isso e desligar o programa e registrar o erro

    • 5

relate perguntas

  • O que significa cpg durante a instalação do OpenBSD na partição do disco?

  • Fortalecendo a segurança dos servidores rhel6/7 [fechado]

  • É possível manter um servidor como refém se alguém tiver acesso root? [fechado]

  • Como seguir o OpenBSD atual?

  • Existe um daemon syslog que implementa RFC 5848 "Signed Syslog Messages"?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve