Оглавление
- Введение
- Условие
- Разработка
- Howto
- select_pm
- select_pkg
- ползти
- edit_dist
- скачать
- get_versions
- get_author
- get_dep
- get_stats
- build_dep
- build_author
- split_graph
- установить
- Астген
- astfilter
- арестовать
- filter_pkg
- статический
- динамика
- интерпретация_trace
- интерпретация_Ресульта
- Сравните_аст
- Filter_versions
- Сравните_HASH
- grep_pkg
- ускорение
- Инструмент
- Сканирование в Интернете
- Статистика для различных менеджеров пакетов
- Инструменты статического анализа для разных языков
- Парсеры AST для разных языков
- Ресурс
- Ссылка
Введение
Этот проект анализирует проекты с открытым исходным кодом для вредоносных программ.
Из -за высокого спроса сообщества мы решаем открыть код, как сейчас, чтобы разрешить сотрудничество. Большая часть кода обновляется до мая 2019 года, что указывает на то, что некоторые компоненты могут больше не работать. Особенно компоненты, которые зависят от внешних инструментов (например, Sysdig, воздушный поток) или API (например, NPM).
Мы активно работаем над тестированием и улучшениями. Пожалуйста, найдите список Todo здесь. Чтобы запустить команды, пожалуйста, обратитесь к разделу Howto. Чтобы развернуться на машинах, обратитесь к инструкциям развертывания. Чтобы запросить доступ к образцам атаки цепочки поставок, обратитесь к инструкциям по запросу
Этот репозиторий открыт по лицензии MIT. Если вы обнаружите этот репозиторий полезным, пожалуйста, укажите нашу статью:
@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}
}
Условие
Основы
- докер
- Базовая настройка для Ubuntu
- Для другой ОС (т.е. macOS и Windows), пожалуйста, посмотрите на
setup.sh и выясните их эквивалентность
Зависимости
- Чтобы проверить и запустить проект локально, вам нужны зависимости. Есть два способа подготовки зависимостей
- Создайте изображение Maloss Docker и тестируйте внутри него
- Стройте изображение Docker
-
sudo docker build -t maloss .
- Повторно построить изображение Docker без кэша (используется при повторном строительстве изображения)
-
sudo docker build -t maloss . --no-cache
- Запустите изображение Docker и сопоставьте свой локальный корень источника.
-
sudo docker run -it --rm -v $(pwd):/code maloss /bin/bash
- Изменить на картинный корень, установленный и начните вносить изменения
- Установите зависимости локально и проверить их
- Инструкции для Ubuntu 16.04. Если вы обнаружите, что они не работают над другими системами, пожалуйста, исправьте и совершите необходимые изменения. Эти инструкции просто скопированы из DockerFile, посмотрите на него для устранения неполадок.
- Для JS и Python Static Analysis Development
-
pip install -r src/requirements.txt --user
- Для других (Todo: упростите этот гигантский список)
-
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
Разработка
Структура
- Папка «Реестры» содержит исходный код для менеджеров по зеркальному зеркальному зеркал. Чтобы запустить программу, вам понадобится 10 ТБ для NPM, 5 ТБ для PYPI и 5TB для Rubygems.
- Папка SRC содержит исходный код для статического, динамического анализа и метаданных.
- Основная папка содержит исходный код для динамической оркестровки.
- Папка воздушного потока содержит исходный код для статической оркестровки.
- Папка Sysdig содержит настройку и конфигурацию для динамической трассировки.
- Данные содержат настройку Honeypot и статистику.
- Конфигурация содержит конфигурацию для статического анализа.
- DOC содержит API, помеченные вручную, которые используются для получения конфигурации .
- TestData содержит испытательные образцы.
- ref содержит связанную работу.
- Доброкачественное программное обеспечение содержит некоторые доброкачественные пакеты.
- Вредоносное ПО содержит список вредоносных образцов, которые можно использовать для защиты.
- Maloss-Samples -это частное репо, которое содержит образцы атаки цепочки поставок и периодически обновляется. Пожалуйста, заполните форму Google, чтобы запросить доступ. Мы ответим как можно скорее.
Инструкции
- В этом проекте в настоящее время мы используем сельдерею + RabbitMQ для запуска наших метаданных и динамических анализов распределенным образом. Мы используем сельдерей Airflow + для проведения наших статических анализов.
- SRC/ папка содержит код для каждого отдельного анализа и должна быть сведена к минимуму и самостоятельно.
- В частности, для анализа статического/динамического/метаданных задания в SRC/ папке должна обрабатывать только одну упаковку и один Versoin.
- Каждый отдельный анализ должен быть разработан и содержать в этой папке.
- Основная/ папка обрабатывает распределенные вычисления для метаданных и динамического анализа.
- Мастер -узел загружает список заданий (пакеты и их версии для анализа), отправьте их в брокер Rabbitmq.
- Рабские узлы подключаются к брокеру и получают работу от брокера.
- Каждый отдельный анализ может потребоваться изменить .ENV в этой папке.
- Воздушный поток/ папки обрабатывает распределенные вычисления для статического анализа.
- Мастер -узел загружает DAG заданий (пакеты, соединенные отношениями с зависимостью), отправляют их в брокер Redis.
- Рабские узлы подключаются к TE Broker и получают работу от брокера.
- Каждый отдельный анализ может потребоваться изменить .ENV в этой папке.
- В этом проекте мы запускаем каждый анализ с использованием Docker. Следующие шаги показывают, как начать или отлаживать распределенные задания для метаданных и динамического анализа.
- на рабочем
- Создать настроенный
main/config из main/config.tmpl - Стройте изображение Docker
-
sudo docker build -t maloss .
- Повторно построить изображение Docker без кэша (используется при повторном строительстве изображения)
-
sudo docker build -t maloss . --no-cache
- Для тестирования запустите изображение Docker и прикрепите к нему
-
sudo docker run -it --rm --cap-add=SYS_PTRACE -v /tmp/result:/home/maloss/result -v /tmp/metadata:/home/maloss/metadata maloss /bin/bash
- Для производства см. Deploy.md
- на мастер
- Создать настроенный
main/config из main/config.tmpl - Начать Rabbitmq
-
cd main && sudo docker-compose --compatibility -f docker-compose-master.yml up -d
- Добавить работу в очередь
-
python detector.py install -i ../data/pypi.csv
- отладка
- Прокомментируйте линию
QUEUING = Celery в main/config , а затем задания должны работать локально и последовательно. - Точкой входа для сельдерея является
main/celery_tasks.py и точка входа для Master It main/detector.py .
- TODO: Как отлаживать статический анализ
Howto
select_pm
- Выберите менеджеров пакетов, чтобы проверить на основе порога num_pkg
select_pkg
- Выберите популярные пакеты на основе указанных критериев, таких как загрузки или использование
-
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
ползти
- Пожмите указанный диспетчер пакетов и сохранить имена пакетов
-
python main.py crawl $package_manager $outfile
- Пожмите указанный диспетчер пакетов для имен пакетов, статистику загрузки поиска и сохранение в файле
-
python main.py crawl $package_manager $outfile -s -p 24
edit_dist
- Запустите редактирование расстояния для имен пакетов
-
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
скачать
- Скачать файл Tarball с помощью PIP, ссылка
-
pip download --no-binary :all: --no-deps package
- Скачать файл TGZ с помощью NPM, ссылки
- Скачать PHP -пакеты с помощью композитора
-
composer require -d ../testdata/php --prefer-source --no-scripts package
- Скачать пакеты Ruby с помощью GEM
- Скачать пакеты Java с помощью 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
- Запустите задание get_versions, чтобы получить основные версии для списка пакетов
-
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
- Запустите задание get_versions, чтобы получить все версии для списка пакетов
-
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
- Запустите работу GET_Versions, чтобы получить все версии для списка пакетов, а также включить их время
-
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
- Запустите работу GET_Versions, чтобы получить последние версии для списка пакетов
-
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
- Запустите работу GET_Author для автора для списка пакетов
-
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
- Запустите задание get_dep для перечисления зависимостей для пакетов Python
-
python main.py get_dep -l python -n protobuf -c ../testdata -
python main.py get_dep -l python -n scrapy -c ../testdata
- Запустите задание get_dep для перечисления зависимостей для пакетов JavaScript
-
python main.py get_dep -l javascript -n eslint -c ../testdata
- Запустите задание get_dep для перечисления зависимостей для пакетов Ruby
-
python main.py get_dep -l ruby -n protobuf -c ../testdata
- Запустите задание get_dep для перечисления зависимостей для пакетов PHP
-
python main.py get_dep -l php -n designsecurity/progpilot -c ../testdata
- Запустите задание get_dep для перечисления зависимостей для Java Packages
-
python main.py get_dep -l java -n com.google.protobuf/protobuf-java -c ../testdata
get_stats
- Получите статистику для указанных пакетов
-
python main.py get_stats ../malware/npmjs-mal-pkgs.june2019.txt ../malware/npmjs-mal-pkgs.june2019.with_stats.txt.new -m npmjs
- Получите статистику для указанных пакетов
- `python main.py get_stats ../malware/pypi-mal-pkgs.txt ../malware/pypi-mal-pkgs.with_stats.txt -m pypi
build_dep
- Создайте график зависимости
-
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
- Создайте график зависимостей с версиями (опция -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
- Создайте график пакета автора для популярных пакетов в 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
- Создайте график пакета автора для всех пакетов в 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
- Разделите график зависимости
- сначала расстегнуть разар
-
tar -zxf ../airflow/data/pypi.with_stats.dep_graph.pickle.tgz
- расколоть на N копии
-
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
- разделить на N копии и k папки
-
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
- Разделите подграф, который содержит узлы семян
-
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
установить
- Запустить задание для установки пакетов Python и следов захвата
-
python main.py install -n protobuf -l python -c ../testdata -o ../testdata
- Запустите задание установки, чтобы установить пакеты JavaScript и следы захвата
-
python main.py install -n eslint -l javascript -c ../testdata -o ../testdata
- Запустите задание установки для установки Ruby Packages и следов захвата
-
python main.py install -n protobuf -l ruby -c ../testdata -o ../testdata
- Запустите задание установки для установки PHP -пакетов и следов захвата
-
python main.py install -n designsecurity/progpilot -l php -c ../testdata -o ../testdata
- Запустите задание установки для установки пакетов Java и следов захвата
-
python main.py install -n com.google.protobuf/protobuf-java -l java -c ../testdata -o ../testdata
Астген
- Запустите работу ASTGEN для вычисления AST для Python и 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
- Запустите задание ASTGEN для вычисления AST для пакетов 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
- Запустите работу ASTGEN для вычисления AST для 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
- Запустите работу ASTGEN для вычисления AST для пакетов 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
- Запустите работу ASTGEN для вычисления AST для Java Packages
-
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
- Используйте конфигурации названия
../config/astgen_XXX_smt.config для каждого языка (Eg ../config/astgen_javascript_smt.config ) в задании astfilter - Запустите работу ASTFILTER для оценки использования API для пакета Python/PYPI и его зависимых пакетов
-
python main.py astfilter -n protobuf -c $python_config -d ../testdata/ -o ../testdata/
- Запустите работу ASTFILTER для оценки использования API для пакета JavaScript/NPMJS и его зависимых пакетов
-
python main.py astfilter -n eslint-scope -c $javascript_config -d ../testdata/ -o ../testdata/ -l javascript
- Запустите работу ASTFILTER для оценки использования API для PHP/Packagist Package и его зависимых пакетов
-
python main.py astfilter -n designsecurity/progpilot -c $php_config -d ../testdata/ -o ../testdata/ -l php
- Запустите работу ASTFILTER для оценки использования API для пакета Ruby/Rubygems и его зависимых пакетов
-
python main.py astfilter -n protobuf -c $ruby_config -d ../testdata/ -o ../testdata -l ruby
- Запустите работу ASTFILTER для оценки использования API для пакета Java/Maven и его зависимых пакетов
-
python main.py astfilter -n com.google.protobuf/protobuf-java -c $java_config -d ../testdata/ -o ../testdata -l java
арестовать
- Запустите анализ Taint для конкретных пакетов
-
python main.py taint -n json -d /data/maloss/info/ruby -o /data/maloss/result/ruby -l ruby -c ../config/astgen_ruby_smt.config
- Запустите анализ Taint для конкретных пакетов и игнорируйте их зависимости
-
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
- Запустите анализ Taint для конкретного входного файла
-
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 ./
filter_pkg
- Фильтрующие пакеты на основе использования API или присутствия потока
-
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
статический
- Запустите статическую работу, чтобы выполнить Astfilter, Taint and Danger Analysis для пакетов Python и Python3
-
python main.py static -n protobuf -c $python_config -d ../testdata/ -o ../testdata/
динамика
- Запустите динамическую задание для установки, Main и упражнения Python Packages и следов захвата
-
python main.py dynamic -n protobuf -l python -c ../testdata -o ../testdata
интерпретация_trace
- Запустите интерпретацию работы трассировки, чтобы проанализировать динамические следы и сбрасывать их в pkg/версию Protobuf
- ПРИМЕЧАНИЕ: SUDO необходим для запуска FALCO, чтобы разобрать следы
-
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
Сравните_аст
- Сравните AST указанных входных файлов и пакетов для разрешений, API и т. Д.
-
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
Filter_versions
- Версии пакета фильтров на основе результатов COMPARE_AST, чтобы обеспечить дальнейший анализ, такой как анализ Taint
-
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
Сравните_HASH
- Сравните значение хэша одинаковых версий пакетов в разных менеджерах пакетов
-
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
- Сравните значение хэша одинаковых версий пакетов и их контент Hashs или разрешения API в разных менеджерах пакетов
-
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
интерпретация_Ресульта
- Соберите и постройте статистику 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
- Соберите и постройте статистику домена
-
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
- Соберите предварительно сгенерированную статистику зависимости
-
python main.py interpret_result --data_type dependency -l python ../data/pypi.with_stats.popular.csv ../data/pypi_pop_dep_stats.json
- Соберите результаты сравнения перекрестных версий, может фильтровать с помощью разрешений, API и т. Д.
-
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
- Соберите метаданные/статические/динамические результаты и сбросить подозрительные пакеты
-
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
- Соберите результаты обратной зависимости
-
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
- Соберите метаданные/статические/сравнительные результаты и сбросить подозрительные пакеты
-
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
- Грип через пакеты
-
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
ускорение
- Измерьте выгоду от ускорения от резюме
-
python main.py speedup ../data/2019.01/pypi.with_stats.popular.csv speedup.log -l python
Инструмент
Сканирование в Интернете
Статистика для различных менеджеров пакетов
- PYPI статистика
- PYPI статистика пакетов
- NPMJS статистика
- Rubygems статистика
- Неофициальный портал для загрузки Rubygems
- NUGET STATS
- Пакеткистская статистика
- Статистика Maven (используется другими пакетами)
Инструменты статического анализа для разных языков
- Список резюме
- 13 инструментов для проверки риска безопасности зависимостей с открытым исходным кодом
- Потрясающий анализ вредоносных программ: курированный список инструментов и ресурсов анализа удивительных вредоносных программ
- Курированный список линтера, контролировки качества кода и другие инструменты статического анализа для различных языков программирования
- PMD: расширяемый статический код анализатора межязывания. https://pmd.github.io
- PMD сейчас не поддерживает межпроцедурный анализ
- Пользовательский набор правил безопасности для популярного инструмента статического анализа Java PMD.
- Питон
- Статический инструмент анализа для обнаружения уязвимостей безопасности в веб -приложениях Python
- Bandit - это инструмент, предназначенный для поиска общих проблем безопасности в коде Python
- PHP
- Обзорный список полезных инструментов статического анализа PHP
- Обнаружение потенциально злонамеренных файлов PHP
- Анализ Daint для PHP
- PHPCS Security Audit
- Статический инструмент анализа для безопасности
- API и документация для Progpilot
- PHP глобальные переменные - суперглобалы
- Daint - это расширение PHP, используемое для динамического обнаружения кодов XSS
- Рубин
- Проверьте проблемы с безопасностью Ruby
- Заблокировать Руби в сейфе
- Сканер уязвимости статического анализа для приложений Ruby on Rails, GitHub
- Brakeman Pro - лучший способ расследовать осадку безопасности Ruby в коде приложения Rails.
- Dawn - это статический анализ сканера безопасности для написанных веб -приложений Ruby. Он поддерживает Sinatra, Padrino и Ruby на Rails Frameworks.
- Качество - это инструмент, который запускает проверки качества в вашем коде, используя инструменты сообщества
- Npmjs
- 6 инструментов для сканирования приложения Node.js для уязвимости безопасности
- Инструмент командной строки платформы безопасности узлов https://nodesecurity.io
- Инструмент анализа статической безопасности JavaScript
- Блэкхат 2013 разговоры о JSprime
- Jshint - это инструмент, который помогает обнаружить ошибки и потенциальные проблемы в вашем коде JavaScript
- Первый взгляд на безопасность ОС Firefox
- Вала медленно
- JSprime также способен выполнять анализ данных, но архитектуру чрезвычайно трудно расширить.
- Scanjs, написанная на месте Мозиллой, ближе всего в духе к нашему.
- Nodejsscan - это статический сканер кода безопасности для приложений node.js.
- Поток - это статический контроль типа для JavaScript
- JSFLOW-это интерпретатор JavaScript с повышенным безопасностью для мелкозернистого отслеживания потока информации.
- Инструмент для изучения вредоносных программ JavaScript.
- Инструмент анализа вредоносных программ JavaScript
- Масштабируемая структура анализа для Ecmascript
- Умеренный: инструмент статического анализа для кода JavaScript.
- Анализ JavaScript и Интернет с Wala
- Jsunpack: Jsunpack-N имитирует функциональность браузера при посещении URL
- Сбор почти 40 000 образцов вредоносных программ JavaScript
- JSAI: статическая платформа анализа для JavaScript
- Клон структуры статического анализа JSAI
- Статический анализ приложений node.js javascript, управляемых событиями.
- Динамическая структура анализа для JavaScript
- Ява
- Структура обнаружения вредоносных программ Android
- Код для глубокой бумаги для обнаружения вредоносных программ Android
- Статический трекер потока данных Flowdroid
- Csharp
- Сканирование кода безопасности - анализатор статического кода для .net
- Инструменты управления зависимостью
- Bower: менеджер пакетов для Интернета
- Пряжа: быстрое, надежное и безопасное управление зависимостями
- Динамический анализ
- Dynamorio: платформа динамического инструментального инструмента
- Динамическая оркестровая теста на безопасность приложений (Dasto)
- Valgrind - это инструментальная структура для создания инструментов динамического анализа
- Плагин с отслеживанием для отслеживания для инструмента проверки памяти Valgrind
- Анализ структуры
- Модульная структура сканирования/анализа: поддержка Clamav и т. Д.
- Бесплатная служба анализа вредоносных программ для сообщества, которое обнаруживает и анализирует неизвестные угрозы с использованием уникальной технологии гибридного анализа.
- Более 5200 проектов с открытым исходным кодом и 25000 разработчиков используют сканирование Coverity
Парсеры AST для разных языков
- Python Ast Parser, используйте Ast.parse
- AST.Parse
- параметры AST.Parse
- аннотировать Python ast: asttoken
- Написание сценария настройки
- JavaScript AST Parser, используйте ESPRIMA
- Спецификация API -спецификации JavaScript Parser
- Ответы относятся к Spidermonkey и Esprima
- Spidermonkey
- Esprima, сравнение Esprima
- Acorn, Acorn vs Esprima
- Babel Compiler, основанный на желуде
- Python Port of Esprima
- Как NPM обрабатывает поле «Сценарии»
- Node.js API спецификация
- JavaScript Standard Objects по категории
- Рубиновый астчанчик
- Руби за двадцать минут
- Рубиновый анализатор, скачать статистику
- Ruby_parser
- Сравнение между анализатором и Ruby_parser
- Использование рубинового анализатора, чтобы найти устаревший синтаксис
- Функция Ruby Eval может быть опасной
- Ruby Exec, System, %x () и Backticks
- Как выполнить сценарий при установке драгоценных камней?
- Java AST Parser
- Сажа
- Вала
- Запустите сценарий после установки Maven
- Эксплуатируемые функции Java
- C# AST PARSER
- Microsoft Binskim
- Автоматический анализатор сетевого кода C#/.
- Verocode поддерживает статический анализ многих языков
- Security-Code-Scan
- охрана безопасности
- PUMA сканирование
- Сравнение анализаторов кода C#
- PHP AST PARSER
- PHP-Parser
- PHP-AST
- Создать AST исходного файла PHP
- Phpjoern
- Эксплуатируемые функции PHP
- Опасные функции PHP
- Отключить опасные функции PHP
- Сценарии композитора для динамического анализа
- C/C ++ AST PARSER
Ресурс
- Taobao зеркало NPM,
- Стэнфордское зеркало PYPI
- Зеркала регистра в Китае
- Сохраняя реестр NPM потрясающим: как работает NPMJS?
- Query NPMJS Реестр через API
- NPM Search с историческими версиями
- числовая точность имеет значение: как работа загрузки NPM работает
- NPMJS API документы
- CLI Synk поможет вам найти и исправить известные уязвимости в ваших зависимостях, как специальных, так и как часть вашей системы CI
- Использование европейского зеркала NPM
- Что я узнал из анализа 1,65 -метровых версий модулей node.js в NPM
- Archive.org Snapshots Веб -сайты и могут использоваться для измерения веб -сайтов жертвы
- Трассирование событий для Windows (ETW)
- Linux Audit
- Настройка аудита: высокопроизводительный аудит Linux
- Linux Audit Framework 101 - Основные правила конфигурации
- Аудит Linux: аудит конфигурации сети
- Как использовать систему аудита Linux на CentOS 7
- Глава 7. Системный аудит
- Строка
- Strace Analyzer
- Python-Ptrace-это привязка Python библиотеки PTRACE
- Pystrace - Python Tools для анализа и анализа выходных файлов Strace
- Анализирует выходные выводы
- Профилирование и визуализация с GNU Strace
- Я создал граммар BNF для вывода и использовал BNFC для автоматического генерации анализатора в C ++.
- Структурированный выход для строки
- как Стрейс, но для кода Ruby
- Pytrace - быстрый трассировщик Python. Он записывает функции вызовы, аргументы и возвращаемые значения.
- PHP-Strace помогает отслеживать Segfaults при запуске PHP-процессов
- Как установить строки Strace Output Simpless ширина на ширину?
- Опция
-s указывает максимальный размер строки для печати -
-v опция печати не подразделение Argv, Stat, Termios и т. Д. Args
- Google Summer of Code для вывода Strace
- Участие в GSOC 2014
- По -настоящему структурированный выход для Strace в GSOC 2016
- Док для GSOC 2016
- DTRACE для Linux
- Код для кросс -платформного, единого источника, реализации OpendTrace
- FTRACE - это внутренний индикатор, предназначенный для того, чтобы помочь разработчикам и дизайнерам систем найти то, что происходит внутри ядра.
- В чем разница между DTRACE и Strace
- Sysdig vs Dtrace против Strace: техническая дискуссия
- OSQUERY: Процесс и аудит сокета с Osquery
- Информация, собранная Osquery (таблицы)
- Куративный список инструментов и ресурсов для реагирования на инцидент безопасности, направленный на то, чтобы помочь аналитикам безопасности и командам DFIR.
- 1 -й: Как команды в настоящее время используют Osquery?
- 2nd: Каковы текущие болевые точки Осквайра?
- 3 -й: Что вы хотите, чтобы Osquery мог сделать?
- Kolide Cloud-это решение для мониторинга конечной точки, которое использует и инструменты Osquery Project Facebook от открытого исходного кода Facebook. Попробуйте сегодня; Полностью бесплатно для ваших первых 10 устройств.
- Колид -флот для мониторинга машин Osquery
- Поддержка Docker в Osquery
- Dockerfiles для контейнерных Osquery
- UPTYCS: Защита контейнеров: использование OSQUERY для решения новых задач, созданных услугами по организованию оркестровки
- Uptycs: Docker и Osquery
- Osquery для безопасности: Введение в Osquery - Часть 1
- Osquery для безопасности - часть 2
- OSQUERY - Windows, MacOS, Linux мониторинг и обнаружение вторжений
- Docker и Osquery
- Вступление в Оскквири: Часто задаваемые вопросы для начинающих
- конфигурация Osquery от Palantir
- SYSDIG: Linux System Exploration и Устранение неполадок инструмент с поддержкой первого класса для контейнеров
- Selinux, Seccomp, Sysdig Falco и вы: техническая дискуссия
- Monitoring Prometheus и Sysdig Monitor: техническое сравнение
- День 3 - Итак, сервер, расскажи мне о себе. Введение в фирм, Osquery и 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.
- Мониторинг контейнера: Прометей и Графана против. Sysdig и Sysdig Monitor
- Мониторинг контейнера с помощью sysdig
- Руководство пользователя sysdig
- Sysdig Falco
- Sysdig Falco Правила
- Обнаружение криптокола с Falco Sysdig
- Sysdig + logstash + elasticsearch
- Sysdig + elk (потенциал)
- Отправка событий Kubernetes & Docker в Elasticsearch и Splunk с использованием sysdig
- Безопасность контейнера времени выполнения - как реализовать безопасность контейнера с открытым исходным кодом
- Wtf мой контейнер просто породил оболочку
- go-auditd
- Go-Audit-это альтернатива Daemon Auditd, который поставляется со многими дистрибуциями
- Система мониторинга Прометея и база данных временных рядов.
- Прометея Официальный сайт
- Go-Audit-Container
- Аудит FIM и системного вызова в масштабе в большом развертывании контейнера
- Kubernetes: Kubernetes-это система с открытым исходным кодом для автоматизации развертывания, масштабирования и управления контейнерными приложениями.
- Специальность: собирать и отображать факты системы
- Специальность: основные факты
- Найдите файлы PHP, которые можно найти, путем отходов параметров и отслеживания вызовов функции
- Анализатор OS X для проекта Sandbox Cuckoo
- Песочница кукушки является ведущей системой автоматической анализы вредоносных программ с открытым исходным кодом с открытым исходным кодом
- Нативные библиотеки с Maven
- Maven: объединение и распаковка местных библиотек
- Нативный архивный плагин для Maven
- Эластичная файловая система (EFS) монтируется за пределами AWS
- Amazon EFS Update-Находясь на доступе через прямое подключение
- Язык программирования GO
- Благодаря тому, что Go делает импорт, центральный расчистки, такой как Maven или NPM, просто не нужен.
- Project for Go Search, поисковая система для поиска популярных и соответствующих пакетов.
- Руби (наконец) выигрывает популярность, но иди плато
- Лучшие языки: Java, C, C ++, Python, C#, PHP, JavaScript, Ruby
- СТАТИЧЕСКИЕ АНАЛИЗЫ Ссылки
- Автоматизированный тип вывод для динамически напечатанных программ
- Статический инструмент анализа для поиска ошибок в приложениях PHP
- IBM Appscan позволяет сканировать источник/скомпилированный код для уязвимостей
- Языки поддержки APPSCAN: поддерживает C/C ++, .NET, Java, JSP, JavaScript, PHP, ASP, Python
- IBM Security Appscan Source 9.0.3.10 доступен в Fix Central
- Доступны версии исходных версий Appscan
- Ограниченное исполнение
- Питон с песочницей
- Рубиновая песочница против интеграции языка сценариев
- В тюрьму - гибкая песочница JS
- Можно ли в браузере в браузере, работающем с песочницей?
- Есть ли способ выполнить код PHP в песочнице из PHP
- Runkit_sandbox
- Код с песочницей Java
- Выполнить метод в Java с ограниченными разрешениями
- AWS партийные работы
- Учебник AWS
- AWS Parath: упрощение партийных вычислений в облаке
- Пример партии AWS
- EC2-SPOT-AWS-STACH
- SQS-EC2-Spot-Fleet-Autoscaling
- Воздушный поток Даг
- Параллельный бег DAG задач в сельдереи Python
- Воздушный поток - масштабирование с помощью сельдерея
- Воздушный поток Даг
- Введение воздуха
- Воздушный поток на Kubernetes (часть 1): другой вид оператора
- Файлы конфигурации изображения Docker и Kubernetes для запуска воздушного потока на Kubernetes
- Руководство по созданию сервера/кластера воздушного потока
- Консультации по безопасности
- Проблемы Rubygems
- NPMPJS Security Advisories
- Python Packages
- Пакеткистные пакеты
- Maven Packages
- JCenter Packages
- Vulnddb Data Mirror
- Трек зависимости
- Проверка зависимости
- Microsoft Security Advisory
Ссылка
- Подсчет модулей
- Быстрый веб -сайт для отслеживания количества модулей в различных репозиториях
- опечатка сайта
- опечатка диссертации
- Debian Popcorn
- PYPI пакеты, которые, как оказались злыми
- ПИТОН ПИСО СОЗДАНИЕ
- PHP опечатка приседания
- Jcenter typo sedting
- Rubygems typosquatting
- Охота на злонамеренные пакеты NPM
- Злоугодные пакеты NPM
- Список всех пакетов PYPI
- Crossenv Malware в реестре NPM
- Пакеты с открытым исходным кодом со злым намерением
- Как захватить компьютер любого разработчика Java (или Clojure или Scala)
- Угол безопасности с Snyk: шесть лучших уязвимостей в Maven и NPM
- Еще один дистрибутив Linux, отравленные вредоносными программами
- Nodejs: удаленное выполнение кода как служба
- 17 изображений Docker с задним ходом удалены из Docker Hub
- Библиотека Python с бэкдором поймала на кражу учетных данных SSH
- Eslint-Scope-это анализатор Ecmascript Scope, используемый в Eslint. Версия 3.7.2 была идентифицирована как вредоносная после возможного поглощения учетной записи NPM. Установка вредоносного пакета приведет к утечке токена NPM пользователя.
- NPM приобретает ^Lift Security и платформу безопасности узлов
- Проанализировать атаку по обеспечению предложения PIP SSH
- Вредоносные файлы .jar, размещенные в коде Google
- Рассечение вредоносной программы Java (Jrat)
- Пакеты, потенциально затронутые Eslint-Scope
- Злоусовеченные модули - что вам нужно знать при установке пакетов NPM
- Двенадцать злонамеренных библиотек Python найдены и удалены из PYPI
- Удовлетворительные пакеты на PYPI
- Заговор, чтобы украсть криптовалюту, сорванную группой безопасности NPM
- Уязвимость, обнаруженная в кошельке Комодо - это то, что вам нужно сделать
- PYPI вредоносные программы
- Сообщите о проектах, которые повреждают другие пакеты, не придерживаются руководящих принципов или являются злонамеренными
- Коллекция PHP Backdoors
- Коллекция вредоносных программ Windows
- Змеи в траве! Злоусоветный код скользит в репозиторий Python PYPI
- CryptoJacking вторгается в облако. Как современная тенденция контейнеризации эксплуатируется злоумышленниками
- Это список всех пакетов, найденных @Malicious-Packages/Core, и удаленные из репозитория командой NPM
- Первые 10 лучших рисков для приложений, основанных на исследованиях без серверов, выпущенные Puresec
- Использовать инфраструктуру разработчика смехотворно проста
- JavaScript Static + Динамический анализ
- Методы запутывания PHP
- Методы запутывания PHP
- Понимание запутанного кода и как деобускаться PHP и JavaScript
- Joomla плагин конструктор Backdoor
- Запутанная зависимость
- API Docker Control API и имидж сообщества, подвергшиеся изображению сообщества, приводятся в поставку вредоносных программ для привязки к криптовалюте
- Злоусовечник удаленного кода Backdoor обнаружен в популярном Bootstrap-Sass Ruby Gem
- Backdoor в плагине Captcha влияет на сайты WordPress 300K
- Backdoor найден в Webmin, популярной веб-утилите для управления серверами Unix
- DEFCON-WEBMIN-1920-UNAUTHETATED-REMOTE-COMMAND-выполнение
- Пола предотвратила бы инцидент с потоком событий
- Криптоканирование преступников используют несколько методов для установки Coinminers
- Google Analytics и Angular в Magento Created Card Scripts
- PSA: Есть поддельная версия этого пакета на PYPI со злым кодом
- Pyprosquatting rabrage на пользователях репозитория программного обеспечения Rubygems
- Pypi 官方仓库遭遇 запрос 恶意包投毒
- Sourmint: вредоносный код, мошенничество с рекламой и утечка данных в iOS
- Атака цепочки поставок программного обеспечения Зависимости зажигает более 35 организаций
- Sonatype Spots 275+ Злоусовеченные пакеты NPM, копирующие недавние атаки цепочки поставок программного обеспечения, которые достигли 35 организаций
- Недавно идентифицированные пакеты путаницы зависимости нацелены на Amazon, Zillow и Slack; Выйти за рамки просто наградах.
- Путаница зависимости: как я взломал Apple, Microsoft и десятки других компаний
- Для PIP,
--extra-index-url для внутренних/внешних пакетов выберет версию с более высоким номером версии - Для драгоценного камня
gem install --source - Index-Url Extra-Index-Url установка приоритета
- Index-Url Extra-Index-Url Установка приоритетного порядка-продолжение
- Pywheels для Raspberry Pi
- Название на корточках пакета: Cupy-Cuda112