A security tool to check for typosquatting and package reliability in requirements.txt
Project description
mimic-check
mimic-check は、requirements.txt に記載された Python パッケージの安全性を検証するためのツールです。
タイポスクワッティング(有名なパッケージに似た名前の悪意あるパッケージ)の検出や、ダウンロード数・GitHub スター数に基づいた信頼性の評価を行います。
特徴
- タイポ検出:
requestsをreqeustsと書き間違えているようなケースを検出し警告します。 - 信頼性評価: 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
実行すると、パッケージごとに以下のチェックが行われます:
- 有名パッケージとの名前の類似性(タイポ)チェック
- PyPI での存在確認
- ダウンロード数とスター数の確認
問題が見つかった場合、警告が表示され、続行するかどうかを確認されます。y を入力すると、そのパッケージを含めた一時的な requirements ファイルで pip install が実行されます。
CI モードでの実行
CI/CD パイプラインなどで、問題検出時に自動的にエラーとしたい場合は --ci フラグを使用します。
mimi --file requirements.txt --ci
PyPIへの配布方法
- ビルドツールのインストール:
pip install build twine
- パッケージのビルド:
python -m build
- PyPIへのアップロード (テスト環境):
python -m twine upload --repository testpypi dist/*
- 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42c714d9a4f44af7d64eb168d6218c83c7390b97e803ea654407f92924a260c3
|
|
| MD5 |
53f076b9a4c2e03f649995aec6ec50d2
|
|
| BLAKE2b-256 |
d156e76533d5666a403f0873fa1fa34bdad3b0d37de1e57d76fbe559b2a44e55
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6315fcf1c1ca8932edb7d96059f4b04761018fd8baa69c534c766c814e2cf1e
|
|
| MD5 |
3e5d47a5a4e87f6c27366f9d0a686740
|
|
| BLAKE2b-256 |
c3f5386700f0b4219ce65e734bd33b1197fb1838c0c4c64ad2c3360f20d6b53b
|