セキュリティ情報・データの取り扱い
このページは、malcheck を利用するお客様が、取引先や社内のセキュリティチェックシート(質問票)に回答するための根拠として使えるように書いています。登録なしで閲覧・共有できます。記載は実装と運用の実態に合わせており、実装と異なることは書きません。
1. malcheck が行うこと
お客様のアプリケーションから POST /api/scan にファイル(実体、またはファイルが置かれている URL)を送ると、malcheck のサーバー内の ClamAV でウイルス検査を行い、結果を JSON で返します。
- 検査は malcheck のサーバー内で完結します。VirusTotal のような検体共有ネットワークや、他社の解析サービスにファイルを送ることはありません。
- 通信は HTTPS のみです。HTTP でのアクセスは HTTPS に転送されます。
- URL を指定して送った場合は、malcheck のサーバーがその URL に GET でアクセスしてファイルを取得します。取得先はお客様が指定した URL のみです。
2. 処理場所
検査サーバーとデータベースはさくらインターネット(東京)の設備にあります。検査処理を国外のサーバーで行うことはありません。接続先・接続元の IP アドレスは固定で、IP アドレス一覧に公開しています(変更は 30 日前に通知)。ただし、後述の再委託先のうち Sentry と Mailgun は米国のサービスです。国内のサーバーで処理していても、再委託先の所在地を含めた取り扱いの実態で「国外での取り扱い」の有無が判断されることがあるため、質問票への回答では第 6 節の再委託先一覧を参照してください。
3. ファイル本体の扱い
- 受け取ったファイルは検査サーバーの一時ディレクトリに保存し、ClamAV で検査したあと、結果を記録した時点でファイル本体を削除します。ファイル本体をデータベースやオブジェクトストレージに保存することはありません。
- 検査が完了しなかった場合(URL からの取得失敗、検査エンジンのエラー)の一時ファイルも、その場で削除します。処理中のプロセスが強制終了された場合(タイムアウト、再起動)に残った一時ファイルは 10 分ごとの回収処理が削除するため、残る時間は最長でも 20 分程度です。
- 一時ファイルはバックアップの対象に含めません。
4. 保存される情報と保持期間
検査ごとに、次の情報を検査履歴としてデータベースに保存します。ファイル本体は保存しません。
| 項目 | 内容 | 備考 |
|---|---|---|
| ファイル名 | 保存しません。送信時のファイル名はレスポンス(非同期の場合はコールバック)に返すだけで、検査履歴には記録しません | ファイル名に氏名・案件名などが含まれていても malcheck 側には残りません |
| URL | URL 指定で送った場合の URL | お客様側の機密や個人情報が含まれることがあります。機密を含めない運用を推奨します |
| meta | お客様が任意で付けた文字列 | |
| callback_url | 非同期モードで指定した通知先 URL | |
| サイズ・ハッシュ | ファイルサイズ、MD5・SHA-1・SHA-256 | ハッシュからファイルの中身は復元できません |
| 判定結果 | clean / dirty / unscannable / error、検出名または失敗理由、ClamAV のバージョン | |
| 日時 | 受付日時(UTC) |
「ファイル本体は保存しない」ことを、それだけで安全性の根拠にはしていません。URL・meta にはお客様側の機密が入りうるため、質問票への回答では「本体とファイル名は保存されず、上記の記録が残る」と書き、機密を含めない運用をお客様側で行うことを前提にしてください。
| 種類 | 保存場所 | 保持期間 | 用途 |
|---|---|---|---|
| 検査履歴(上の表) | データベース(国内) | 1 年(受付から 365 日を過ぎた行を毎日自動削除。削除後もチーム別・月別の件数だけは利用量の集計のために残す) | 検査結果の証跡、利用件数の集計。ダッシュボードの「検査履歴」で検索・CSV 保存できる |
| アクセスログ | 検査サーバー内 | 90 日 | 障害調査、不正アクセスの検知。リクエスト元 IP・URL・ステータス・User-Agent を含む。ファイルの中身や POST パラメータは含まない |
| アプリケーションログ | 検査サーバー内 | 90 日 | 障害調査。一時ファイルのパスを出力する。ファイルの中身は出力しない |
| エラー記録(Sentry) | Sentry(米国) | 90 日(Sentry の既定) | 例外の発生箇所・回数の把握。送る内容は第 6 節を参照 |
| データベースのバックアップ | さくらインターネットのオブジェクトストレージ(国内) | 30 日(日次で取得し、30 日を過ぎた世代を自動削除) | 障害時の復旧。復旧後は保持期限を過ぎた検査履歴を再度削除する |
解約後も検査履歴は上記の保持期間まで残り、期限で自動削除されます。期限前の削除を希望される場合は問い合わせ窓口までご連絡ください。1 年より長く証跡を残したい場合は、ダッシュボードの「検査履歴」から期間を指定して CSV をダウンロードし、お客様側で保管してください。
5. 検査エンジンと検査範囲の限界
- 検査エンジンは ClamAV です。ウイルス定義は毎時、更新の有無を確認して反映します。定義の更新が止まった場合(更新プロセスの停止、上流の最新版より遅れた状態が 4 時間を超えた場合など)は毎時の監視で運営者に通知され、確認します。
- ClamAV はシグネチャ(パターン)検査です。サンドボックスでの動的解析や、特定ベンダーのエンジンが要件になっている場合には適合しません。
- パスワード付きの暗号化 ZIP は中身を検査できません。2026 年 9 月 14 日以降に登録したチームには
unscannable(理由Heuristics.Encrypted.Zip)として返します。それより前から利用中のチームには従来どおり検出なし(clean)として返しており、ご希望があればunscannableを返す設定に切り替えます。 - 圧縮ファイルは展開して検査しますが、展開後のサイズ・ファイル数・階層には ClamAV の上限があります。上限を超えたファイルも同様に
unscannable(理由Heuristics.Limits.Exceeded.*)として返します(従来の設定のチームではclean)。 - 検査エンジンの障害や URL の取得失敗で検査できなかった場合は
error(HTTP 502 / 503)を返し、受付から 10 分以内に結果が出なかった検査もerrorとして確定します。clean以外は通さない設計を推奨します。 - ファイルサイズの上限は 30MB です。上限を超えたファイルは受け付けず(HTTP 413)、検査しません。
6. 再委託先(malcheck が利用する外部サービス)
malcheck の提供のために次の外部サービスを利用しています。ファイル本体をこれらに送ることはありません。それぞれに渡るデータの種類は次のとおりです。
| サービス | 所在地 | 用途 | 渡るデータ |
|---|---|---|---|
| さくらインターネット | 日本(東京・石狩) | 検査サーバー・データベースのホスティング、バックアップの保管 | ファイル本体(検査中の一時保存のみ)、検査履歴、ログ、DB バックアップ |
| Sentry | 米国 | エラー監視 | 例外発生時のスタックトレース、リクエストの URL・メソッド・ヘッダー(Cookie・認証情報を除く)、直前のログとクエリの発行記録。リクエスト本文(token・url・meta 等のパラメータ)、SQL のバインド値、IP アドレスは送らない設定にしています |
| Mailgun | 米国 | メール送信 | 登録・パスワード再設定などのメールの宛先アドレスと本文。検査に関するデータは含まない |
| Mailchimp | 米国 | 登録者リスト | 登録時のメールアドレス |
| Slack | 米国 | 運営者向けの日次集計通知 | チーム名と検査件数のみ |
7. 結果の意味と、お客様側で実装していただくこと
| 結果 | 意味 | 推奨する扱い |
|---|---|---|
clean | ClamAV で検出されなかった。「安全の保証」ではない | 通常どおり処理する |
dirty | 検出あり。found に検出名 | 保存・配布しない。必要なら利用者に通知する |
unscannable | 検査は完了したが中身を検査できなかった(暗号化 ZIP、展開上限超過)。found に理由 | 通さない。再送しても結果は変わらないので、利用者に暗号化を解く・分割するよう案内する |
error(HTTP 502 / 503) | 検査できなかった(URL の取得失敗、検査エンジンの障害)。message に理由 | 通さない。503 は時間をおいて再送する |
| 結果が返らない(タイムアウト・コールバック未達) | 検査が完了していない | 通さない(保留にして再検査する)。「検査できなければ通さない」設計を推奨します |
ウイルス検査だけでファイルアップロードの対策が完了するわけではありません。拡張子・MIME タイプ・サイズの制限、保存先での実行権限の排除、配信時の Content-Disposition の指定など、呼び出し側の対策と組み合わせてください(OWASP File Upload Cheat Sheet を参照)。
8. 運営者によるアクセスの管理
- 検査サーバーとデータベースにアクセスできるのは株式会社ダンミカの担当者 2 名に限定しています。サーバーへの接続は SSH 鍵認証のみで、パスワード認証は無効化しています。
- データベースへはサーバー内からのみ接続でき、外部からは接続できません。
- お客様の検査履歴を運営者が閲覧するのは、障害対応と、お客様からの依頼があった場合に限ります。
9. 障害・漏えい時の対応
- 障害・メンテナンスは、登録メールアドレスへ通知します。
- お客様のデータに関わる漏えい・不正アクセスが判明した場合は、判明後速やかに影響を受けるお客様へ登録メールアドレスで連絡し、原因・影響範囲・対応を報告します。
- 連絡先: info@donemika.com
10. セキュリティチェックシートの回答例
よくある設問に対する回答例です。malcheck 側で実施していることとお客様側で実装していただくことを分けて書いています。回答例は「対象ファイルを漏れなく malcheck に送り、結果が返るまで公開せず、検出時・未完了時は通さない」という運用を実装した場合のものです。自社の実装に合わせて書き換えてお使いください。そのまま使えることを保証するものではありません。
| 設問 | malcheck が実施すること | お客様側で実装すること | 回答例 |
|---|---|---|---|
| アップロードファイルのウイルスチェックを実施しているか | 受け取ったファイルを ClamAV で検査し、結果を返す | 対象ファイルを公開・利用前に漏れなく送る。結果が返るまで公開しない | 対象となるアップロードファイルを公開・利用前に外部のウイルス検査 API(malcheck)へ送信し、ClamAV で検査しています |
| 使用しているエンジンと定義の更新頻度 | ClamAV。定義は毎時更新を確認して反映 | — | ClamAV を利用し、ウイルス定義は毎時更新の有無を確認して反映しています |
| ファイルはどこに保存されるか。国外に出るか | 国内(東京)のサーバーで処理し、検査後にファイル本体を削除 | 送るファイルの範囲を決める | 検査は国内のサーバーで行われ、ファイル本体は検査後に削除されます。検査事業者のエラー監視(Sentry)とメール送信(Mailgun)は米国のサービスですが、ファイル本体は送られません |
| 検査後に何が残るか | サイズ・ハッシュ・判定結果・URL・meta を検査履歴として 1 年保存。ファイル名は保存しない | URL や meta に機密を含めない | ファイル本体とファイル名は保存されず、ハッシュ・判定結果などの検査履歴が保存されます(保持期間は 1 年。期限を過ぎた行は毎日自動削除) |
| 通信は暗号化されているか | HTTPS のみ | HTTPS で送る | 検査 API との通信は HTTPS で暗号化されています |
| ウイルスが検出された場合の扱い | dirty と検出名を返す | 保存・配布しない | 検出されたファイルは保存・公開せず、利用者に通知します |
| 検査できなかった場合の扱い | error(HTTP 502 / 503)を返す。結果が出なかった検査も 10 分で error に確定 | clean 以外は通さない。503 は再送する | 検査が完了しなかったファイルは公開せず、再検査または保留とします |
| 暗号化されたファイルの扱い | 暗号化 ZIP と展開上限超過は unscannable を返す(2026-09-14 以降のチーム。それ以前のチームは従来どおり clean、希望により切り替え) | unscannable を通さない。暗号化ファイルを受け付けない、または別途扱う | パスワード付き圧縮ファイルは検査できないため受け付けていません(検査 API が unscannable として返すため、公開しない設計にしています) |
| ログの保持期間 | アクセスログ 90 日、検査履歴 1 年(期限で自動削除) | 自社側のログ方針を書く | 検査事業者側ではアクセスログを 90 日、検査履歴を 1 年保持し、期限を過ぎたものは自動削除しています |
| 外部サービスへの接続先を IP で制限できるか | 接続先 IP を固定し IP アドレス一覧と ips.json で公開。変更は 30 日前に通知 | 送信プロキシ・ファイアウォールで宛先を制限する | 検査 API の接続先 IP は固定で公開されており、宛先を当該 IP に制限しています。IP の変更は 30 日前に通知される契約です |
| Webhook(コールバック)の送信元 IP は公開されているか | コールバックと URL 取得の送信元 IP を固定し、同じページで公開 | 受信側で送信元 IP を制限する | 検査結果のコールバックは公開された固定の送信元 IP から送られ、受信側で送信元 IP を制限しています |
11. 個別の質問票への対応
上の回答例で足りない設問がある場合は、設問をテキストで info@donemika.com または 問い合わせフォーム からお送りください。malcheck に関する回答文を表形式のテキストでお返しします。ファイル(Excel 等)への記入はお客様側でお願いしています。契約検討中でも対応します。
12. 関連文書
- 利用規約
- プライバシーポリシー(登録者の個人情報の取り扱い)
- 接続元・接続先 IP アドレス(固定 IP の一覧と変更時の通知ポリシー。ips.json)
- API ドキュメント
- ウイルスチェック API の比較(他社サービス・自前 ClamAV との比較。出典と確認日つき)