Skip to content
このページは AI の支援により作成・翻訳されました。誤りがあれば、改善にご協力ください。 GitHub で編集

トラブルシューティング

このページでは、PRX-SDの実行中に発生する最も一般的な問題とその原因および解決策を説明します。

シグネチャデータベースの更新失敗

症状: sd updateがネットワークエラー、タイムアウト、またはSHA-256不一致で失敗する。

考えられる原因:

  • インターネット接続なし、またはファイアウォールがアウトバウンドHTTPSをブロック
  • 更新サーバーが一時的に利用不可
  • プロキシまたは企業ファイアウォールがレスポンスを変更している

解決策:

  1. 更新サーバーへの接続を確認
bash
curl -fsSL https://api.github.com/repos/openprx/prx-sd-signatures/commits?per_page=1
  1. ネットワーク制限がある場合はオフライン更新スクリプトを使用:
bash
# On a machine with internet access
./tools/update-signatures.sh

# Copy the signatures directory to the target machine
scp -r ~/.prx-sd/signatures user@target:~/.prx-sd/
  1. 破損したキャッシュをクリアするために強制再ダウンロード
bash
sd update --force
  1. プライベートミラーをホストしている場合はカスタム更新サーバーを使用
bash
sd config set update_server_url "https://internal-mirror.example.com/prx-sd/v1"
sd update
  1. SHA-256不一致を確認 -- これは通常、転送中にダウンロードが破損したことを意味します。再試行するか、手動でダウンロードしてください:
bash
sd update --force

TIP

ダウンロードせずに更新が利用可能かどうかを確認するにはsd update --check-onlyを実行してください。

スキャン速度が遅い

症状: ディレクトリのスキャンが予想よりもはるかに時間がかかる。

考えられる原因:

  • ネットワークマウントファイルシステム(NFS、CIFS、SSHFS)のスキャン
  • YARAルールがスキャンごとにコンパイルされている(キャッシュされたコンパイルなし)
  • 多すぎるスレッドがスピニングディスク上でI/Oを競合している
  • 大きなネストされたアーカイブでのアーカイブ再帰

解決策:

  1. SSDバックアップストレージのためにスレッド数を増やす
bash
sd config set scan.threads 16
  1. スピニングディスク(I/Oバウンド)のためにスレッド数を減らす
bash
sd config set scan.threads 2
  1. 遅いまたは無関係なパスを除外
bash
sd config set scan.exclude_paths '["/mnt/nfs", "/proc", "/sys", "/dev", "*.iso"]'
  1. 不要な場合はアーカイブスキャンを無効化
bash
sd config set scan.scan_archives false
  1. 深くネストされたアーカイブを避けるためにアーカイブ深度を制限
bash
sd config set scan.max_archive_depth 1
  1. 1回限りのスキャンには**--excludeフラグを使用**:
bash
sd scan /home --exclude "*.iso" --exclude "node_modules"
  1. ボトルネックを見つけるためにデバッグログを有効化
bash
sd --log-level debug scan /path/to/dir 2>&1 | grep -i "slow\|timeout\|skip"

fanotify権限エラー

症状: sd monitor --blockが「Permission denied」または「Operation not permitted」で失敗する。

考えられる原因:

  • rootとして実行していない
  • LinuxカーネルにCONFIG_FANOTIFY_ACCESS_PERMISSIONSが有効化されていない
  • AppArmorまたはSELinuxがfanotifyアクセスをブロックしている

解決策:

  1. rootとして実行
bash
sudo sd monitor /home /tmp --block
  1. カーネル設定を確認
bash
zgrep FANOTIFY /proc/config.gz
# Should show: CONFIG_FANOTIFY=y and CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
  1. 非ブロックモードをフォールバックとして使用(依然として脅威を検出しますが、ファイルアクセスを防止しない):
bash
sd monitor /home /tmp

WARNING

ブロックモードはfanotifyサポートを持つLinuxのみで利用可能です。macOS(FSEvents)とWindows(ReadDirectoryChangesW)では、リアルタイム監視は検出専用モードで動作します。

  1. SELinux/AppArmorを確認
bash
# SELinux: check for denials
ausearch -m AVC -ts recent | grep prx-sd

# AppArmor: check for denials
dmesg | grep apparmor | grep prx-sd

誤検知(正当なファイルが脅威として検出される)

症状: 既知の安全なファイルがSuspiciousまたはMaliciousとしてフラグ立てされる。

解決策:

  1. 何がトリガーされたかを確認
bash
sd scan /path/to/file --json

detection_typethreat_nameフィールドを確認:

  • HashMatch -- ファイルのハッシュが既知のマルウェアハッシュに一致する(誤検知の可能性は低い)
  • YaraRule -- YARAルールがファイル内のパターンに一致した
  • Heuristic -- ヒューリスティックエンジンがファイルをしきい値以上にスコアリングした
  1. ヒューリスティックの誤検知の場合、しきい値を上げる:
bash
# Default is 60; raise to 70 for fewer false positives
sd config set scan.heuristic_threshold 70
  1. スキャンからファイルまたはディレクトリを除外
bash
sd config set scan.exclude_paths '["/path/to/safe-file", "/opt/known-good/"]'
  1. YARAの誤検知の場合~/.prx-sd/yara/ディレクトリ内の特定のルールを削除またはコメントアウトすることで除外できます。

  2. ハッシュでホワイトリスト化 -- ファイルのSHA-256をローカル許可リストに追加します(将来の機能)。回避策として、パスでファイルを除外してください。

TIP

検出が本当に誤検知だと思われる場合は、ファイルハッシュ(ファイル自体ではなく)とルール名を含めてgithub.com/openprx/prx-sd/issuesで報告してください。

デーモンが起動できない

症状: sd daemonが直ちに終了する、またはsd statusが「stopped」を表示する。

考えられる原因:

  • 別のインスタンスがすでに実行中(PIDファイルが存在する)
  • データディレクトリにアクセスできないまたは破損している
  • シグネチャデータベースが見つからない

解決策:

  1. 古いPIDファイルを確認
bash
cat ~/.prx-sd/prx-sd.pid
# If the listed PID is not running, remove the file
rm ~/.prx-sd/prx-sd.pid
  1. デーモンのステータスを確認
bash
sd status
  1. フォアグラウンドで実行してデバッグログで起動エラーを確認:
bash
sd --log-level debug daemon /home /tmp
  1. シグネチャが存在することを確認
bash
sd info
# If hash_count is 0, run:
sd update
  1. ディレクトリ権限を確認
bash
ls -la ~/.prx-sd/
# All directories should be owned by your user and writable
  1. データディレクトリが破損している場合は再初期化
bash
# Back up existing data
mv ~/.prx-sd ~/.prx-sd.bak

# Re-run any command to trigger first-run setup
sd info

# Re-download signatures
sd update

ログレベルの調整

問題: 問題をデバッグするためにより多くの診断情報が必要。

PRX-SDは5つのログレベルをサポートします(最も詳細から最も少ない詳細順):

レベル説明
traceファイルごとのYARAマッチングの詳細を含むすべて
debug詳細なエンジン操作、プラグインの読み込み、ハッシュルックアップ
infoスキャン進捗、シグネチャ更新、プラグイン登録
warn警告と非致命的エラー(デフォルト)
error重大なエラーのみ
bash
# Maximum verbosity
sd --log-level trace scan /tmp

# Debug-level for troubleshooting
sd --log-level debug monitor /home

# Redirect logs to a file for analysis
sd --log-level debug scan /home 2> /tmp/prx-sd-debug.log

TIP

--log-levelフラグはグローバルであり、サブコマンドの前に来る必要があります:

bash
# Correct
sd --log-level debug scan /tmp

# Incorrect (flag after subcommand)
sd scan /tmp --log-level debug

メモリ使用量が多い

症状: sdプロセスが予想以上のメモリを消費する。特に大きなディレクトリスキャン中。

考えられる原因:

  • 多くのスレッドで非常に多くのファイルをスキャンしている
  • YARAルールはメモリにコンパイルされる(38,800件以上のルールは大きなメモリを使用)
  • アーカイブスキャンで大きな圧縮ファイルがメモリに展開される
  • max_memory_mb制限が高いWASMプラグイン

解決策:

  1. スレッド数を減らす(各スレッドが独自のYARAコンテキストを読み込む):
bash
sd config set scan.threads 2
  1. 非常に大きなファイルをスキップするために最大ファイルサイズを制限
bash
# Limit to 50 MiB
sd config set scan.max_file_size 52428800
  1. メモリ制限システムのためにアーカイブスキャンを無効化
bash
sd config set scan.scan_archives false
  1. アーカイブ深度を制限
bash
sd config set scan.max_archive_depth 1
  1. WASMプラグインのメモリ制限を確認 -- ~/.prx-sd/plugins/*/plugin.jsonmax_memory_mbの値が高いプラグインを確認して削減してください。

  2. スキャン中のメモリを監視

bash
# In another terminal
watch -n 1 'ps aux | grep sd | grep -v grep'
  1. デーモンの場合、時間の経過とともにメモリを監視:
bash
sd status
# Shows PID; use top/htop to watch memory

その他の一般的な問題

「No YARA rules found」警告

YARAルールディレクトリが空です。初回セットアップを再実行するかルールをダウンロード:

bash
sd update
# Or manually trigger setup by removing the yara directory:
rm -rf ~/.prx-sd/yara
sd info  # triggers first-run setup with embedded rules

「Failed to open signature database」エラー

LMDBシグネチャデータベースが破損している可能性があります:

bash
rm -rf ~/.prx-sd/signatures
sd update

Adblock:「insufficient privileges」

adblockの有効化/無効化コマンドはシステムホストファイルを変更するためにrootが必要です:

bash
sudo sd adblock enable
sudo sd adblock disable

「timeout」エラーでファイルがスキャンをスキップされる

個別ファイルのタイムアウトはデフォルトで30秒です。複雑なファイルのために増やしてください:

bash
sd config set scan.timeout_per_file_ms 60000

ヘルプの取得

上記の解決策で問題が解決しない場合:

  1. 既存のissueを確認: github.com/openprx/prx-sd/issues
  2. 以下を含む新しいissueを提出
    • PRX-SDバージョン(sd info
    • オペレーティングシステムとカーネルバージョン
    • デバッグログ出力(sd --log-level debug ...
    • 再現手順

次のステップ

  • エンジンの動作を細かく調整するために設定リファレンスを確認
  • 脅威がどのように識別されるかを理解するために検出エンジンについて学ぶ
  • 問題をプロアクティブに通知するためにアラートをセットアップ

Released under the Apache-2.0 License.