A Sobelow é uma ferramenta de análise estática focada na segurança para a estrutura Elixir e Phoenix. Para pesquisadores de segurança, é uma ferramenta útil para obter uma visão rápida dos pontos de interesse. Para mantenedores de projetos, ele pode ser usado para impedir a introdução de várias vulnerabilidades comuns.
Atualmente, Sobelow detecta alguns tipos dos seguintes problemas de segurança:
As vulnerabilidades em potencial são sinalizadas em cores diferentes de acordo com a confiança em sua insegurança. A alta confiança é vermelha, a confiança média é amarela e a baixa confiança é verde.
Uma descoberta é tipicamente marcada com "baixa confiança" se parecer que uma função pode ser usada com insegurança, mas não pode ser determinada com segurança se a função aceitar a entrada fornecida pelo usuário. ou seja, se uma descoberta estiver marcada em verde, pode ser criticamente insegura, mas exigirá maior validação manual.
Nota: Este projeto está em desenvolvimento constante e as vulnerabilidades adicionais serão sinalizadas com o passar do tempo. Se você encontrar um bug ou gostaria de solicitar recursos adicionais ou verificações de segurança, abra um problema!
Para usar o Sobelow, você pode adicioná -lo às dependências do seu aplicativo.
def deps do
[
{ :sobelow , "~> 0.13" , only: [ :dev , :test ] , runtime: false }
]
endVocê também pode instalar o Sobelow globalmente executando o seguinte na linha de comando:
$ mix escript.install hex sobelow
Para instalar na filial mestre, em vez da versão mais recente, o comando a seguir pode ser usado:
$ mix escript.install github nccgroup/sobelow
Após a instalação, a maneira mais simples de digitalizar um projeto Phoenix é executar o seguinte na raiz do projeto:
$ mix sobelow
Nota: Quaisquer argumentos de caminho devem ser caminhos absolutos ou em relação à raiz do aplicativo.
--root ou -r -Especifique o diretório raiz do aplicativo. Aceita um argumento de caminho, por exemplo ../my_project .
--verbose ou -v -Os trechos de código de impressão e detalhes adicionais para encontrar.
--ignore ou -i -ignore os tipos de localização. Aceita uma lista separada por vírgula de nomes de módulos, por exemplo, XSS.Raw,Traversal .
--ignore-files -Ignore Arquivos. Aceita uma lista separada por vírgula de nomes de arquivos, por exemplo, config/prod.exs .
--details ou -d -Obtenha detalhes do tipo de localização. Aceita um nome de módulo único, por exemplo, Config.CSRF .
--all-details -Obtenha detalhes de todos os tipos de busca.
--private -Skip Atualize verificações.
--router -Especifique o local do roteador. Isso só precisa ser usado se a localização do roteador não for padrão. Aceita um argumento de caminho, por exemplo my/strange/router.ex .
--exit -Retorne o status de saída diferente de zero ou acima de um limiar de confiança de low , medium ou high . Padrões para false que retorne um status de saída zero
--threshold -Retorne as descobertas no nível de confiança ou acima de um low (padrão), medium ou high .
--format ou -f -Especifique o formato de saída de descobertas. Aceita um formato, por exemplo, txt ou json .
Observe que opções como --verbose não funcionam com o formato json . Todas as descobertas formatadas json contêm uma tecla type , file e line . Outras chaves podem variar.
--quiet -Retorne uma única linha indicando o número de descobertas. Caso contrário, retorne nenhuma saída se não houver descobertas.
--compact -Achados mínimos e de linha única com saída colorida de acordo com a confiança.
--flycheck -Achados mínimos e de linha única que são compatíveis com as ferramentas baseadas em flycheck.
--save-config -gera um arquivo de configuração com base nas opções da linha de comando. Consulte os arquivos de configuração para obter mais informações.
- --config -Execute o arquivo Sobelow com o arquivo de configuração. Consulte os arquivos de configuração para obter mais informações.
--mark-skip-all -Mark todas as descobertas exibidas como ignoráveis.
--clear-skip -Configuração clara criada por --mark-skip-all .
--skip -Ignore as descobertas que foram marcadas para pular. Veja falsos positivos para obter mais informações.
--version -produz a versão atual do Sobelow. Isso é útil para etapas de IC ou integração com outras ferramentas, como Salus.
A Sobelow permite que os usuários salvem opções usadas com frequência em um arquivo de configuração. Por exemplo, se você se encontrar constantemente executando:
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low
Você pode usar o sinalizador --save-config para criar seu arquivo de configuração .sobelow-conf :
$ mix sobelow -i XSS.Raw,Traversal --verbose --exit Low --save-config
Este comando criará o arquivo .sobelow-conf na raiz do seu aplicativo. Você pode editar este arquivo diretamente para fazer alterações.
Você também pode executar o comando sem nenhuma opção:
$ mix sobelow --save-config
Quando você começa a usar este pacote - o arquivo de configuração gerado será preenchido com os valores padrão para cada opção. (Isso ajuda a incorporar rapidamente este pacote em uma base de código pré-existente.)
Agora, se você deseja executar o Sobelow com a configuração salva, poderá executar o SobeLow com o sinalizador --config .
$ mix sobelow --config
SobeLow favorece excessivamente relatórios versus subnotificação. Como tal, você pode encontrar vários falsos positivos em uma varredura típica. Essas descobertas podem ser ignoradas individualmente adicionando um comentário # sobelow_skip , juntamente com uma lista de módulos, antes da definição da função.
# sobelow_skip ["Traversal"]
def vuln_func ( ... ) do
...
end Ao integrar a Sobelow em um novo projeto, pode haver um grande número de falsos positivos. Para marcar todas as descobertas impressas como falsos positivos, corra Sobelow com o sinalizador --mark-skip-all .
Depois de marcar as descobertas apropriadas, execute o Sobelow com o sinalizador --skip .
$ mix sobelow --skip
Embora os comentários # sobelow_skip possam marcar apenas as descobertas no nível da função (e, portanto, não podem ser usadas para pular problemas de configuração), o sinalizador --mark-skip-all pode ser usado para pular qualquer tipo de localização.
As categorias de descobertas são divididas em módulos. Esses módulos podem ser usados para ignorar classes de descobertas (através das opções de ignore e skip ) ou obter detalhes de vulnerabilidade (através da opção details ).
Esta lista e outras informações úteis podem ser encontradas na linha de comando:
$ mix help sobelow
Para executar o Sobelow contra todos os aplicativos infantis em um aplicativo de guarda -chuva com um único comando, você pode adicionar um alias para o SobeLow no seu arquivo ROOT mix.exs :
defp aliases do
[
sobelow: [ "cmd mix sobelow" ]
]
end Se você deseja usar arquivos de configuração em um aplicativo Umbrella, crie um .sobelow-conf em cada aplicativo infantil e use o sinalizador --config .
Ao digitalizar um projeto, o Sobelow ocasionalmente verifica as atualizações e imprimirá um alerta se uma nova versão estiver disponível. A SOBELOW acompanha a última verificação de atualização, criando um arquivo .sobelow na raiz do projeto digitalizado.
Se essa funcionalidade não for desejada, o sinalizador --private poderá ser usado com a varredura.