Skip to main content

A security tool to check for typosquatting and package reliability in requirements.txt

Project description

mimic-check

mimic-check は、requirements.txt に記載された Python パッケージの安全性を検証するためのツールです。 タイポスクワッティング(有名なパッケージに似た名前の悪意あるパッケージ)の検出や、ダウンロード数・GitHub スター数に基づいた信頼性の評価を行います。

特徴

  • タイポ検出: requestsreqeusts と書き間違えているようなケースを検出し警告します。
  • 信頼性評価: PyPI のダウンロード数(直近1ヶ月)と GitHub のスター数を確認し、閾値未満のパッケージを警告します。
  • 効率的なキャッシュ: 検証結果を当日中のみ有効なキャッシュとして保存し、不要な API リクエストを削減します。
  • PyPI 存在確認: パッケージが PyPI に存在しない場合、即座に警告し後続のチェックをスキップします。
  • CI 対応: --ci フラグを使用することで、問題検出時に非ゼロの終了コードで終了し、パイプラインを停止させることができます。

セットアップ

必要条件

  • Python 3.x
  • requests, toml パッケージ

インストール

PyPIからインストールする場合(公開後):

pip install mimic-check

ローカルで開発用にインストールする場合:

pip install -e .

これにより、mimi コマンドが使用可能になります。

使い方

基本的な実行

mimi --file requirements.txt

実行すると、パッケージごとに以下のチェックが行われます:

  1. 有名パッケージとの名前の類似性(タイポ)チェック
  2. PyPI での存在確認
  3. ダウンロード数とスター数の確認

問題が見つかった場合、警告が表示され、続行するかどうかを確認されます。y を入力すると、そのパッケージを含めた一時的な requirements ファイルで pip install が実行されます。

CI モードでの実行

CI/CD パイプラインなどで、問題検出時に自動的にエラーとしたい場合は --ci フラグを使用します。

mimi --file requirements.txt --ci

PyPIへの配布方法

  1. ビルドツールのインストール:
pip install build twine
  1. パッケージのビルド:
python -m build
  1. PyPIへのアップロード (テスト環境):
python -m twine upload --repository testpypi dist/*
  1. PyPIへのアップロード (本番環境):
python -m twine upload dist/*

設定 (config.toml)

プロジェクトのルートにある config.toml で動作をカスタマイズできます。

[mimi]
min_downloads = 1000  # 信頼できるとみなす最小ダウンロード数
min_stars = 10        # 信頼できるとみなす最小 GitHub スター数
famous_packages = ["requests", "numpy", "pandas", ...] # タイポチェック対象の有名パッケージ
trusted_packages = [] # チェックをスキップする信頼済みパッケージ

キャッシュ

package_cache.json に検証結果がキャッシュされます。

  • キャッシュは日付ごとに管理され、翌日には自動的に再検証されます。
  • 信頼性の基準を満たしたパッケージのみがキャッシュされ、警告対象のパッケージは毎回チェックされます。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mimic_check-0.1.0.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mimic_check-0.1.0-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file mimic_check-0.1.0.tar.gz.

File metadata

  • Download URL: mimic_check-0.1.0.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.1.dev37+g4f20c0dc3 CPython/3.11.9

File hashes

Hashes for mimic_check-0.1.0.tar.gz
Algorithm Hash digest
SHA256 42c714d9a4f44af7d64eb168d6218c83c7390b97e803ea654407f92924a260c3
MD5 53f076b9a4c2e03f649995aec6ec50d2
BLAKE2b-256 d156e76533d5666a403f0873fa1fa34bdad3b0d37de1e57d76fbe559b2a44e55

See more details on using hashes here.

File details

Details for the file mimic_check-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mimic_check-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.1.dev37+g4f20c0dc3 CPython/3.11.9

File hashes

Hashes for mimic_check-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c6315fcf1c1ca8932edb7d96059f4b04761018fd8baa69c534c766c814e2cf1e
MD5 3e5d47a5a4e87f6c27366f9d0a686740
BLAKE2b-256 c3f5386700f0b4219ce65e734bd33b1197fb1838c0c4c64ad2c3360f20d6b53b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page