Índice
- Introdução
- Pré -requisito
- Desenvolvimento
- Howto
- SELECT_PM
- SELECT_PKG
- arrastar
- edit_dist
- download
- get_versions
- get_author
- get_dep
- get_stats
- build_dep
- build_author
- split_graph
- instalar
- astgen
- astfilter
- Taint
- filtro_pkg
- estático
- dinâmico
- Interpret_trace
- Interpret_Result
- compare_ast
- filtro_versões
- compare_hash
- grep_pkg
- aceleração
- Ferramenta
- Varredura em toda a Internet
- Estatísticas para diferentes gerentes de pacotes
- Ferramentas de análise estática para diferentes idiomas
- Analisadores ast para diferentes idiomas
- Recurso
- Referência
Introdução
Este projeto analisa projetos de código aberto para malware.
Devido à alta demanda da comunidade, decidimos abrir o código do código como é agora, para permitir a colaboração. A maioria do código é atualizada até maio de 2019, o que indica que alguns componentes podem não funcionar mais. Especialmente os componentes que dependem de ferramentas externas (por exemplo, sysdig, fluxo de ar) ou APIs (por exemplo, NPM).
Estamos trabalhando ativamente nos testes e melhorias. Encontre a lista de TODO aqui. Para como executar comandos, consulte a seção Howto. Para como implantar em máquinas, consulte as instruções de implantação. Para como solicitar o acesso às amostras de ataque da cadeia de suprimentos, consulte as instruções de solicitação
Este repositório é de origem aberta sob licença do MIT. Se você achar útil este repositório, cite nosso artigo:
@inproceedings{duan2021measuring,
title={Towards Measuring Supply Chain Attacks on Package Managers for Interpreted Languages},
author={Duan, Ruian and Alrawi, Omar and Kasturi, Ranjita Pai and Elder, Ryan and Saltaformaggio, Brendan and Lee, Wenke},
booktitle = {28th Annual Network and Distributed System Security Symposium, {NDSS}},
month = Feb,
year = {2021},
url = {https://www.ndss-symposium.org/wp-content/uploads/ndss2021_1B-1_23055_paper.pdf}
}
Pré -requisito
Básico
- Docker
- Configuração básica para o Ubuntu
- Para outro sistema operacional (ou seja, macOS e Windows), consulte o
setup.sh e descubra suas equivalências
Dependências
- Para testar e executar o projeto localmente, você precisa de dependências. Existem duas maneiras de preparar dependências
- Construa a imagem Maloss Docker e teste dentro dela
- Construa a imagem do Docker
-
sudo docker build -t maloss .
- Re-construção da imagem do docker sem cache (usada ao re-construção da imagem)
-
sudo docker build -t maloss . --no-cache
- Execute a imagem do Docker e mapeie sua raiz de fonte local para ela
-
sudo docker run -it --rm -v $(pwd):/code maloss /bin/bash
- Mude para a raiz da fonte montada mapeada e comece a fazer alterações
- Instale dependências localmente e teste -as
- As instruções são para o Ubuntu 16.04. Se você os achar que eles não estão trabalhando em outros sistemas, corrija e comprometa as alterações necessárias. Essas instruções são simplesmente copiadas do Dockerfile, procuram isso para solucionar problemas.
- para o desenvolvimento de análise estática de JS e Python
-
pip install -r src/requirements.txt --user
- Para os outros (TODO: Simplifique esta lista gigante)
-
sudo apt-get install -yqq curl php git ruby-full rubygems-integration nuget python python-pip python3-pip npm jq strace -
sudo ./src/install_dep.sh
Desenvolvimento
Estrutura
- A pasta de registros contém código -fonte para gerentes de pacote de espelhamento. Para executar o programa, você precisaria de 10 TB para NPM, 5 TB para Pypi e 5 TB para Rubygems.
- A pasta SRC contém código -fonte para análise estática, dinâmica e de metadados.
- A pasta principal contém código -fonte para orquestração dinâmica.
- A pasta de fluxo de ar contém código -fonte para orquestração estática.
- A pasta SYSDIG contém configuração e configuração para rastreamento dinâmico.
- Os dados contêm configuração e estatísticas do Honeypot.
- Config contém configuração para análise estática.
- O DOC contém APIs rotuladas manualmente, que são usadas para derivar a configuração .
- O TestData contém amostras de teste.
- A referência contém trabalho relacionado.
- O BenignoWware contém alguns pacotes benignos.
- O malware contém a lista de amostras maliciosas, que podem ser usadas para proteção.
- Maloss-Samples é um repositório privado que contém as amostras de ataque da cadeia de suprimentos e é atualizado periodicamente. Preencha o formulário do Google para solicitar acesso. Vamos responder o mais rápido possível.
Instruções
- Neste projeto, atualmente estamos usando o aipo + RabbitMQ para executar nossos metadados e análises dinâmicas de maneira distribuída. Estamos usando o fluxo de ar + aipo para executar nossas análises estáticas.
- A pasta SRC/ contém o código para cada análise individual e deve ser minimizada e independente.
- Em particular, para análise estática/dinâmica/de metadados, os trabalhos na pasta SRC/ devem lidar com apenas um pacote e um versoin.
- Cada análise individual deve ser desenvolvida e contida nesta pasta.
- O principal/ pasta lida com a computação distribuída para metadados e análises dinâmicas.
- O nó principal carrega a lista de trabalhos (pacotes e suas versões para analisar), envie -os para o corretor do RabbitMQ.
- Os nós de escravos se conectam ao corretor e buscam trabalhos do corretor.
- Cada análise individual pode precisar alterar .Env nesta pasta.
- O fluxo de ar/ pasta lida com computação distribuída para análises estáticas.
- O nó principal carrega a DAG de trabalhos (pacotes conectados por relações de dependência), envie -os para o corretor Redis.
- Os nós de escravos se conectam ao corretor da TE e buscam trabalhos da corretora.
- Cada análise individual pode precisar alterar .Env nesta pasta.
- Neste projeto, executamos cada análise usando o Docker. As etapas a seguir mostram como iniciar ou depurar os trabalhos distribuídos para metadados e análises dinâmicas.
- em trabalhador
- Crie
main/config personalizada de main/config.tmpl - Construa a imagem do Docker
-
sudo docker build -t maloss .
- Re-construção da imagem do docker sem cache (usada ao re-construção da imagem)
-
sudo docker build -t maloss . --no-cache
- Para testes, execute a imagem do Docker e anexe a ela
-
sudo docker run -it --rm --cap-add=SYS_PTRACE -v /tmp/result:/home/maloss/result -v /tmp/metadata:/home/maloss/metadata maloss /bin/bash
- Para produção, consulte o implantação.md
- em mestre
- Crie
main/config personalizada de main/config.tmpl - Inicie o RabbitMQ
-
cd main && sudo docker-compose --compatibility -f docker-compose-master.yml up -d
- Adicione trabalhos à fila
-
python detector.py install -i ../data/pypi.csv
- depuração
- Comente a linha
QUEUING = Celery em main/config e, em seguida, os trabalhos devem estar sendo executados localmente e sequencialmente. - O ponto de entrada para as obras de aipo é
main/celery_tasks.py e o ponto de entrada para mestre it main/detector.py .
- TODO: como depurar análises estáticas
Howto
SELECT_PM
- Selecione os gerentes de pacotes para inspecionar com base no limite num_pkg
SELECT_PKG
- Selecione pacotes populares com base em critérios especificados, como downloads ou usos
-
python main.py select_pkg ../data/pypi.with_stats.csv ../data/pypi.with_stats.popular.csv -n 10000 -
python main.py select_pkg ../data/maven.csv ../data/maven.popular.csv -n 10000 -f use_count
arrastar
- Rastreie o gerenciador de pacotes especificado e salve os nomes de pacotes
-
python main.py crawl $package_manager $outfile
- Rastreie o gerenciador de pacotes especificado para nomes de pacotes, estatísticas de download de pesquisa e salvar para arquivar
-
python main.py crawl $package_manager $outfile -s -p 24
edit_dist
- Execute a distância de edição para nomes de pacotes
-
python main.py edit_dist $source -t $target $outfile -
python main.py edit_dist ../data/pypi.with_stats.csv ../data/edit_dist/pypi_edist_dist.out -a c_edit_distance_batch -p 16 -
python main.py edit_dist ../data/pypi.with_stats.popular.csv ../data/edit_dist/pypi_pop_vs_all.out -t ../data/pypi.with_stats.csv -a c_edit_distance_batch -p 16 --pair_outfile ../data/edit_dist/pypi_pop_vs_all.csv
download
- Baixe o arquivo Tarball usando PIP, link
-
pip download --no-binary :all: --no-deps package
- Baixe o arquivo TGZ usando o NPM, link
- Baixe pacotes PHP usando compositor
-
composer require -d ../testdata/php --prefer-source --no-scripts package
- Baixe pacotes rubi usando gem
- Baixe pacotes Java usando Maven
-
mvn dependency:get -Dartifact=com.google.protobuf:protobuf-java:3.5.1 -Dtransitive=false && cp ~/.m2/repository/com/google/protobuf/protobuf-java/3.5.1/protobuf-java-3.5.1.jar ./
get_versions
- Run Get_versions Job para obter versões importantes para a lista de pacotes
-
python main.py get_versions ../data/pypi.with_stats.popular.csv ../data/pypi.with_stats.popular.versions.csv -l python -c /data/maloss/info/python -
python main.py get_versions ../data/maven.popular.csv ../data/maven.popular.versions.csv -c /data/maloss/info/java -l java
- Run Get_versions Job para obter todas as versões para a lista de pacotes
-
python main.py get_versions ../data/2019.07/pypi.csv ../data/2019.07/pypi.versions.csv -c /data/maloss/info-2019.07/python -l python --max_num -1
- Run Get_versions Job para obter todas as versões para a lista de pacotes e incluir seu tempo também
-
python main.py get_versions ../data/2019.07/pypi.csv ../data/2019.07/pypi.versions.csv -c /data/maloss/info-2019.07/python -l python --max_num -1 --with_time
- Run Get_versions Job para obter versões recentes para a lista de pacotes
-
python main.py get_versions ../data/2019.07/pypi.csv ../data/2019.07/pypi.versions.csv -c /data/maloss/info-2019.07/python -l python --max_num 100 --min_gap_days 1
get_author
- Run Get_Author Job para o autor para obter a lista de pacotes
-
python main.py get_author ../data/pypi.with_stats.popular.csv ../data/pypi.with_stats.with_author.popular.csv -l python -c /data/maloss/info/python
get_dep
- Run Get_Dep Job para listar dependências para pacotes Python
-
python main.py get_dep -l python -n protobuf -c ../testdata -
python main.py get_dep -l python -n scrapy -c ../testdata
- Run Get_Dep Job para listar dependências para pacotes JavaScript
-
python main.py get_dep -l javascript -n eslint -c ../testdata
- Run Get_Dep Job para listar dependências para pacotes de rubi
-
python main.py get_dep -l ruby -n protobuf -c ../testdata
- Run Get_Dep Job para listar dependências para pacotes PHP
-
python main.py get_dep -l php -n designsecurity/progpilot -c ../testdata
- Run Get_Dep Job para listar dependências para pacotes Java
-
python main.py get_dep -l java -n com.google.protobuf/protobuf-java -c ../testdata
get_stats
- Obtenha as estatísticas para pacotes especificados
-
python main.py get_stats ../malware/npmjs-mal-pkgs.june2019.txt ../malware/npmjs-mal-pkgs.june2019.with_stats.txt.new -m npmjs
- Obtenha as estatísticas para pacotes especificados
- `python main.py get_stats ../malware/pypi-mal-pkgs.txt ../malware/pypi-mal-pkgs.with_stats.txt -m pypi
build_dep
- Construa o gráfico de dependência
-
python main.py build_dep -c /data/maloss/info/python -l python ../data/pypi.with_stats.csv ../airflow/data/pypi.with_stats.dep_graph.pickle
- Crie o gráfico de dependência com versões (a opção - -Record_version )
-
python main.py build_dep -c /data/maloss/info/python -v -l python ../data/pypi.with_stats.popular.versions.csv ../airflow/data/pypi.with_stats.popular.versions.dep_graph.pickle
build_author
- Construa o gráfico do pacote de autores para pacotes populares em Pypi/npmjs/rubygems/packagist
-
python main.py build_author ../data/author_pkg_graph.popular.pickle -i ../data/pypi.with_stats.with_author.popular.csv ../data/npmjs.with_stats.with_author.popular.csv ../data/rubygems.with_stats.with_author.popular.csv ../data/packagist.with_stats.with_author.popular.csv -l python javascript ruby php -t ../data/top_authors.popular.json
- Construa o gráfico do pacote do autor para todos os pacotes em Pypi/npmjs/rubygems/packagist/maven
-
python main.py build_author ../data/author_pkg_graph.pickle -i ../data/pypi.with_stats.with_author.csv ../data/npmjs.with_stats.with_author.csv ../data/rubygems.with_stats.with_author.csv ../data/packagist.with_stats.with_author.csv ../data/maven.with_author.csv -l python javascript ruby php java -t ../data/top_authors.json
split_graph
- Divida o gráfico de dependência
- descompactar os arquivos de picles primeiro
-
tar -zxf ../airflow/data/pypi.with_stats.dep_graph.pickle.tgz
- dividido em n cópias
-
python main.py split_graph ../airflow/data/pypi.with_stats.dep_graph.pickle ../airflow/pypi_dags/ -d ../airflow/data/pypi_static.py -n 20 -
python main.py split_graph ../airflow/data/pypi.with_stats.popular.versions.dep_graph.pickle ../airflow/pypi_version_dags/ -d ../airflow/data/pypi_static_versions.py -n 10 -
python main.py split_graph ../airflow/data/maven.dep_graph.pickle ../airflow/maven_dags/ -d ../airflow/data/maven_static.py -n 20
- dividido em n cópias e K pastas
-
python main.py split_graph ../airflow/data/maven.popular.versions.dep_graph.pickle.tgz ../airflow/maven_version_dags/ -d ../airflow/data/maven_static_versions.py -n 80 -k 4
- dividir o sub -saque que contém nós de sementes
-
python main.py split_graph ../airflow/data/pypi.with_stats.dep_graph.pickle ../airflow/pypi_dags/ -d ../airflow/data/pypi_static.py -s ../data/pypi.with_stats.popular.csv
instalar
- Execute o trabalho de instalação para instalar pacotes python e capturar traços
-
python main.py install -n protobuf -l python -c ../testdata -o ../testdata
- Execute o trabalho de instalação para instalar pacotes JavaScript e capturar traços
-
python main.py install -n eslint -l javascript -c ../testdata -o ../testdata
- Execute o trabalho de instalação para instalar pacotes de rubi e capturar traços
-
python main.py install -n protobuf -l ruby -c ../testdata -o ../testdata
- Execute o trabalho de instalação para instalar pacotes PHP e capturar traços
-
python main.py install -n designsecurity/progpilot -l php -c ../testdata -o ../testdata
- Execute o trabalho de instalação para instalar pacotes java e capturar traços
-
python main.py install -n com.google.protobuf/protobuf-java -l java -c ../testdata -o ../testdata
astgen
- Execute o trabalho ASTGEN para calcular os pacotes AST para Python e Python3
-
python main.py astgen ../testdata/test-eval-exec.py ../testdata/test-eval-exec.py.out -c ../config/test_astgen_python.config -
python main.py astgen ../testdata/html5lib-1.0.1.tar.gz ../testdata/html5lib-1.0.1.tar.gz.out -c ../config/test_astgen_python.config -
python main.py astgen ../testdata/python-taint-0.40.tar.gz ../testdata/python-taint-0.40.tar.gz.out -c ../config/test_astgen_python.config
- Execute o trabalho ASTGEN para calcular os pacotes AST para JavaScript
-
python main.py astgen ../testdata/test-eval.js ../testdata/test-eval.js.out -c ../config/test_astgen_javascript.config -l javascript -
python main.py astgen ../testdata/urlgrey-0.4.4.tgz ../testdata/urlgrey-0.4.4.tgz.out -c ../config/test_astgen_javascript.config -l javascript
- Execute o trabalho ASTGEN para calcular os pacotes AST para PHP
-
cd static_proxy && php astgen.php -c ../../config/test_astgen_php.config.bin -i ../../testdata/test-eval-exec.php -o ../../testdata/test-eval-exec.php.out.bin && cd .. -
python main.py astgen ../testdata/test-eval-exec.php ../testdata/test-eval-exec.php.out -c ../config/test_astgen_php.config -l php -
python main.py astgen ../testdata/test-backtick.php ../testdata/test-backtick.php.out -c ../config/test_astgen_php.config -l php -
python main.py astgen ../testdata/php/vendor/guzzlehttp/guzzle/ ../testdata/guzzlehttp_guzzle.out -c ../config/test_astgen_php.config -l php
- Execute o trabalho ASTGEN para calcular os pacotes AST para Ruby
-
cd static_proxy && ruby astgen.rb -c ../../config/test_astgen_ruby.config.bin -i ../../testdata/test-eval.rb -o ../../testdata/test-eval.rb.out.bin && cd .. -
python main.py astgen ../testdata/test-eval.rb ../testdata/test-eval.rb.out -c ../config/test_astgen_ruby.config -l ruby
- Execute o trabalho ASTGEN para calcular os pacotes AST para Java
-
cd static_proxy/astgen-java && java -jar target/astgen-java-1.0.0-jar-with-dependencies.jar -help && cd ../../ -
cd static_proxy/astgen-java && java -jar target/astgen-java-1.0.0-jar-with-dependencies.jar -inpath ../../../testdata/Test.jar -outfile ../../../testdata/Test.jar.out -intype JAR -config ../../../config/astgen_java_smt.config -process_dir ../../../testdata/Test.jar && cd ../../ -
python main.py astgen ../testdata/protobuf-java-3.5.1.jar ../testdata/protobuf-java-3.5.1.jar.out -c ../config/test_astgen_java.config -l java -
python main.py astgen ../testdata/Test.jar ../testdata/Test.jar.out -c ../config/astgen_java_smt.config -l java
astfilter
- Use as configurações intituladas
../config/astgen_XXX_smt.config para cada idioma (por exemplo ../config/astgen_javascript_smt.config ) no trabalho de astfilter - Execute o trabalho astfilter para avaliar o uso da API para o pacote Python/Pypi e seus pacotes dependentes
-
python main.py astfilter -n protobuf -c $python_config -d ../testdata/ -o ../testdata/
- Execute o trabalho astfilter para avaliar o uso da API para o pacote JavaScript/NPMJS e seus pacotes dependentes
-
python main.py astfilter -n eslint-scope -c $javascript_config -d ../testdata/ -o ../testdata/ -l javascript
- Execute o trabalho astfilter para avaliar o uso da API para o pacote PHP/Packagist e seus pacotes dependentes
-
python main.py astfilter -n designsecurity/progpilot -c $php_config -d ../testdata/ -o ../testdata/ -l php
- Execute o trabalho astfilter para avaliar o uso da API para o pacote Ruby/Rubygems e seus pacotes dependentes
-
python main.py astfilter -n protobuf -c $ruby_config -d ../testdata/ -o ../testdata -l ruby
- Execute o trabalho astfilter para avaliar o uso da API para o pacote Java/Maven e seus pacotes dependentes
-
python main.py astfilter -n com.google.protobuf/protobuf-java -c $java_config -d ../testdata/ -o ../testdata -l java
Taint
- Execute análises de mancha para pacotes específicos
-
python main.py taint -n json -d /data/maloss/info/ruby -o /data/maloss/result/ruby -l ruby -c ../config/astgen_ruby_smt.config
- Execute a análise manchada para pacotes específicos e ignore suas dependências
-
python main.py taint -n urllib -i ../malware/pypi-samples/urllib-1.21.1.tgz -d /data/maloss/info/python -o ./ -l python -c ../config/astgen_python_smt.config -
python main.py taint -n django-server -i ../malware/pypi-samples/django-server-0.1.2.tgz -d /data/maloss/info/python -o ./ -l python -c ../config/astgen_python_smt.config -
pip download --no-binary :all: --no-deps trustme && python main.py taint -n trustme -i trustme-0.5.1.tar.gz -d /data/maloss/info/python -o ./ -l python -c ../config/astgen_python_smt.config -
python main.py taint -n eslint-scope -i ../malware/npmjs-samples/eslint-scope-3.7.2.tgz -d /data/maloss/info/javascript -o ./ -l javascript -c ../config/astgen_javascript_smt.config -
python main.py taint -n custom8 -i static_proxy/jsprime/jsprimetests/custom8.js -d /data/maloss/info/javascript -o ./ -l javascript -c ../config/astgen_javascript_smt.config -
python main.py taint -n stream-combine -i ../malware/npmjs-samples/stream-combine-2.0.2.tgz -d /data/maloss/info/javascript -o ./ -l javascript -c ../config/astgen_javascript_smt.config -
python main.py taint -n test-eval-exec -i ../testdata/test-eval-exec.php -d /data/maloss/info/php -o ./ -l php -c ../config/astgen_php_smt.config -
python main.py taint -n test-multiple-flows -i static_proxy/progpilot/projects/tests/tests/flows/ -d /data/maloss/info/php -o ./ -l php -c ../config/astgen_php_smt.config -
python main.py taint -n test-flow -i ../testdata/test-flow.php -d /data/maloss/info/php -o ./ -l php -c ../config/astgen_php_smt.config
- Execute a análise mancha para um arquivo de entrada específico
-
python main.py taint -n active-support -l ruby -c ../config/astgen_ruby_smt.config -i ../malware/rubygems-samples/active-support-5.2.0.gem -o ./ -
python main.py taint -n bootstrap-sass -l ruby -c ../config/astgen_ruby_smt.config -i ../malware/rubygems-samples/bootstrap-sass-3.2.0.3.gem -o ./ -
python main.py taint -n brakeman-rails4 -l ruby -c ../config/astgen_ruby_smt.config -i ../testdata/rails4/ -o ./
filtro_pkg
- Filtrar pacotes com base no uso da API ou presença de fluxo
-
python main.py filter_pkg ../data/pypi.with_stats.csv ../data/pypi.with_stats.with_taint_apis.csv -c ../config/astgen_python_taint_apis.config -o /data/maloss/result/python -d /data/maloss/info/python -l python -
python main.py filter_pkg ../data/rubygems.with_stats.csv ../data/rubygems.with_stats.with_taint_apis.csv -c ../config/astgen_ruby_taint_apis.config -o /data/maloss/result/ruby -d /data/maloss/info/ruby -l ruby -
python main.py filter_pkg ../data/npmjs.with_stats.csv ../data/npmjs.with_stats.with_taint_apis.csv -c ../config/astgen_javascript_taint_apis.config -o /data/maloss/result/javascript -d /data/maloss/info/javascript -l javascript -
python main.py filter_pkg ../data/packagist.with_stats.csv ../data/packagist.with_stats.with_taint_apis.csv -c ../config/astgen_php_taint_apis.config -o /data/maloss/result/php -d /data/maloss/info/php -l php -
python main.py filter_pkg ../data/maven.csv ../data/maven.with_taint_apis.csv -c ../config/astgen_java_taint_apis.config -o /data/maloss/result/java -d /data/maloss/info/java -l java
estático
- Execute o trabalho estático para realizar análises de astfilter, manchas e perigos para pacotes Python e Python3
-
python main.py static -n protobuf -c $python_config -d ../testdata/ -o ../testdata/
dinâmico
- Execute o trabalho dinâmico para instalar, os pacotes de Python principal e exercer e capturar traços
-
python main.py dynamic -n protobuf -l python -c ../testdata -o ../testdata
Interpret_trace
- Run Interpret Trace Job para analisar traços dinâmicos e despejá -los por PKG/versão Protobuf Saída Arquivos
- Nota: Sudo é necessário para iniciar o Falco para analisar traços
-
sudo python main.py interpret_trace -l python --trace_dir /data/maloss1/sysdig/pypi -c /data/maloss/info/python -o /data/maloss/result/python -p 8
compare_ast
- Compare o AST de arquivos de entrada especificados e pacotes para permissões, APIs etc.
-
python main.py compare_ast -i ../malware/npmjs-samples/flatmap-stream-0.1.1.tgz ../benignware/npmjs-samples/flatmap-stream-0.1.0.tgz -o ../testdata/ ../testdata/flatmap-stream.json -l javascript -c ../config/astgen_javascript_smt.config -
python main.py compare_ast -i ../testdata/test-backtick.php ../testdata/test-eval-exec.php -o tempout/ tempout/test_eval_backtick.json -l php -c ../config/astgen_php_smt.config -
python main.py compare_ast -i ../malware/rubygems-samples/bootstrap-sass-3.2.0.3.gem ../benignware/rubygems-samples/bootstrap-sass-3.2.0.2.gem -l ruby -c ../config/astgen_ruby_smt.config -o ../testdata/ --outfile ../testdata/bootstrap-sass-compare.txt -
python main.py compare_ast -i ../malware/rubygems-samples/active-support-5.2.0.gem ../benignware/rubygems-samples/activesupport-5.2.3.gem -c ../config/astgen_ruby_smt.config -o ../testdata/ --outfile ../testdata/activesupport-compare.txt -l ruby
filtro_versões
- Versões do pacote de filtro com base nos resultados do compare_ast, para permitir análises adicionais, como análise de manchas
-
python main.py filter_versions ../data/2019.07/packagist.versions.with_time.csv ../data/2019.07/packagist_ast_stats.apis.json ../data/2019.07/packagist.versions.with_time.filtered_loose_apis.csv
compare_hash
- Compare o valor de hash das mesmas versões de pacotes em diferentes gerentes de pacotes
-
python main.py compare_hash -i ../data/maven.csv ../data/jcenter.csv -d /data/maloss/info/java /data/maloss/info/jcenter -o ../data/maven_jcenter.json -
python main.py compare_hash -i ../data/jitpack.csv ../data/jcenter.csv -d /data/maloss/info/jitpack /data/maloss/info/jcenter -o ../data/jitpack_jcenter.json
- Compare o valor de hash das mesmas versões de pacotes e seus hashs de conteúdo ou permissões de API em diferentes gerentes de pacotes
-
python main.py compare_hash -i ../data/jitpack.csv ../data/jcenter.csv -d /data/maloss/info/jitpack /data/maloss/info/jcenter -o ../data/jitpack_jcenter_filtered.json --inspect_content -
python main.py compare_hash -i ../data/jitpack.csv ../data/jcenter.csv -d /data/maloss/info/jitpack /data/maloss/info/jcenter -o ../data/jitpack_jcenter_filtered.json --inspect_api -c ../config/astgen_java_smt.config -
python main.py compare_hash -i ../data/jitpack.csv ../data/jcenter.csv -d /data/maloss/info/jitpack /data/maloss/info/jcenter -o ../data/jitpack_jcenter_filtered_api.json --inspect_api -c ../config/astgen_java_smt.config --compare_hash_cache ../data/jitpack_jcenter_filtered.json
Interpret_Result
- Coletar e plotar estatísticas da API
-
python main.py interpret_result --data_type api -c /data/maloss/info/python -o /data/maloss/result/python -l python ../data/2019.01/pypi.with_stats.csv ../data/pypi_api_stats.json -
python main.py interpret_result --data_type api -c /data/maloss/info/python -o /data/maloss/result/python -l python ../data/2019.01/pypi.with_stats.popular.csv ../data/pypi_pop_api_stats.json -
python main.py interpret_result --data_type api -c /data/maloss/info/python -o /data/maloss/result/python -l python ../data/2019.01/pypi.with_stats.csv ../data/pypi_api_mapping.json -d --detail_filename
- Coletar e plotar estatísticas de domínio
-
python main.py interpret_result --data_type domain -c /data/maloss/info/python -o /data/maloss/result/python -l python ../data/2019.06/pypi.csv ../data/2019.06/pypi_domain_stats.json -
python main.py interpret_result --data_type domain -c /data/maloss/info/python -o /data/maloss/result/python -l python ../data/2019.06/pypi.csv ../data/2019.06/pypi_domain_mapping.json -d
- Colete as estatísticas de dependência pré-gerada
-
python main.py interpret_result --data_type dependency -l python ../data/pypi.with_stats.popular.csv ../data/pypi_pop_dep_stats.json
- Colete os resultados da comparação da versão cruzada, pode filtrar por permissões, APIs etc.
-
python main.py interpret_result --data_type compare_ast -c /data/maloss/info/python -o /data/maloss/result/python -l python ../data/2019.06/pypi.with_stats.popular.csv ../data/2019.06/pypi_compare_ast_stats.json -
python main.py interpret_result --data_type compare_ast -c /data/maloss/info-2019.07/javascript -o /data/maloss/result-2019.07/javascript -l javascript ../data/2019.07/npmjs.csv ../data/2019.07/npmjs_ast_stats.json --compare_ast_options_file ../data/2019.07/compare_ast_options.json
- Colete metadados/resultados estáticos/dinâmicos e despeje pacotes suspeitos
-
python main.py interpret_result --data_type install_with_network -c /data/maloss/info/javascript -o /data/maloss/result/javascript -l javascript -m npmjs ../data/2019.06/npmjs.csv ../data/2019.06/npmjs.install_with_network.json
- Colete os resultados da dependência reversa
-
python main.py interpret_result --data_type reverse_dep -l javascript -m npmjs ../airflow/data/high_impact.csv ../airflow/data/high_impact_npmjs.json -
python main.py interpret_result --data_type reverse_dep -l python -m pypi ../airflow/data/high_impact.csv ../airflow/data/high_impact_pypi.json -
python main.py interpret_result --data_type reverse_dep -l ruby -m rubygems ../airflow/data/high_impact.csv ../airflow/data/high_impact_rubygems.json
- Colete os metadados/estáticos/compare_ast Resultados e despeje pacotes suspeitos
-
python main.py interpret_result --data_type correlate_info_api_compare_ast -c /data/maloss/info-2019.07/javascript -o /data/maloss/result-2019.07/javascript -l javascript -m npmjs -s ../data/2019.07/npmjs_skip_list.json ../data/2019.07/npmjs_ast_stats.json ../data/2019.07/npmjs_correlate_info_api_compare_ast.json -
python main.py interpret_result --data_type correlate_info_api_compare_ast -c /data/maloss/info-2019.07/php -o /data/maloss/result-2019.07/php -l php -m packagist -s ../data/2019.07/packagist_skip_list.json ../data/2019.07/packagist_ast_stats.json ../data/2019.07/packagist_correlate_info_api_compare_ast.json -
python main.py interpret_result --data_type taint -c /data/maloss/info-2019.07/php -o /data/maloss/result-2019.07/php -l php ../data/2019.07/packagist.csv ../data/2019.07/packagist_flow_stats.json
grep_pkg
- Grep através de pacotes
-
python main.py grep_pkg ../data/2019.07/rubygems.csv ../data/2019.07/rubygems.csv.pastebin.com pastebin.com -l ruby -p 80 -
python main.py grep_pkg ../data/2019.07/npmjs.csv ../data/2019.07/npmjs.csv.pastebin.com pastebin.com -l javascript -p 20
aceleração
- Meça a aceleração se beneficia dos resumos
-
python main.py speedup ../data/2019.01/pypi.with_stats.popular.csv speedup.log -l python
Ferramenta
Varredura em toda a Internet
Estatísticas para diferentes gerentes de pacotes
- Estatísticas de Pypi
- Estatísticas de Pypi de pacotes
- Estatísticas npmjs
- Estatísticas de Rubygems
- Portal não oficial para downloads de rubygems
- NUGET STATS
- Estatísticas de Packagist
- Estatísticas do Maven (usado por outros pacotes)
- MAVEN Estatísticas rápidas
Ferramentas de análise estática para diferentes idiomas
- Resumo da lista
- 13 Ferramentas para verificar o risco de segurança de dependências de código aberto
- Análise incrível de malware: uma lista com curadoria de impressionantes ferramentas e recursos de análise de malware
- Uma lista com curadoria de linters, verificadores de qualidade de código e outras ferramentas de análise estática para várias linguagens de programação
- PMD: Um analisador de código estático extensível em linguagem cruzada. https://pmd.github.io
- PMD não suporta análises interprocedurais agora
- Conjunto de regras de segurança personalizado para a popular ferramenta de análise estática Java.
- Python
- Uma ferramenta de análise estática para detectar vulnerabilidades de segurança em aplicativos da Web Python
- Bandit é uma ferramenta projetada para encontrar problemas de segurança comuns no código Python
- Php
- Uma lista revisada de ferramentas úteis de análise estática do PHP
- Detectar arquivos PHP potencialmente maliciosos
- Análise de Taint para PHP
- Auditoria de segurança PHPCS
- Uma ferramenta de análise estática para segurança
- API e documentação para progpilot
- Variáveis globais PHP - Superglobals
- Taint é uma extensão PHP, usada para detectar dinamicamente códigos XSS
- Rubi
- Verifique se há problemas de segurança para rubi
- Travando rubi no cofre
- Um scanner de vulnerabilidade de segurança de análise estática para aplicativos Ruby on Rails, GitHub
- O Brakeman Pro é a melhor maneira de investigar a postura de segurança do código de aplicação Ruby on Rails.
- Dawn é um scanner de segurança de análise estática para aplicativos da web escrita para rubi. Ele suporta Sinatra, Padrino e Ruby on Rails Frameworks.
- Qualidade é uma ferramenta que executa verificações de qualidade em seu código usando ferramentas comunitárias
- Npmjs
- 6 Ferramentas para digitalizar o Node.js Aplicativo de vulnerabilidade de segurança
- Ferramenta de linha de comando da plataforma de segurança do nó https://nodesecurity.io
- Uma ferramenta de análise de segurança estática JavaScript
- Blackhat 2013 Talk for JSPrime
- Jshint é uma ferramenta que ajuda a detectar erros e possíveis problemas em seu código JavaScript
- Uma primeira olhada no Firefox OS Security
- Wala é lento
- O JSPRIME também é capaz de realizar análises de fluxo de dados, mas a arquitetura é extremamente difícil de estender.
- Scanjs, escrito internamente por Mozilla, é o mais próximo em espírito do nosso.
- O NodeJSScan é um scanner de código de segurança estático para aplicativos Node.js.
- O fluxo é um verificador do tipo estático para JavaScript
- O JSFlow é um intérprete JavaScript aprimorado por segurança para rastreamento fino do fluxo de informações.
- Uma ferramenta para estudar malware JavaScript.
- Uma ferramenta de análise de malware JavaScript
- Estrutura de análise escalável para ECMAScript
- Depreciado: ferramenta de análise estática para código JavaScript.
- Analisando JavaScript e a Web com Wala
- JSUNPACK: JSUNPACK-N emula a funcionalidade do navegador ao visitar um URL
- Coleção de quase 40.000 amostras de malware JavaScript
- JSAI: Uma plataforma de análise estática para JavaScript
- Clone of JSAi Static Analysis Framework
- Análise estática de aplicativos JavaScript de Node.js, orientado a eventos
- Estrutura de análise dinâmica para JavaScript
- Java
- Estrutura de detecção de malware Android
- Código para papel de detecção de malware Android profundo
- FlowDroid estático Rastreador de fluxo de dados
- CSharp
- Código de segurança Scan - Analisador de código estático para .NET
- Ferramentas de gerenciamento de dependência
- Bower: um gerente de pacotes para a web
- Yarn: Gerenciamento de dependência rápido, confiável e seguro
- Análise dinâmica
- Dynamorio: Plataforma de ferramenta de instrumentação dinâmica
- Orquestração de Teste de Segurança de Aplicativos Dinâmicos (DASTO)
- Valgrind é uma estrutura de instrumentação para a construção de ferramentas de análise dinâmica
- Um plugin de rastreamento em mancha para a ferramenta de verificação de memória Valgrind
- Estrutura de análise
- Estrutura de digitalização/análise de arquivos modular: suporte clamav etc.
- Um serviço gratuito de análise de malware para a comunidade que detecta e analisa ameaças desconhecidas usando uma tecnologia única de análise híbrida.
- Mais de 5200 projetos de código aberto e 25000 desenvolvedores usam varredura de cobertura
Analisadores ast para diferentes idiomas
- Python Ast Parser, use Ast.parse
- ast.parse
- parâmetros AST.PARSE
- anote o python ast: asttoken
- Escrevendo o script de configuração
- JavaScript AST Parser, use Esprima
- Estree: Javascript Parser API Especificações
- Respostas Consulte Spidermonkey e Esprima
- Spidermonkey
- Esprima, comparação Esprima
- Bolsa, Bolsa vs Esprima
- Babel Compiler, baseado no bolota
- Porto de Python de Esprima
- Como o NPM lida com o campo "Scripts"
- Especificação da API Node.js
- Javascript Standard Objects por categoria
- Índice de Métodos JavaScript
- Ruby Ast Parser
- Rubi em vinte minutos
- Um analisador de rubi, baixar estatísticas
- ruby_parser
- Comparação entre Parser e Ruby_parser
- Usando um analisador de rubi para encontrar sintaxe depreciada
- A função de avaliação rubi pode ser perigosa
- Executivo rubi, sistema, %x () e backticks
- Como executar um script durante a instalação do GEM?
- Java Ast Parser
- Fuligem
- Wala
- Execute um script após a instalação do Maven
- Funções Java exploráveis
- C# AST Parser
- Microsoft Binskim
- Analisador de código líquido automatizado
- O Verocode suporta a análise estática de vários idiomas
- CANCO DE CÓDIGO DE SEGURANÇA
- guarda de segurança
- PUMA SCAN
- Comparação dos analisadores de código C#
- PHP AST Parser
- Php-parser
- php-aT
- Gerar AST de um arquivo de origem PHP
- phpjoern
- Funções de PHP exploráveis
- Funções PHP perigosas
- Desativar funções PHP perigosas
- Scripts compositores para análise dinâmica
- C/C ++ AST Parser
Recurso
- Mirror de Taobao da NPM,
- Stanford Mirror of Pypi
- Espelhos de registros na China
- Mantendo o registro da NPM incrível: como o NPMJS funciona?
- Consulta NPMJS Registry via API
- NPM Pesquisar com versões de história
- Assuntos de precisão numérica: como o download da npm conta funciona
- Documentos da API NPMJS
- A CLI de Syn ajuda você a encontrar e consertar vulnerabilidades conhecidas em suas dependências, tanto ad hoc quanto parte do seu sistema de IC
- Usando o espelho da NPM europeia
- O que aprendi analisando versões de 1,65m dos módulos Node.js no NPM
- Sites de instantâneos do Archive.org e pode ser usado para medir sites de vítimas
- Rastreamento de eventos para Windows (ETW)
- Auditoria do Linux
- Auditoria de ajuste: Auditoria Linux de alto desempenho
- Linux Audit Framework 101 - Regras básicas para configuração
- Auditoria Linux: Auditando a configuração da rede
- Como usar o sistema de auditoria Linux no CentOS 7
- Capítulo 7. Auditoria do sistema
- Strace
- Analisador de Strace
- Python-ptrace é uma ligação de Python da biblioteca PTRACE
- Pystrace - Ferramentas Python para analisar e analisar arquivos de saída de cordas
- analisa a saída do Strace
- Perfil e visualização com gnu strace
- Criei uma gramática BNF para a saída e usei o BNFC para gerar automaticamente um analisador no C ++.
- Saída estruturada para Strace
- como strace, mas para o código rubi
- Pytrace é um rastreador rápido do Python. Ele registra chamadas de função, argumentos e valores de retorno.
- PHP-Strace ajuda a rastrear o Segfaults na execução de processos de PHP
- Como definir os caracteres de saída Strace Largura da string como mais longa?
-
-s opção especifica o tamanho máximo da string para imprimir -
-v Opção Imprima argv, stat, terios, etc. args
- Google Summer of Code para saída Strace
- Participação de Strace no GSOC 2014
- Saída verdadeiramente estruturada para Strace no GSOC 2016
- DOC para GSOC 2016
- DTRACE para Linux
- Código para a plataforma cruzada, fonte única, implementação de opendtrace
- O FTRACE é um rastreador interno projetado para ajudar desenvolvedores e designers de sistemas para encontrar o que está acontecendo dentro do kernel.
- Qual é a diferença entre dtrace e strace
- Sysdig vs dtrace vs strace: uma discussão técnica
- Osquery: Process e Socket Auditing com Osquery
- Informações coletadas por Osquery (tabelas)
- Uma lista com curadoria de ferramentas e recursos para resposta a incidentes de segurança, com o objetivo de ajudar analistas de segurança e equipes do DFIR.
- 1º: Como estão as equipes atualmente usando osquery?
- 2º: Quais são os pontos problemáticos atuais de Osquery?
- 3º: O que você deseja que Osquery pudesse fazer?
- O Kolide Cloud é uma solução de monitoramento de terminais que aproveita e instrumenta o projeto Osquery de código aberto do Facebook. Experimente hoje; Completamente gratuito para seus 10 primeiros dispositivos.
- Frota Kolide para monitorar máquinas de osquery
- Suporte do Docker em Osquery
- Dockerfiles para osquery em contêiner
- UPTYCS: proteger recipientes: usando osquery para resolver novos desafios colocados por serviços de orquestração hospedados
- UPTYCS: Docker e Osquery
- Osquery for Security: Introdução ao Osquery - Parte 1
- Osquery for Security - Parte 2
- Osquery - Windows, MacOS, Linux Monitoring e Detecção de Intrusão
- Docker e Osquery
- Introdução ao Osquery: perguntas frequentes para iniciantes
- Configuração de Osquery de Palantir
- SYSDIG: Ferramenta de exploração e solução de problemas do sistema Linux com suporte de primeira classe para contêineres
- Selinux, Seccomp, Sysdig Falco e você: uma discussão técnica
- Monitoramento de Prometeu e Monitor Sysdig: uma comparação técnica
- Dia 3 - Então, servidor, conte -me sobre você. Uma introdução a Facter, Osquery e Sysdig
-
Whereas Facter and osquery are predominantly about querying infrequently changing information, Sysdig is much more suited to working with real-time data streams – for example, network or file I/O, or tracking errors in running processes.
- Monitoramento de contêineres: Prometheus e Grafana vs. Monitor Sysdig e Sysdig
- Monitoramento de contêineres com sysdig
- Guia do usuário do SYSDIG
- Sysdig Falco
- Regras do Sysdig Falco
- Detectando o Jacking de criptografia com o Falco de Sysdig
- Sysdig + Logstash + Elasticsearch
- Sysdig + alces (potencial)
- Enviando Kubernetes & Docker Events para Elasticsearch e Splunk usando Sysdig
- Segurança de contêiner de tempo de execução - como implementar segurança de contêineres de código aberto
- Wtf meu contêiner apenas gerou uma concha
- Go-Auditd
- Go-Audit é uma alternativa ao daemon Auditd que envia muitas distantes
- O sistema de monitoramento de Prometeu e o banco de dados de séries temporais.
- Site oficial de Prometheus
- Go-Audit-container
- FIM e System Chamadas Auditoria em escala em uma grande implantação de contêineres
- Kubernetes: Kubernetes é um sistema de código aberto para automatizar a implantação, o escala e o gerenciamento de aplicativos de contêiner.
- Facter: Colete e exibir fatos do sistema
- Encontre arquivos PHP exploráveis por parâmetro Fuzzing and Function Call Rasting
- Um analisador OS X para projeto de sandbox cuco
- Sandbox Cuckoo é o principal sistema de análise de malware automatizado de código aberto
- Bibliotecas nativas com maven
- MAVEN: Bundling e desembalar bibliotecas nativas
- Plugin de arquivo nativo para maven
- Sistema de arquivos elásticos (EFS) montado fora da AWS
- Amazon EFS Update-Acesso local via conexão direta
- A linguagem de programação Go
- Devido ao modo como as importações são importantes, uma câmara de compensação central como Maven ou NPM simplesmente não é necessária.
- Projeto para pesquisa Go, um mecanismo de pesquisa para encontrar pacotes populares e relevantes.
- Ruby (finalmente) ganha em popularidade, mas vá platôs
- Principais idiomas: java, c, c ++, python, c#, php, javascript, rubi
- Referências de análise estática
- Inferência de tipo automatizado para programas dinamicamente tipados
- Uma ferramenta de análise estática para encontrar erros em aplicativos PHP
- IBM AppScan permite a digitalização de código/código compilado para vulnerabilidades
- Línguas de suporte do AppScan: suporta C/C ++, .NET, Java, JSP, JavaScript, Php, ASP, Python
- IBM Security AppScan Fonte 9.0.3.10 Disponível no CIRL CENTRAL
- Versões de origem do AppScan disponível
- Execução restrita
- Python de Sandbox
- Ruby Sandboxing vs. integração de uma linguagem de script
- Preso - caixa de areia JS flexível
- É possível o JavaScript de Sandbox em execução no navegador?
- Existe uma maneira de executar o código PHP em uma caixa de areia de dentro do PHP
- Runkit_sandbox
- Código Java Sandboxing
- Executar um método em Java com permissões restritas
- AWS LOTE JOGADOS
- Tutorial em lote da AWS
- Lote AWS: simplificando a computação em lote na nuvem
- Exemplo de lote da AWS
- EC2-Spot-AWS Batch
- SQS-EC2-Spot-Fleet-AutoScaling
- DAG do fluxo de ar
- Dag paralelo de tarefas no aipo de Python
- Fluxo de ar - escalando com aipo
- DAG do fluxo de ar
- Introdução ao fluxo de ar
- Fluxo de ar em Kubernetes (Parte 1): Um tipo diferente de operador
- Uma imagem do docker e arquivos de configuração de Kubernetes para executar o Airflow em Kubernetes
- Um guia sobre como construir um servidor/cluster de fluxo de ar
- Conselhos de segurança
- Problemas de rubygems
- NPMPJS AVISORES DE SEGURANÇA
- Pacotes Python
- Pacotes Packagist
- Pacotes maven
- Pacotes jCenter
- Espelho de dados vulndb
- Faixa de dependência
- Verificação de dependência
- Consultor de segurança da Microsoft
Referência
- Contagem de módulos
- Um site rápido para rastrear o número de módulos em vários repositórios
- site de erros de digitação
- Tese de erros de digitação
- Pipoca Debian
- Pacotes Pypi considerados maliciosos
- Typo de python agachamento
- Typo de php agachamento
- JCENTER TYPO COMPRIMENTO
- Rubygems datilógrafos
- Caçando pacotes de NPM maliciosos
- Pacotes NPM maliciosos
- Lista de todos os pacotes Pypi
- Malware cruzado no registro da NPM
- Pacotes de código aberto com intenção maliciosa
- Como assumir o computador de qualquer desenvolvedor Java (ou Clojure ou Scala)
- Canto de segurança com SNYK: as seis principais vulnerabilidades em Maven e NPM
- Outra distro Linux envenenada com malware
- NodeJs: Execução de código remoto como um serviço
- 17 imagens do Docker de backdoors removidas do Docker Hub
- Biblioteca Python backdoord pega roubando credenciais SSH
- Eslint-Scope é o analisador de escopo Ecmascript usado no ESLint. A versão 3.7.2 foi identificada como maliciosa após uma possível aquisição da conta da NPM. A instalação do pacote malicioso levaria a vazar o token NPM do usuário.
- NPM adquire ^elevador de segurança e a plataforma de segurança do nó
- Analise o ataque da cadeia de suprimentos de decoração SSH PIP
- Arquivos .jar maliciosos hospedados no código do Google
- Dissecção de um malware Java (JRAT)
- Os pacotes potencialmente afetados pelo Eslint-Scope
- Módulos maliciosos - o que você precisa saber ao instalar pacotes NPM
- Doze bibliotecas de Python maliciosas encontradas e removidas de Pypi
- Pacotes de malware em Pypi
- Plote para roubar criptomoeda frustrada pela equipe de segurança do NPM
- Vulnerabilidade descoberta na carteira Agama de Komodo - é isso que você precisa fazer
- Pacotes de malware Pypi
- Relatar projetos que danificam outros pacotes, não aderem às diretrizes ou são maliciosos
- Coleção de backdoors do PHP
- Coleção de malware Windows
- Cobras na grama! Slithers de código malicioso no repositório Python Pypi
- Cryptojacking invade a nuvem. Como a tendência moderna da contêinerização é explorada pelos atacantes
- Esta é a lista de todos os pacotes encontrados por @maliciosos packages/núcleo e removidos do repositório por equipe npm
- Primeiros 10 principais riscos para aplicações construídas na pesquisa de arquiteturas sem servidor pela Puresec lançada
- Explorar a infraestrutura do desenvolvedor é ridiculamente fácil
- Javascript Static + Análise Dinâmica
- Técnicas de ofuscação de backdoor PHP
- Técnicas de ofuscação PHP
- Compreendendo o código ofuscado e como desactar o PHP e JavaScript
- Joomla Plugin Construtor Backdoor
- Uma dependência confusa
- API de controle de docker exposta e imagem comunitária abusada para entregar malware de mineração de criptomoedas
- Execução de código remoto malicioso backdoor descoberto no popular bootstrap-sass ruby gem
- Backdoor no plug -in Captcha afeta sites de 300k WordPress
- Backdoor encontrado no webmin, um utilitário popular baseado na Web para gerenciar servidores Unix
- DEFCON-WebMin-1920-UNA-Autenticação-Remote-Command-Execution
- Pola teria impedido o incidente de fluxo de eventos
- Os criminosos criptografadores estão usando várias técnicas para instalar moedas
- Google Analytics e Angular em scripts de roubo de cartão de crédito Magento
- PSA: Há uma versão falsa deste pacote no Pypi com código malicioso
- Barragem de digitação em rubygems Usuários de repositório de software
- Pypi 官方仓库遭遇 Solicitação 恶意包投毒
- Sourmint: código malicioso, fraude de anúncios e vazamento de dados no iOS
- Dependência de software de seqüestro Software Cadeia de suprimentos Ataque atinge mais de 35 organizações
- Sonatype Spots 275+ pacotes de npm maliciosos copiando ataques recentes da cadeia de suprimentos de software que atingem 35 organizações
- Pacotes de confusão de dependência recentemente identificados Target Amazon, Zillow e Slack; Vá além de apenas recompensas de insetos
- Confusão de dependência: como eu invadi a Apple, Microsoft e dezenas de outras empresas
- Para PIP,
--extra-index-url para pacotes internos/externos escolherá a versão com o número de versão superior - Para Gem,
gem install --source - Índice-URL Extra-Index-URL Instalar Ordem de prioridade
- Índice-URL Extra-Index-URL Instalar Ordem de Prioridade-Contd
- pywheels para Raspberry Pi
- Nome do pacote agachado: cupy-cuda112