
フォーク元: https://gitlab.alpinelinux.org/kaniini/secfixes-tracker
これは、Alpine のセキュリティ修正を追跡する Flask Web アプリケーションです。
Alpine secdb を利用することで、どの CVE が修正済みで、どの CVE が未修正であるかを一般的に推定できます。パッケージメンテナーが誤検知を明示できるように、secfixes レポートスキーマにいくつかの拡張が追加される予定です。
近い将来、エンジンが状態変化を処理する際に、その変化がセキュリティ告知リストに報告されるようになります。
通常の方法で virtualenv を作成し、pip3 install -r requirements.txt を実行してください。
sqlite 以外のデータベースを使用する場合は、そのドライバーをインストールする必要があります。例: pip3 install psycopg2
最後に、設定ファイルを作成します。サンプルファイルをコピーし、必要に応じて変更してください。
次に、以下の環境変数を適切な値に設定する必要があります:
SECFIXES_TRACKER_CONFIG: 設定ファイルへのパスFLASK_APP: アプリ名、secfixes_tracker完了したら、flask init-db でデータベースを初期化します。
必要に応じて、make を実行して secfixes-cli をビルドします。これには go がインストールされている必要があります。
環境が設定されたら、さまざまなタスクを実行できます:
flask runWeb サーバーを実行します。これは gunicorn などでも実行できますが、ここでは説明しません。
flask init-dbデータベースを初期化します。
flask import-apkindex [repo]設定されたリポジトリをインポートします。
flask import-secfixes [repo]設定された secdb フィードをインポートします。
flask import-nvd [feed-name]2021 や recent などの NVD フィードをインポートします。
年間フィードをインポートした後は、毎日 recent フィードのみをインポートすればよいです。
./secfixes-cli import-vulnrichhttps://github.com/cisagov/vulnrichment から CVE の詳細をインポートします。
flask update-states [repo]secfixes、NVD、apkindex フィードの現在の内容に基づいて、さまざまな VulnerabilityState 項目を更新します。これは、上記のインポートタスクの後に毎時間実行する必要があります。
リライターのルールは Alpine infra/docker/secfixes-tracker から同期されます。ファイル構成については config/README.md を参照してください。
Flask アプリは secfixes_tracker/application.cfg (``config/prod.settings.pyにミラーリング) の PythonCUSTOM_REWRITERSを使用します。ルールはcpe_vendor:source_pkgnameまたはcpe_vendor:*としてマッチするlambda` 関数です。
同じファイル内の PACKAGE_EXCLUSIONS は、誤検知 CVE が蓄積されるパッケージ (例: bridge) を除外します。
secfixes-cli は config/application.toml (``config/prod.application.toml` にミラーリング) の expr ベースのルールを使用します。ルールは expr に基づいています。
ルールの例は次のとおりです:
[[rewriters]]
predicate = "target_sw == 'python'"
rewrite_rule = "product | lower() | replace('_', '-') | fmt('py3-%s')"
predicate はルールが適用されるかどうかを決定し、rewrite_rule は CPE がどのように書き換えられるかを決定します。オプションの3番目のオプション field は、CPE のどのフィールドが書き換えられるかを指定します。指定しない場合、デフォルトは product です。
式の環境では、次の変数を使用できます:
vendorproducttarget_swversionfmt は fmt.Sprintf で実装されていますが、引数は2つだけ取ります。最初の引数は文字列またはスライスです。これにより、パイプで使用することが可能になります。
インポートタスクを実行し、その後 update-states タスクを実行します。必要なのはこれだけです。
電子メール関連の機能は、トラッキングエンジンの実装により適合するように再設計中です。セットアップ手順の準備ができたら、このスペースに注目してください。
現時点では、データベーススキーマは不安定です。このソフトウェアをアップグレードするときは、データベースを再構築する必要があります。バージョン 1.0 に達すると、データベーススキーマは安定します。