Webアプリのセキュリティ診断公開してよいか、使い続けてよいか。
事故につながる点を先に確かめる。

ソースコードを読み、外からの不正だけでなく課金の処理まで確かめます。

社内にセキュリティを見られる人がいない、中小企業のWebアプリに向けた診断です。セキュリティに詳しいアプリケーションエンジニアが、外からの不正、お金とデータの食い違い、止まったときの備え、持たなくてよいデータ、利用が増えたときの速さ、担当が変わっても直し続けられるかの6つの観点で確かめ、事故につながる点と、直すことを勧める範囲を整理します。直す順番と時期は、オンライン報告で状況を伺いながら一緒に整理します。社内での判断にも、開発会社への依頼にも使える報告書をお渡しします。

Webアプリのセキュリティ診断

77,000円〜(1日あたり・税込)

  • 報告書・オンライン報告
  • 調査だけで依頼を終えられます
  • 申し込みの前にお見積もりします

初回30分・オンライン無料。状況を伺い、調査の範囲・料金・納期をご案内します。

報告書の診断結果のまとめと結論(説明用の架空サンプル)

セキュリティ診断報告書 会員向けサービス

観点ごとの状態

  • 外から不正に使われないか大きな問題がある
  • お金とデータの扱いで、食い違いが起きないか大きな問題がある
  • 止まったとき・壊れたときに、気づけて戻せるか問題がある
  • 持たなくてよいデータを、持っていないか問題がある
  • 利用が増えても、待たされずに使えるか問題がある
  • 担当が変わっても、安全に直し続けられるか問題がある

結論

推奨する対応の範囲
重要度が Critical・High の要対応6件(ソースコードに入った本番の鍵、別の会員の情報が見える問題、請求と記録の食い違い、重なる決済、ライブラリの脆弱性など)を直すことを勧める。管理画面に入れる人は、確かめることを勧める
残るリスク
網羅的な侵入テストや、アクセスが集中したときの動作など、今回確かめなかったこと
サンプルの続きを読む

依頼するタイミング

公開する前に。使い続ける前に。納品する前に。

公開の前や、すでに使っているシステムに不安があるときに、事故につながる点がないかを確かめ、直すことを勧める範囲を整理します。ここでいう事故には、情報の漏えいだけでなく、二重請求や請求の食い違い、データが消えて戻せないこと、障害に気づけないことも含みます。

公開や業務で使い始める前

社内で作ったものや開発会社に作ってもらったもの、AIで作ったツールを、初めて外に公開したり業務で使い始めたりする。動くことは確かめたが、それ以外が気になる。

決済や個人情報を扱う機能の公開前

カード決済や会員登録、本人確認書類の受け付けなどを追加した。公開する前に、お金や個人情報の扱いに食い違いや漏れがないかを確かめたい。

ニュースなどで気になったとき

ほかの会社の情報漏えいやシステムの不具合を見聞きして、自社のシステムはどうかが気になった。何から確かめればよいかを知りたい。

受託開発の納品前

納品する前に、作った会社とは別の目でセキュリティに詳しいエンジニアが確かめます。ほかの会社が作ったシステムを引き継ぐ前の調査にも使えます。

対象の例

  • 会員向けサービス
  • 申込・決済を受け付けるシステム
  • 予約サービス
  • 社内向けWebツール
  • AIで作ったツール

上は対象のイメージです。Webアプリ・APIサーバーと、それが動くクラウドの設定を対象にしています。使っている技術や規模によって調べられる範囲が変わるため、範囲に入るか迷う場合も、無料相談で対象を確かめてからご案内します。

確かめること

セキュリティを中心に、事故につながる点を6つの観点で確かめます。

外から確かめられる入口の穴に加えて、ソースコードと設定を読み、外から試すだけでは見つけにくい穴まで確かめます。たとえば、別の会員の情報が見えてしまう、二重に請求される、といった穴です。ふだんのコードレビューは、変更した部分を見るものです。この診断では、複数の場所にまたがる食い違い、あるべき仕組みがないこと、処理が失敗したときの道筋など、変更ごとのレビューでは見えにくい課題を探します。書き方の好みのような指摘はしません。

どの依頼でも6つの観点を共通で確かめ、公開前か運用中か、決済や個人情報を扱うかに合わせて、重点的に調べる部分を決めます。

  • 外から不正に使われないか

    調べることほかの利用者のデータが見えてしまわないか、権限のない操作ができないか(ログインと権限の仕組みをソースコードから確かめます)。管理画面に入れる人(前の開発会社や退職した人のアカウントが残っていないか)、ドメイン・サーバー・各種アカウントの名義、外から呼び出せる機能(API)の公開範囲と回数の制限、パスワードやAPIキーなど秘密の値の扱い。依存しているライブラリをスキャンし、見つかった既知の脆弱性を深刻度(CVSSなど)とあわせて報告書に整理します

  • お金とデータの扱いで食い違いが起きないか

    調べること決済代行サービスなど外部サービスの仕様とコード・利用規約との突き合わせ。途中で処理が失敗したときや同じ操作が二重に行われたときに、請求と記録が食い違わないか

  • 止まったとき・壊れたときに気づけて戻せるか

    調べることエラーが起きたときに担当者へ知らせる仕組み、ログを残す期間、バックアップの取り方と戻し方

  • 持たなくてよいデータを持っていないか

    調べること個人情報や本人確認書類を必要以上に保存していないか。不要になったデータを消す仕組みがあるか

  • 利用が増えても待たされずに使えるか

    調べること利用者やデータが増えたときに遅くなる・止まる処理(一覧で1件ずつ問い合わせる、件数の上限を付けずに取得する など)、接続や通信の閉じ忘れ。合意したページの表示の速さを、Google の Core Web Vitals の指標で測ります

  • 担当が変わっても安全に直し続けられるか

    調べることお金の計算や権限の判定が複数の場所に分かれていないか、追いきれないほど大きい処理、自動テストの有無と範囲。変更のたびにテストが動く仕組み、ライブラリを更新し続ける仕組み、本番に出す手順が特定の人の手作業に頼っていないか

外から試すだけでは見つけにくい、事故の芽の例

どれも画面を外から操作するだけでは分からず、ソースコードや設定、運用の仕組みを中から見て分かるものです。

観点起きうる事故業務への影響
外からの不正辞めた社員や前の外注先のアカウントや鍵が残っていて、今も本番の管理画面やクラウド、決済代行サービスの管理画面に入れる情報を持ち出されたり、データを消されたりしても、正しいログインに見えるので気づけない
お金とデータ決済の途中で処理が失敗すると、システムの記録と決済代行サービスの請求が食い違う(請求は確定したのに、システム側は支払いの手続き中のままなど)返金や請求の漏れに、入金を照合するときや問い合わせを受けたときに初めて気づく
お金とデータ決済代行サービスからの通知を受け取っておらず、支払いの失敗・解約・返金が契約の記録に反映されない支払われていない期間もサービスが使え、解約したお客様に請求が続くことがある
止まったとき本番のアプリが使うデータが、保管期限の設定で自動的に消える状態になっている定時の処理や、入れ替えで新しく起動したサーバーが動かなくなるおそれがある
止まったとき本番のアラートや定期処理の失敗の通知が誰にも届かないシステムが止まっても、利用者からの問い合わせで初めて気づく
持たなくてよいデータ本番のログに、電話番号や住所など、直接的な個人情報が出力されているログを見られる人なら誰でも利用者の個人情報を読め、ログが漏れると個人情報の漏えいになる
利用が増えても一覧の画面で、データを1件ずつ問い合わせている申込や会員が増えるにつれて画面が遅くなり、ある時点から表示できなくなる
担当が変わっても画面に出す金額と、決済で請求する金額を、別々の処理で計算していて、テストがない料金や割引を変えるときに片方だけ直すと、画面の金額と請求が食い違う

外から狙われる穴は、非営利団体 OWASP がまとめたWebアプリの安全性を確かめる項目集(ASVS)を、対象のシステムに合わせた水準で観点にして確かめます。項目への準拠や認証を確かめるものではありません。依存関係のスキャンで分かるのは、公開されている既知の脆弱性です。それ以外は、合意した調べ方で分かる範囲での確認です。本番環境に対して攻撃を試すことはしません。試験環境に対しては、書面で同意をいただいたうえで、ツールによる自動の確認と重大なものの手での再現を行うことがあります。網羅的な侵入テストや負荷試験は含みません。確かめられなかったことは、報告書に「未確認」として書きます。

ソースコードの品質は、国際規格 ISO/IEC 5055 のもとになった弱点の一覧を見る目にして確かめます。表示の速さは Google の Core Web Vitals の指標で測り、開発と更新の仕組みは NIST の SSDF の考え方を、クラウドの設定は各社の Well-Architected Framework を目安にします。報告書では、ソフトウェアの品質を9つの特性で表す ISO/IEC 25010 に照らして、どの特性を見て、どれを見ていないかを示します。いずれも、規格への準拠や評価、各社のレビューを行うものではありません。

直しにくい作りは、直すときの事故や遅れにつながることを、場所と事実で示せるものだけを指摘します。書き方の好みや、変更ごとのレビューで足りる細かな指摘はしません。サーバーや外部サービスの利用料など運用にかかる費用は、必要な場合に参考として分けて添えます。ただし、外から呼び出せる機能に回数の制限がなく、利用料が想定を超えて膨らむおそれがあるなど事故につながるものは、ほかの指摘と同じように扱います。

報告書のサンプル

報告書で判断できるようになること。

報告書は、最初の数ページで観点ごとの状態と結論が分かるように書き、詳しい根拠は後半に参照用としてまとめます。

調査は cyfr の運営者が自分で確かめ、判断して書きます。書いた内容には、オンライン報告で直接お答えします。

  1. 01

    対応する範囲と残るリスクが分かる

    推奨する対応の範囲と、対応しても残るリスクの2つで結論を示し、その根拠を書きます。外から狙われる穴と、二重請求や請求の食い違いのようなアプリの内部の穴を同じ結論の中で示します。公開するか使い続けるかは、この結論をもとにお決めいただけます。

  2. 02

    どれが重いかが分かる

    指摘ごとに、何が起きるかと起きる条件を書き、重要度(Critical〜Low)を付けます。直す場合に何をするかも添えます。直すか、どの順に、いつまでに直すかは、公開の予定や関わる方、予算などで変わるため、オンライン報告で状況を伺いながら一緒に整理します。

  3. 03

    社内や開発会社に説明できる

    判断のための資料(経営・事業のご担当者向け)と、修正のための資料(開発者向け)に分けてまとめます。社内での判断にも、開発会社への修正の依頼にも使えます。

サンプルを飛ばして、料金と範囲を見る

説明用の架空サンプル

報告書の構成と書き方を説明するために作った架空の例です。実在の会社・システム・調査結果ではありません。書き方が分かるように、指摘の件数を絞っています。これまでの診断では、1つのシステムで指摘が70件前後になりました。実際の報告書の内容と分量は、対象と調べる範囲によって変わります。

セキュリティ診断報告書 会員向けサービス(申込・カード決済)

今回決めたいこと
このまま公開してよいか(可否ではなく、判断の材料として、直すことを勧める範囲と残るリスクを示す)
対象
架空の事業者が公開を予定している、申込とカード決済を受け付ける会員向けサービス(Webアプリ、未公開。AWS 上の構成)
調べ方
既存の試験環境を使わせていただき、申込から決済までの流れを動かして確かめた。書面で同意をいただいたうえで、試験環境に対してツールで自動の確認を行い、見つかったもののうち重大なものを手で再現して確かめた(確認の前に、決済がテスト用の設定で、メールが外に送られないこと、データを消す機能を対象から外したこと、バックアップがあることを確かめた)
調べたもの
ソースコードと設定(2つのリポジトリ)、依存しているライブラリのスキャン、AWS の設定と記録の読み取り、セキュリティに関わるヘッダーとHTTPSの設定、合意した2ページの表示の速さの測定、決済代行サービスの仕様書と利用規約、試験環境での申込から決済までの流れ、試験環境に対するツールでの自動の確認と、重大なものの手での再現、事業のご担当者1名への聞き取り
外からの攻撃を見る観点
OWASP ASVS 5.0.0 の L2(このシステムに合わせて選んだ水準)を参照した。ASVS への準拠や認証を確かめたものではない
調べなかったもの
AWS の権限の設定とエラー監視サービスの設定(閲覧の権限や資料を用意できなかった)、網羅的な侵入テスト、アクセスが集中したときの動作の測定(負荷試験)
対象の版
調べ始めた日の main ブランチ(Webアプリ a1b2c3d・インフラ 4e5f6a7)
発行日・版
第1版

この資料の構成

第1部判断のための資料

経営・事業のご担当者、決裁者の方向け

  • 診断結果のまとめ(観点ごとの状態と、いちばん大きいリスク)
  • 結論(推奨する対応の範囲、残るリスク)と、その根拠
  • 対応しない場合のリスクと、確かめられたこと
  • 参考: 表示の速さ(Core Web Vitals)
  • 参考: 費用について
  • 今回の範囲と、用語の説明

第2部修正のための資料

修正を担当する開発者の方向け

  • 指摘の一覧
  • 対象の技術情報と、ツールでの確認の結果
  • 指摘ごとの該当箇所(ファイルと行)
  • コード上で起きていることと、起きる条件
  • 直す場合に行うことと、直したあとに満たすべき状態
  • 問題なしと判断した確認の内容

第1部判断のための資料 経営・事業のご担当者、決裁者の方向け

1. 診断結果のまとめ

観点ごとに、今回の方法と範囲で分かったことをまとめた。状態は、その観点の指摘の状態と重要度から決まる(表の下の注記)。「今回の範囲では問題は見つからなかった」は、安全であることの保証ではない。重要度の見方は「7. 今回の範囲と、用語の説明」。

観点ごとの状態(架空のサンプル)
観点状態ひとことで指摘の件数
外から不正に使われないか大きな問題がある本番の鍵がソースコードに書かれ、申込の詳細画面では URLの番号を変えると別の会員の申込内容が見られる。管理画面に入れる人の範囲は確かめられなかった(指摘1・指摘2・指摘3)。
  • 要対応11件(Critical 1・High 2・Medium 5・Low 3)Critical・High: 指摘1・3・6
  • 未確認1件(Critical 1)未確認の Critical・High: 指摘2
  • 問題なし4件
お金とデータの扱いで、食い違いが起きないか大きな問題がある決済のあとの処理で失敗すると請求と契約の記録が食い違い、押し直しで決済が重ねて作られる。本番用の設定に試験用の決済のキーが入っている(指摘4・指摘5・指摘7)。
  • 要対応3件(High 3)Critical・High: 指摘4・5・7
  • 問題なし1件
止まったとき・壊れたときに、気づけて戻せるか問題がある決済の失敗を社内に知らせる仕組みが見つからず、ログも3日で消える。バックアップから戻せるかと、エラー監視サービスの通知の設定は確かめられなかった(指摘10・指摘16・指摘17)。
  • 要対応1件(Medium 1)
  • 未確認2件(Medium 2)
持たなくてよいデータを、持っていないか問題がある解約した会員の本人確認書類を消す仕組みがない(指摘19)。カード番号は、このシステムが受け取らない作りだった(指摘24)。
  • 要対応1件(Low 1)
  • 問題なし1件
利用が増えても、待たされずに使えるか問題がある管理画面の申込の一覧は、申込1件ごとに会員の情報を問い合わせ、取得する件数にも上限がない。申込が増えるほど表示が遅くなる作りになっている(指摘12)。
  • 要対応1件(Medium 1)
担当が変わっても、安全に直し続けられるか問題がある契約の状態を変える処理が4か所に分かれていて、自動テストがない。解約や支払いの扱いを変えるときに、直し漏れで記録が食い違うおそれがある(指摘11・指摘22)。
  • 要対応2件(Medium 1・Low 1)

状態の決め方: 重要度が Critical か High の要対応があれば「大きな問題がある」、ほかの要対応があれば「問題がある」、要対応がなく未確認があれば「確かめられなかったことがある」、問題なしだけなら「今回の範囲では問題は見つからなかった」。

いちばん大きいリスク
  • 本番の決済とメール送信の鍵が、ソースコードの中にそのまま書かれている。リポジトリを読める開発の協力会社の人を含め、リポジトリを持つ人は本番の鍵を使える(指摘1)。
  • ログインしている会員が URLの番号を変えると、ほかの会員の氏名、住所、契約の内容が表示される(指摘3)。
  • 決済が終わったあとの処理で失敗すると、請求されたのに契約の記録が残らない。申込の押し直しなどで、同じ申込の決済や契約が重ねて作られる(指摘4・指摘5)。
要対応
19件
未確認
3件
問題なし
6件
うち Critical・High
6件

左の3つは指摘の状態ごとの件数(合計28件)。右は、要対応のうち重要度が Critical か High のもの。要対応19件の重要度は Critical 1件・High 5件・Medium 8件・Low 5件、未確認3件の問題があった場合の重要度は Critical 1件・Medium 2件。状態と重要度の見方は「7. 今回の範囲と、用語の説明」。

サンプルの続きを読む(結論・対応しない場合のリスク・第2部など)サンプルの続きを閉じる

2. 結論

結論
推奨する対応の範囲
重要度が Critical・High の要対応6件を直すことを勧める。ソースコードに入っている本番の鍵(指摘1)、別の会員の申込内容が見える箇所(指摘3)、請求と記録の食い違いと重なる決済(指摘4・指摘5)、ライブラリの脆弱性と本番用の決済のキー(指摘6・指摘7)。あわせて、Medium のうち、決済の失敗に気づけるかに関わる知らせの仕組み(指摘10)も、直すことを勧める。管理画面に入れる人(指摘2)とエラー監視サービスの通知の設定(指摘17)は、確かめることを勧める。直した場合は、試験環境で、会員ごとに見える範囲と申込から決済までの流れを確かめ直すことを勧める。
残るリスク
推奨する対応を済ませても、今回確かめなかったことに関わるリスクは残る。網羅的な侵入テストで分かること、アクセスが集中したときの動作、AWS の権限の設定とエラー監視サービスの設定のうち今回閲覧できなかったもの。また、依存しているライブラリには、公開後も新しい既知の脆弱性が見つかることがある。
判断の根拠

外から狙われる穴

  • ログインの状態を扱うライブラリに、深刻度が High の既知の脆弱性があり、このシステムはその脆弱性が起きる設定で使っている(指摘6)。
  • 管理画面はメールアドレスとパスワードだけで入れ、ログインの試行の回数も制限していない。管理画面に入れる人のパスワードが知られると、すべての会員の情報を見られる(指摘8)。
  • 問い合わせフォームの確認画面で、細工した値を入れるとスクリプトが動く。悪意のあるリンクを開いた利用者の画面で、意図しない操作をされるおそれがある(指摘9)。

アプリの内部と設定の穴(ソースコードと設定を読んで見つけたもの)

  • 本番の決済とメール送信の鍵が、ソースコードの中にそのまま書かれていて、リポジトリを持つ人は本番の鍵を使える(指摘1)。管理画面に入れる人の範囲は、確かめられなかった(指摘2)。
  • 申込の詳細画面で、URLの番号を変えると、ログインしている会員とは別の会員の申込内容(氏名、住所、契約の内容)が見られる(指摘3)。
  • 決済が終わったあとの処理で失敗すると、請求されたのに契約の記録が残らない。申込の押し直しや決済完了の画面の開き直しでは、同じ申込の決済や契約が重ねて作られる(指摘4・指摘5)。
  • 本番用の設定に試験用の決済のキーが入ったままで、このまま公開すると申込が実際の請求につながらない(指摘7)。決済の失敗を知らせる仕組みも見つからない(指摘10)。
  • 契約の状態を変える処理が4か所に分かれていて自動テストがなく、管理画面の申込の一覧は申込が増えるほど遅くなる作りになっている。どちらも、それだけで今の利用者に事故が起きるものではないため、推奨する対応の範囲には入れていない(指摘11・指摘12)。

確かめられたこと

  • カード番号はこのシステムが受け取らない作りで、請求額も利用者が送る値で決めていない。データベースへの問い合わせに入力値をそのまま埋め込む箇所や、インターネットから直接届く設定は見つからなかった(指摘24〜指摘27)。
未確認の事項
  • 管理画面に入れる人の範囲。AWS 側の設定で決まるため、ソースコードからは分からず、その設定を見る権限は用意できなかった(指摘2)
  • バックアップから戻せるか。バックアップが毎日取られていることは確かめたが、戻す手順は試していない(指摘16)
  • エラー監視サービスの通知を受け取る人と設定。資料が届いていないため(指摘17)

結論を見直す条件: 管理画面に入れる人に、退職した人や外部の人のアカウントが見つかった場合は、そのアカウントでの操作の記録を確かめることを、推奨する対応の範囲に加える。試験環境にバックアップを戻して記録がそろわない場合は、指摘16を要対応にし、戻す手順を整えることを推奨する対応の範囲に加える。エラー監視サービスから、決済の失敗がすでに担当者に届く設定になっていると分かった場合は、指摘10のうち知らせの仕組みを、推奨する対応の範囲から外す。

3. 対応しない場合のリスク(抜粋)

要対応と未確認の指摘のうち、特に判断に関わるものを重要な順に詳しく載せた。「そのほかの指摘」は、見出しと影響だけを載せた。未確認の重要度は、確かめた結果、問題があった場合の重要度。開発者向けの詳細は、第2部の同じ番号を参照。

指摘1要対応Critical
本番の決済とメール送信の鍵と、署名用の秘密が、ソースコードの中にそのまま書かれている

調べ方ソースコード・設定公式資料サービスの設定

対応しないと
リポジトリやその写しを持つ人は、本番の鍵を使える状態にある。決済代行サービスの公式資料によれば、この鍵では決済の情報の読み出しや返金ができ、メール送信の鍵では、このサービスの名前でメールを送れる。今後リポジトリを渡す相手にも、鍵が渡ることになる。
起きていること
ソースコードの変更履歴(git)で管理している設定ファイルに、決済代行サービスとメール送信サービスの本番の鍵と、パスワードの再設定に使う署名の秘密が、そのまま書かれている。リポジトリは、開発を手伝った協力会社の2人も読める設定になっている。サーバーの秘密の置き場所にも同じ鍵があるが、アプリはソースコードの値を先に読む。鍵の一覧と、誰が持ち、いつ変えるかを書いた資料は見つからなかった。
直す場合に行うこと
本番の鍵をすべて作り直し、古いものを無効にする。鍵はソースコードから外してサーバーの秘密の置き場所から読み、鍵ごとに持つ人と入れ替えの決まりを書き残す。
指摘2未確認問題があった場合Critical
管理画面に入れる人の範囲が分からない

調べ方ソースコード・設定

確かめないと
退職した人や開発を手伝った外部の人が管理画面に入れる状態だと、会員の個人情報や契約の記録を見られたり、書き換えられたりするおそれがある(誰が入れるかは確かめていない)。
起きていること
管理画面に入れる人は、ソースコードではなく、AWS 側の利用者と権限の設定で決まっている。今回はその設定を見る権限を用意できなかったため、確かめていない。
確かめる場合に行うこと
AWS の管理画面で、管理画面に入れる利用者の一覧を確かめ、今は使っていないものを外す。
指摘3要対応High
申込の詳細画面で、URLの番号を変えると、別の会員の申込内容が見られる

調べ方ソースコード・設定動作の確認

対応しないと
ログインしている会員なら誰でも、URLの番号を変えるだけで、ほかの会員の氏名、住所、契約の内容を見られる。個人情報の漏えいとして、会員への連絡や個人情報保護委員会への報告が必要になることがある。
起きていること
ソースコードで、会員ごとのデータを番号で探している処理(14か所)をすべて確かめた。ログインしている会員のものかを確かめていなかったのは、申込の詳細を返す処理の1か所だった。この処理は、URLに含まれる申込の番号でデータを探していて、申込の番号は1から順に振られている。試験環境で、会員Aでログインしたまま会員Bの申込の番号を開くと、会員Bの申込内容が表示されることを確かめた。
直す場合に行うこと
申込の詳細を返す処理で、申込がログインしている会員のものかを確かめ、違う場合は表示しない。今後、会員ごとのデータを番号で探す処理を足すときも、同じ確かめを入れる。
指摘4要対応High
決済が終わったあとの処理で失敗すると、請求されたのに契約の記録が残らないおそれがある

調べ方ソースコード・設定動作の確認

対応しないと
利用者には請求が届くのに、サービス側には契約がない状態になる。利用者からの問い合わせで初めて気づき、返金や記録の修正に手間がかかる。
起きていること
ソースコードで申込の処理の順を追うと、決済代行サービスで決済を確定したあとに、契約の記録をデータベースに書き込む順になっている。書き込みに失敗したときに、決済を取り消す処理も、あとから記録を作り直す処理もない。試験環境で書き込みを失敗させると、決済だけが残ることを確かめた。
直す場合に行うこと
決済の確定と契約の記録が食い違ったときに、決済を取り消すか、記録を作り直す仕組みを作る。決済代行サービスが決済の結果を知らせる仕組みを、記録の作り直しに使えるかを確かめる。
そのほかの指摘(抜粋)
指摘5要対応High
申込のボタンの押し直しや決済完了の画面の開き直しで、同じ申込の決済や契約が重ねて作られる

通信が遅いときに申込のボタンを押し直したり、決済完了の画面を開き直したりすると、同じ利用者に同じ金額が2回請求され、契約と領収のメールも重ねて作られる。返金の手間がかかり、利用者の信頼も損ねる。

指摘9要対応Medium
問い合わせフォームに入力した値が、確認画面でスクリプトとして動く

悪意のある人が細工したリンクを用意し、利用者がそれを開くと、利用者の画面でスクリプトが動く。ログインしている会員なら、その会員として意図しない操作をされるおそれがある(クロスサイトスクリプティング)。

指摘11要対応Medium
契約の状態(申込中・有効・解約)を変える処理が4か所に分かれていて、自動テストがない

解約や支払いの失敗の扱いを変えるときは、4か所を同じように直す必要がある。直し漏れがあると、解約した会員に請求が続く、支払っていない会員が使い続けられるといった食い違いが起きるおそれがある。テストがないため、食い違いに気づく仕組みもない。

指摘12要対応Medium
管理画面の申込の一覧で、申込1件ごとに会員の情報を問い合わせていて、取得する件数にも上限がない

申込が増えるほど一覧の表示が遅くなり、ある時点から時間内に表示できなくなるおそれがある。申込の確認や問い合わせへの対応が滞る。

4. 確かめられたこと

今回の方法と範囲で確かめ、問題が見つからなかったもの。安全であることの保証ではない。何をどう確かめたかは、第2部「問題なしと判断した確認の内容」に載せた。

確かめた結果(架空のサンプル)
番号確かめた結果調べ方
指摘23HTTPSとセキュリティに関わる主なヘッダーが、すべての画面で同じ設定になっていたヘッダー・HTTPSサービスの設定
指摘24カード番号は決済代行サービスの部品で受け取っていて、このシステムのサーバーとログを通らなかったソースコード・設定動作の確認
指摘25データベースへの問い合わせに、入力値をそのまま使う箇所は見つからなかったソースコード・設定ツールでの確認
指摘26請求額は、サーバー側でプランから決めていて、利用者が送る値を使っていなかったソースコード・設定
指摘27データベースに、インターネットから直接届く設定は見つからなかったサービスの設定
指摘28本人確認書類を置くファイルの置き場所は、公開の設定になっていなかったサービスの設定

5. 参考: 表示の速さ

指摘とは分けて、参考として、合意したページの表示の速さを、Google が示す Core Web Vitals の指標で示した。評価は Google の基準(良好・改善が必要・不良)に当てはめたもの。重要度は Information(指摘ではない参考)。

合意したページの表示の速さ(架空のサンプル)
ページ値の出どころLCPINP(手元は TBT)CLS
試験環境のトップページ手元の測定2.1秒(良好)120ms(基準なし)0.02(良好)
試験環境の申込の画面手元の測定2.8秒(改善が必要)340ms(基準なし)0.04(良好)

使ったもの: Lighthouse 13.5.0(モバイルの既定の設定、3回の中央値)。実際の利用者の値は、公開前のためなし。LCP はいちばん大きな表示が出るまでの時間、INP は操作してから画面が変わるまでの時間、CLS は表示の途中で画面の中身がずれる量。手元の測定は、cyfr の環境でモバイルの端末を模擬して3回測った中央値で、回線や機械の速さで変わり、実際の利用者の体感と同じではない。手元の測定では INP を測れないため、代わりの目安として TBT(読み込みの間に、操作に応えられない時間の合計。基準はない)を出した。

6. 参考: 費用について

指摘とは分けて、参考として、費用に関わって気づいたことを書いた。重要度は Information(指摘ではない参考)。金額の見積もりではない。

  • Information試験環境のデータベースとサーバーが、使わない夜間と休日も動き続けている
  • Information開発の途中で作ったサーバーの写しが3つと、どこにもつながっていないディスクが1つ残っている
  • Informationデータベースの詳しい監視を、本番と試験環境の両方で有効にしている

7. 今回の範囲と、用語の説明

状態の見方
要対応
確認できた問題があり、対応が必要
未確認
今回の範囲では確かめられなかった。追加の確認が必要
問題なし
今回の方法と範囲で確かめ、問題は見つからなかった
重要度の見方
Critical
個人情報・ほかの利用者のデータ、お金、本番の鍵や管理の権限、止まって戻せないこと、のどれかに届き、ログインせずに外からの要求だけで起きるもの、または起きる条件をすでに満たしている人がいるもの
High
同じ結果に届き、ログインした利用者なら誰でも起こせるもの、ふつうの操作やよくある失敗で起きるもの
Medium
同じ結果に届くが、ほかの条件が重ならないと起きないもの。届く相手が特定の利用者に限られるもの。気づくのや戻すのが遅れるもの
Low
それだけでは上の結果に届かないもの(備え・運用の改善など)
Information
指摘にしない参考(「参考: 表示の速さ」「参考: 費用について」)。番号は振らない

重要度は、起きたときの結果と起きる条件から付けた分類で、直す順番や時期を決めたものではない。直すか、いつ直すかは、貴社の状況(公開の予定、関わる方、予算など)に合わせてお決めいただく。未確認の指摘は、確かめた結果、問題があった場合の重要度。重要度は、依存関係のスキャンの区分(CVSS)と同じ言葉を使っている。CVSS は部品の脆弱性そのものの深刻度、重要度はこのシステムでどの結果に届くかを確かめた範囲で付けたもの。両方を比べて、このシステムでの重要さを判断できる。

調べ方の見方
ソースコード・設定
ソースコード・設定ファイル・変更履歴を読み、検索して確かめた
公式資料
外部サービスやクラウドの公式資料と突き合わせた
サービスの設定
受け取った権限や画面の共有で、クラウドや外部サービスの設定と記録(メトリクス・ログなど)を見て確かめた
依存関係のスキャン
ツールで、依存しているライブラリの既知の脆弱性を調べた
ヘッダー・HTTPS
合意したページを読み込み、セキュリティに関わるヘッダーと HTTPS の設定を確かめた
動作の確認
合意した環境で画面を操作し、実際の動きを確かめた
ツールでの確認
書面で同意をいただいた試験環境に対してツールで確認を行い、重大なものは手で再現して確かめた
品質特性と、この診断の観点(ISO/IEC 25010)

ソフトウェアの品質を9つの特性で表す国際規格 ISO/IEC 25010:2023 に照らして、この診断の観点がどの特性を見ているかを示す。規格に沿った評価や、準拠を確かめたものではない。

品質特性と、この診断の観点
品質特性この診断の観点
機能適合性(Functional suitability)お金とデータの扱いで、食い違いが起きないか(お金と記録の食い違いに関わるところだけを見る。機能が仕様どおりに動くかの全体の試験はしない)
性能効率性(Performance efficiency)利用が増えても、待たされずに使えるか
互換性(Compatibility)今回の診断では見ていない
インタラクション能力(Interaction capability)今回の診断では見ていない
信頼性(Reliability)止まったとき・壊れたときに、気づけて戻せるか/お金とデータの扱いで、食い違いが起きないか
セキュリティ(Security)外から不正に使われないか/持たなくてよいデータを、持っていないか
保守性(Maintainability)担当が変わっても、安全に直し続けられるか
柔軟性(Flexibility)今回の診断では見ていない
安全性(Safety)今回の診断では見ていない
外からの攻撃を見る観点

OWASP ASVS 5.0.0(Web アプリケーションの安全性を確かめる項目を、非営利団体 OWASP がまとめたもの)の L2(253件)を、外部からの攻撃を見る観点として参照した。ASVS への準拠を確かめたもの・認証したものではない。

ASVS の項目ごとの判定: 満たす 128件・満たさない 41件・該当しない 62件・未確認 22件。件数は ASVS の項目の数で、指摘の件数ではない。該当しないは、使っていない機能に当たる項目。指摘に関わる項目の番号は、第2部の各指摘に載せた。

ソースコードの品質を見る観点

ISO/IEC 5055:2021(ソースコードの品質を、信頼性・性能効率・保守性・セキュリティの特性ごとの弱点で表す国際規格)のもとになった、CISQ の品質の測定の弱点の一覧(CWE 4.20 の CWE-1305)を、観点を調べるときの見る目として参照した。規格に沿った測定や、準拠を確かめたものではない。指摘に関わる弱点の番号は、第2部の各指摘に載せた。

今回の範囲に含めなかったこと
  • 網羅的な侵入テスト、修正作業
  • 負荷試験・サーバーの性能の測定(表示の速さは、合意したページで Core Web Vitals の指標を測るだけ)
  • ソースコードの品質の測定・点数付け(規格に沿った測定や、準拠の確認)
  • スキャンで見つかった脆弱性の具体的な修正方針の検討と、修正したあとの動作確認
  • 費用の見積もり
  • 本番環境に対して攻撃を試すこと
  • 公開してよいかの可否の判定
用語の説明
二要素認証
パスワードに加えて、スマートフォンのアプリなど別の手段でも本人を確かめる仕組み
HTTPS
ブラウザとサーバーの間の通信を暗号化する仕組み
依存関係のスキャン
システムが使っているライブラリに、公表された脆弱性がないかをツールで調べること
CVE・CVSS
公表された脆弱性の番号と、その深刻度を0〜10で表した点数
ASVS
Web アプリケーションの安全性を確かめる項目を、非営利団体 OWASP がまとめたもの
Core Web Vitals
Google が示す、Webページの表示の速さと、表示の途中で中身がずれないかの指標
冪等キー
同じ依頼が2回届いても、1回分として扱ってもらうために添える値

第2部修正のための資料 修正を担当する開発者の方向け

指摘の番号は第1部と共通。修正の方法と直したあとの動作確認は今回の範囲外。「直したあとに満たすべき状態」は、修正を担当する方が確かめるときの目安として書いている。

8. 指摘の一覧

指摘の一覧(架空のサンプル。未確認の重要度は、問題があった場合の重要度。詳細は、このサンプルに載せた指摘だけにリンクを付けた)
番号状態指摘重要度詳細
指摘1要対応本番の決済とメール送信の鍵と、署名用の秘密が、ソースコードの中にそのまま書かれているCritical—
指摘2未確認管理画面に入れる人の範囲が分からない問題があった場合Critical—
指摘3要対応申込の詳細画面で、URLの番号を変えると、別の会員の申込内容が見られるHigh詳細へ
指摘4要対応決済が終わったあとの処理で失敗すると、請求されたのに契約の記録が残らないおそれがあるHigh—
指摘5要対応申込のボタンの押し直しや決済完了の画面の開き直しで、同じ申込の決済や契約が重ねて作られるHigh詳細へ
指摘6要対応ログインの状態を扱うライブラリに、深刻度が High の既知の脆弱性があるHigh—
指摘7要対応本番用の設定に試験用の決済のキーが入ったままになっているHigh—
指摘8要対応管理画面はメールアドレスとパスワードだけで入れ、ログインの試行の回数も制限していないMedium—
指摘9要対応問い合わせフォームに入力した値が、確認画面でスクリプトとして動くMedium—
指摘10要対応決済の失敗を社内に知らせる仕組みが見つからず、ログも3日で消えるMedium—
指摘11要対応契約の状態(申込中・有効・解約)を変える処理が4か所に分かれていて、自動テストがないMedium—
指摘12要対応管理画面の申込の一覧で、申込1件ごとに会員の情報を問い合わせていて、取得する件数にも上限がないMedium詳細へ
指摘13要対応ログアウトしてもサーバー側でログインの状態を切れず、ログインの状態に期限もないMedium—
指摘14要対応AWS の最上位の利用者に、二要素認証が設定されていないMedium—
指摘15要対応本番にデプロイする権限を、どのブランチの処理からでも受け取れるMedium—
指摘16未確認バックアップから戻せるかが分からない問題があった場合Medium—
指摘17未確認エラー監視サービスの通知を受け取る人と設定が分からない問題があった場合Medium—
指摘18要対応深刻度が Medium の既知の脆弱性があるライブラリが2件あるLow—
指摘19要対応解約した会員の本人確認書類を消す仕組みがないLow—
指摘20要対応管理画面で、誰がいつ何を操作したかを記録していないLow—
指摘21要対応データベースの保存時の暗号化が設定されていないLow—
指摘22要対応申込の処理が約1,800行の1つのファイルにまとまっていて、決済・契約・メールの処理が入り組んでいるLow—
指摘23問題なしHTTPSとセキュリティに関わるヘッダーが設定されている詳細へ
指摘24問題なしカード番号を、このシステムが受け取らない作りになっている詳細へ
指摘25問題なしデータベースへの問い合わせに、入力値をそのまま埋め込んでいない詳細へ
指摘26問題なし請求額を、利用者が送る値で決めていない—
指摘27問題なしデータベースに、インターネットから直接届く設定はない—
指摘28問題なしファイルの置き場所が、公開の設定になっていない—

9. 対象の技術情報と、ツールでの確認

使っている技術
TypeScript(Node.js 22)、PostgreSQL、AWS(コンテナで動かす構成)、決済代行サービスとメール送信サービスのAPI
規模
約1万2千行、画面は18(管理画面を含む)。自動テストは、料金の計算だけ
依存関係のスキャン
使ったツール
npm audit
対象
package-lock.json(開発用を含む640件。本番で動くのは210件)
結果
既知の脆弱性が4件(深刻度 High 1件・Medium 2件・Low 1件)
見つかった脆弱性の整理(架空のサンプル)
深刻度(CVSS)対象このシステムでの使われ方報告書での扱い
High・1件ログインの状態を扱うライブラリログインと、ログイン中の会員の確認で動く。脆弱性が起きる条件に当てはまる設定で使っている指摘6(High)。脆弱性が起きる設定で使っているため、指摘にした
Medium・2件通信と文字列の処理のライブラリ本番の全画面で動く。脆弱性が起きる処理を使っているかは、コードで確かめていない指摘18(Low)。起きる道筋を確かめていないため、CVSS より低く付けた
Low・1件開発用の道具本番では動かない本番では動かないため、指摘にしていない

表の深刻度は CVSS の区分で、報告書の重要度とは別。スキャンで分かるのは、公開されている既知の脆弱性に限られる。見つかったものは、このシステムでの使われ方と照らし合わせて、指摘にするかと重要度を決めた。実際の報告書では、パッケージ名、今の版と修正された版、CVE番号、CVSSの値も書く。

試験環境に対する自動の確認
使ったツール
ZAP(自動の確認)、Burp Suite(手での再現)
対象
試験環境の会員向けの画面と、申込から決済までの流れ。管理画面と、データを消す機能は対象から外した
行い方
書面で同意をいただいた範囲と日時に行った。行う前に、決済がテスト用の設定で、メールが外に送られないことと、試験環境のバックアップがあることを確かめた
結果
警告42件。手で確かめ、実際の問題として報告に残したのは1件(指摘9)。疑いが強かった検索画面の1件は、手で再現して問題がないことを確かめた(指摘25)。残りの40件は、このシステムでは実害のないものか、手で確かめて問題がなかったもの

ツールの警告は、ソースコードと照らし合わせ、実害があるものだけを報告に残した。

10. 指摘の詳細(抜粋)

指摘3要対応
申込の詳細画面で、URLの番号を変えると、別の会員の申込内容が見られる

重要度: High ASVS: V8.2.2・V8.4.1 調べ方ソースコード・設定動作の確認

該当箇所
src/app/api/applications/[id]/route.ts:12-34src/app/api/applications/route.ts:9-21
コード上で起きていること
申込の詳細を返す処理は、URLの番号で申込を1件探していて(18行目)、条件にログインしている会員の番号を含めていない。一覧を返す処理は、ログインしている会員の番号で絞っている。会員ごとのデータを番号で探す処理は14か所あり、絞っていないのはこの1か所だけだった。申込の番号はデータベースの連番。
起きる条件
会員としてログインし、自分のものではない申込の番号で詳細を開く。
業務への影響
ログインしている会員なら誰でも、ほかの会員の氏名、住所、契約の内容を見られる。番号は連番なので、対象はすべての会員の申込に及ぶ。
直す場合に行うこと
申込の詳細を返す処理で、申込がログインしている会員のものかを確かめ、違う場合は表示しない。会員ごとのデータを番号で探すほかの処理にも、同じ確かめがあることを保つ。
直したあとに満たすべき状態
ログインしている会員のものではない申込の番号を開くと、内容が返らないこと。自分の申込は、これまでどおり開けること。
指摘5要対応
申込のボタンの押し直しや決済完了の画面の開き直しで、同じ申込の決済や契約が重ねて作られる

重要度: High ASVS: V2.3.3・V2.3.4 調べ方ソースコード・設定公式資料動作の確認

該当箇所
src/app/api/applications/route.ts:42-88src/app/apply/complete/page.tsx:20-57src/components/apply-button.tsx:15-31
コード上で起きていること
申込のたびに、決済代行サービスへ新しい決済の作成を依頼していて、重複を防ぐためのキー(冪等キー)を送っていない。決済完了の画面は、開かれるたびに契約の記録と領収のメールを作り、その決済をすでに処理したかを確かめていない。申込のボタンは、送信中も押せる。
起きる条件
申込の送信中にボタンを押し直す。通信が途切れて画面を読み込み直し、もう一度送信する。または、決済完了の画面を開き直す。
業務への影響
同じ利用者に同じ金額が2回請求され、契約と領収のメールも重ねて作られる。返金の手間がかかり、利用者の信頼も損ねる。
直す場合に行うこと
同じ申込から、決済と契約の記録とメールが1件ずつだけ作られるようにする。決済代行サービスが用意している、重複を防ぐ仕組み(冪等キー)を使えるかを確かめる。
直したあとに満たすべき状態
同じ申込を何回送っても、決済が1件だけ作られること。決済完了の画面を開き直しても、契約と領収のメールが1件のままであること。
指摘12要対応
管理画面の申込の一覧で、申込1件ごとに会員の情報を問い合わせていて、取得する件数にも上限がない

重要度: Medium CWE: CWE-1050 調べ方ソースコード・設定

該当箇所
src/app/admin/applications/page.tsx:18-46src/lib/db/applications.ts:30-52
コード上で起きていること
申込の一覧は、すべての申込を1回で取り出したあと、繰り返しの中で申込ごとに会員の情報をデータベースに問い合わせている。100件の申込を表示すると、問い合わせは101回になる。一覧の取得に、件数の上限やページ送りはない。
起きる条件
申込が増えたあとに、管理画面で申込の一覧を開く。
業務への影響
申込が増えるほど一覧の表示が遅くなり、ある時点から時間内に表示できなくなるおそれがある。件数と表示にかかる時間の関係は、今回は測っていない。
直す場合に行うこと
申込の一覧で、1回に取得する件数に上限を付け、会員の情報を申込1件ごとに問い合わせないようにする。
直したあとに満たすべき状態
申込の件数に関わらず、一覧の1回の表示で読み込む件数と、データベースへの問い合わせの回数が変わらないこと。

11. 問題なしと判断した確認の内容(抜粋)

指摘23問題なし
HTTPSとセキュリティに関わるヘッダーが設定されている

試験環境の画面を読み込み、証明書、HTTPからHTTPSへの転送、セキュリティに関わる主なヘッダーを確かめた。本番環境のサーバーの設定とソースコードとも突き合わせ、公開後も同じ設定になることを確かめた。

指摘24問題なし
カード番号を、このシステムが受け取らない作りになっている

カード番号の入力欄は、決済代行サービスが用意した部品の中にあり、入力されたカード番号は、このシステムのサーバーを通らない。試験環境で申込を行い、サーバーに届く内容とログに、カード番号が含まれないことを確かめた。

指摘25問題なし
データベースへの問い合わせに、入力値をそのまま埋め込んでいない

検索や申込など、利用者が入力した値を使う問い合わせは、すべて値を文と分けて渡す書き方になっている。入力値をつなげて問い合わせの文を組み立てている箇所は見つからなかった。試験環境に対するツールでの自動の確認では、検索画面で1件、この問題を疑う反応が出た。手で再現して確かめたところ、入力の誤りを知らせる通常の画面で、問い合わせの文は組み立て直されていなかった。

このサンプルは、報告書の一部を抜き出して短くまとめたものです。報告書は、今回の方法と範囲で確かめた内容をまとめたもので、システムが安全であることを保証するものではありません。

調査の範囲と費用を相談する

初回30分・オンライン無料。状況を伺い、調査の範囲・料金・納期をご案内します。

担当者

不審なアクセスへの対応と、課金や個人情報の扱いに、作る側として関わってきた経験から。

不審なアクセスに運用の中で対応してきた

運用しているシステムで、不審なアクセスを記録や監視から見つけ、遮断する作業を定期的に行っています。あわせて、影響の範囲の調査、漏れた可能性のあるキーやパスワードの入れ替え、入口になった設定やライブラリの修正、監視の追加、経緯のご報告までを担当してきました。

課金まわりを作る側として担ってきた

これまで関わった多くのシステムで、課金まわりの設計と実装を担当してきました。二重請求や、キャンセルしたのに請求された、金額が合わないといった問い合わせの調査と対応から、再発を防ぐための見直しまで行ってきました。

個人情報をどこに何を持つかから考える

個人情報は、作る段階からどこに何を持つかを意識してきました。AIとほかのシステムをつなぐ仕組みを作ることも多く、AIに渡す情報の範囲にも気を配っています。これまで関わったシステムのお客様には、どの情報が個人情報にあたるかと、扱い方のおすすめをお伝えし、個人情報保護法についての資料もお渡ししてきました。法律上の最終的な判断は、専門家の意見を聞いて決めていただくようお願いしています。

他社のコードや構成を読み解く

これまで関わった案件で、他社から引き継いだサービスの立て直しや、改修が難しくなっていたシステムの刷新に取り組んできました。他の人やAIが書いたコードを読み、事故につながる穴がどこにあるかを確かめます。

サーバーから運用まで分けずに見る

インフラ、サーバーサイド、フロントエンドまで、業種の異なるさまざまなシステムの開発と運用に関わってきました。

料金と範囲

料金は1日あたり77,000円(税込)。総額は申し込みの前に決めます。

1日あたり77,000円(税込)です。無料相談で対象と決めたいことを伺い、調べる範囲と確かめ方から作業量を見積もって、申し込みの前に総額と報告書をお渡しする日をお伝えします。

中小企業のシステムの規模に合った費用で依頼できるよう、調べる範囲をWebアプリとそれが動くクラウドの設定に絞り、調査と報告書の作成にAIを使って手間を抑えています。何を確かめるかを決めることと、見つかった点が事故につながるかの判断は、セキュリティに詳しいアプリケーションエンジニアが行います。

調べ方

  • 基本(どのシステムでも)ソースコードとサーバー・外部サービスの設定を読んで確かめます。依存しているライブラリをツールでスキャンし、既知の脆弱性を調べます。セキュリティに関わるヘッダーやHTTPSの設定もツールで確かめ、ソースコードと突き合わせます。合意したページの表示の速さも、Google の Core Web Vitals の指標で測ります。
  • 動かして確かめる(試験環境がある場合)お金や個人情報が動く流れを試験環境で操作して確かめます。
  • ツールで確かめる(試験環境があり、書面で同意をいただける場合)試験環境に対してツールで自動の確認を行い、見つかったもののうち重大なものを手で再現して確かめます。

必要に応じて、画面の操作や使っている方への聞き取りも行います。どこまで行うかは、無料相談でご用意いただける環境を伺って決めます。依存関係のスキャンやツールで確かめる作業も、作業量の見積もりに含みます。ツールの利用料を別にいただくことはありません。

動かして確かめられなかったことは、報告書に「未確認」として書き、確かめ方を添えます。

試験環境がなくてもお受けします。その場合は、ソースコードと設定に加えて、必要に応じて本番環境での閲覧と影響のない操作、使っている方への聞き取りで確かめ、確かめられなかったことは「未確認」として報告書に書きます。決済などお金が動く操作やデータを書き換える操作は、本番環境では行いません。試験環境の用意について相談したい場合は、別にご相談いただけます。

対象
1つのシステム。Webアプリ・APIサーバーのソースコード1式と、それが動くクラウドや外部サービスの設定。範囲に入るか迷う場合も、無料相談でお伺いします
調べること
外から不正に使われないか、お金とデータの扱い、止まったときの備え、持たなくてよいデータ、利用が増えたときの速さ、直し続けられるかの6つの観点確かめることの詳細
お渡しするもの
報告書とオンライン報告(報告書の内容をご説明し、直す順番と時期を一緒に整理します)
作業量の目安
調べる範囲と確かめ方から作業量を見積もります。作業量は工数の目安で、納期ではありません。
見積もりが変わるとき
対象のシステムの数や規模、重点的に調べる観点によって変わります。範囲が大きい場合は、申し込みの前に範囲を絞るか、範囲に合わせてお見積もりします。
報告書をお渡しする日
資料や閲覧権限をご用意いただける時期をふまえて、申し込みの前にお伝えします。
含まないもの
社内のネットワークや機器と、クラウド以外のサーバー(自社で置いているサーバー)の設定。網羅的な侵入テスト、負荷試験、修正作業。サーバーの性能の測定、ソースコードの品質の点数付けや規格への準拠の確認。本番環境に対して攻撃を試すことはしません(試験環境に対しては、書面で同意をいただいたうえで、ツールによる自動の確認と重大なものの手での再現を行うことがあります)。スキャンで見つかった脆弱性の具体的な修正方針の検討と、修正したあとの動作確認も含みません。
調査の範囲と費用を相談する

初回30分・オンライン無料。状況を伺い、調査の範囲・料金・納期をご案内します。

診断のあと

報告書を受け取ったあとの進め方。

報告書とその説明でご依頼は完了です。その後の進め方は報告書をもとにお決めください。

社内で対応する

オンライン報告で整理した順番に沿って、社内の担当者で進めます。

今の開発会社に相談する

報告書をもとに直す範囲と時期を相談します。

別の開発会社に相談する

報告書を使って直してほしいことを説明します。新しい依頼先が修正の前に改めて確認することもあります。

cyfr に追加で相談する

報告書の内容の確認や直し方の相談、直したあとの確認は、スポット相談(1時間 8,800円・税込)などで続けて相談できます。修正そのものをご希望の場合は、診断とは別の契約としてご相談いただけます。

相談のメニューと料金を見る

月次セキュリティ点検

33,000円(税込)〜/月

この診断のあとも、攻撃の兆候と新しく見つかった弱点がないかを毎月確かめる月額のメニューです。この診断を受けた方が対象です。アクセスの記録から攻撃の兆候を調べ、使っているライブラリや製品の既知の脆弱性を毎月確かめ、設定や権限を3か月ごとに確かめます。確かめて報告し、おすすめの対応を示すところまでで、修正作業は含みません。お申し込みは必要な場合だけで構いません。

月次セキュリティ点検の内容を見る

報告書は開発会社への説明にも使える形でお渡しします。ただし、安全であることを保証するものではありません。

申し込みから報告まで

申し込みから報告まで。

  1. 01無料相談で状況と決めたいことを確認

    オンラインで30分。対象のシステムと、今回決めたいこと(公開してよいか、使い続けてよいか)、ご用意いただける環境(試験環境があるかなど)を伺い、調べる範囲と確かめ方を決めます。具体的な調査や技術的な助言は、お申し込みのあとに行います。

  2. 02調査の範囲・料金・納期を確定

    調べる範囲と確かめ方を決め、総額と報告書をお渡しする日をお伝えします。ご希望があれば、秘密保持契約を結びます。

  3. 03資料や閲覧権限を準備

    ソースコード、サーバー、外部サービスの管理画面を見るための権限をご用意いただきます。原則として、閲覧できる権限で足ります。権限のご用意は、ご事情によって相談のうえで省くこともあります。用意の仕方が分からない場合は、手順をご案内します。動かして確かめる場合は、あわせて試験環境を使うための権限と、システムの管理画面のアカウントもお願いします。ドメインやサーバーなどの名義は、契約や請求の画面で確かめます。閲覧の権限をご用意いただくか、難しい場合は、貴社で確かめていただく手順をお渡しします。ツールで確かめる場合は、対象の範囲と日時について書面で同意をいただきます。システムを管理している開発会社がいる場合は、その開発会社の了承もいただきます。

  4. 04調査

    ソースコードと設定を読み、依存しているライブラリのスキャンと、セキュリティに関わるヘッダーやHTTPSの設定の確認を行います。試験環境がある場合は、お金や個人情報が動く流れを動かして確かめます。ツールで確かめる場合は、その前に試験環境の決済・メール・データの扱いを一緒に確かめます。必要に応じて、画面の操作や使っている方への聞き取りも行います。本番環境に対して攻撃を試すことはしません。

  5. 05報告書の提出と説明

    報告書をお渡しし、オンライン報告でご説明します。オンライン報告は、状況を伺いながら、直す順番と時期を一緒に整理する場でもあります。調査のためにご用意いただいた権限は、報告のあとに外していただけます。

よくある質問

申し込む前に。

安全であることを保証する診断ですか?

いいえ。事故につながる点と直す順番を決める材料をお渡しするもので、安全を保証するものではありません。結論は、公開してよいかの可否ではなく、推奨する対応の範囲と対応しても残るリスクとしてお伝えします。依存関係のスキャンで見つけられるのは、公開されている既知の脆弱性です。それ以外は、合意した調べ方で分かる範囲で確かめます。確かめられなかったことは「未確認」として報告書に書きます。

直す順番や時期も、報告書に書かれますか?

いいえ。直すか、どの順に、いつまでに直すかは、公開の予定や関わる方、予算など、調査からは見えない事情で変わるため、お客様に決めていただきます。報告書には、決めるための材料として、何が起きるか、起きる条件と重要度、直す場合に何をするかを書きます。直す順番と時期は、オンライン報告で状況を伺いながら一緒に整理します。

重要度は、報告書の基準で付けます。鍵がソースコードにあっても触れる人が限られているなど、お客様の事情で実際のリスクが違うと考えられる場合も、重要度は変えずに、オンライン報告で理由を添えてお伝えします。

セキュリティの専門会社の診断(脆弱性診断・侵入テスト)との違いは?

この診断は、Webアプリ・APIサーバーとそれが動くクラウドの設定に範囲を絞り、外から狙われる穴とアプリの内部で事故につながる穴の両方を確かめます。外から狙われる穴は、非営利団体 OWASP がまとめたWebアプリの安全性を確かめる項目集(ASVS)を、対象のシステムに合わせた水準で観点にして確かめます。ツールで確かめる場合は、見つかったもののうち重大なものを手で再現して確かめます。アプリの内部は、セキュリティに詳しいアプリケーションエンジニアがソースコードと設定を読み、別の会員の情報が見えてしまう、二重に請求されるといった穴や、障害に気づけるか、バックアップから戻せるかまで確かめます。

セキュリティの専門会社の脆弱性診断や侵入テストは、主にネットワークや機器まで含めた広い範囲を、外から攻撃を試して調べるものです。ソースコードやクラウドの設定を調べる診断を用意している会社もあります。この診断が違うのは、セキュリティの穴に加えて、請求と記録の食い違いや止まったときに気づけるか、利用が増えたときの速さや、担当が変わっても直し続けられるかといった、攻撃以外で事故につながる点まで、同じ診断の中で確かめることです。

開発会社が納品の前に行う確認は、主に作った機能が仕様どおりに動くかを確かめるものです。この診断は、作った会社とは別の立場でセキュリティに詳しいエンジニアが、不正に使われる穴や、お金とデータの扱いで事故につながる点を確かめます。開発会社からのご依頼もお受けしています。

取引先から求められている場合など、網羅的な侵入テストが必要な場合は、専門の会社の侵入テストとの組み合わせをおすすめします。

本番環境に影響はありますか?

原則として、本番環境では閲覧だけを行い、動かして確かめる場合は試験環境で行います。本番環境に対して攻撃を試すことはしません。

公開ページを読み込んで、ヘッダーやHTTPSの設定、証明書を確かめることは、ブラウザで開くのと同じ範囲の確認のため、本番環境でも行います。表示の速さの測定も、合意したページをブラウザで開くのと同じ形で数回読み込むだけのため、本番環境で行うことがあります。細工した値を送るなど攻撃に近いツールでの自動の確認は、書面で同意をいただいたうえで試験環境に対してだけ行います。

ツールで確かめる前に、決済がテスト用の設定になっているか、メールが外に送られないか、データを消す機能を対象から外すか、バックアップがあるかを一緒に確かめます。

試験環境がない場合も、本番環境での操作は影響のないものにとどめ、決済などお金が動く操作やデータを書き換える操作は行いません。

どんなツールを使いますか?

依存しているライブラリのスキャン、Webアプリの自動の確認、設定の確認に、広く使われているツールを使います。使ったツールは報告書に書きます。

試験環境に対してツールで確かめる場合は、同意をいただく書面に、行う内容、日時、接続元を書きます。システムを監視している開発会社や担当の方が、確認のためのアクセスだと分かるようにするためです。

コードの書き方まで細かく指摘されますか?

いいえ。書き方の好みや、ふだんのコードレビューで足りる指摘はしません。指摘するのは、事故や、直すときの事故・遅れにつながることを示せるものと、依頼者が対応を決められるものだけです。

試験環境がない場合は?

試験環境がなくてもお受けします。その場合は、ソースコードと設定に加えて、必要に応じて本番環境での閲覧と影響のない操作、使っている方への聞き取りで確かめ、確かめられなかったことは「未確認」として報告書に書きます。決済などお金が動く操作やデータを書き換える操作は、本番環境では行いません。試験環境の用意について相談したい場合は、別にご相談いただけます。

AIで作ったシステムも対象ですか?

はい。AIで開発したツールやサービスも対象です。作り方に関わらず、同じ観点で確かめます。

開発会社からの依頼も対応可能ですか?

はい。納品の前の確認や、引き継ぐシステムの調査としてお受けします。お客様との契約で再委託やソースコードを第三者に見せることが認められているかを、申し込みの前に確かめます。認められていない場合は、システムの持ち主であるお客様の了承をいただいたうえで進めます。ツールで確かめる場合の書面の同意は、試験環境を管理する権限のある方からいただきます。報告書には確かめたことをそのまま書きます。

調査だけで依頼を終えられますか?

はい。報告書とその説明で完了です。その後の修正や保守は、社内や今の開発会社で進めていただいて問題ありません。月次セキュリティ点検も、必要になったときにお申し込みいただけます。

修正もお願いできますか?

はい。修正は診断とは別の契約としてご相談いただけます。診断は今の状態を確かめて報告するもので、診断の料金には修正を含みません。社内や今の開発会社で修正していただいても問題ありません。

ソースコードや業務データの扱いは?

ご希望があれば、秘密保持契約を結んでから始めます。お願いする権限は、原則として閲覧できるものです。動かして確かめる場合は、試験環境を使うための権限と、システムの管理画面のアカウントもお願いします。調査のためにご用意いただいた権限は、報告のあとに外していただけます。お預かりしたソースコードの写しや調査の記録、報告書の控えは、報告書をお渡ししてから6か月以内に消します。ご希望があれば、報告のあとすぐに消すこともできます。

調査にAIを使いますか?

はい。調査から報告書の作成まで、AIを使うことを前提にしており、料金の目安もその前提で見積もっています。入力した情報がAIサービスの提供者によるAIモデルの学習に利用されない状態で、AIサービスを利用します。個人情報や、契約や社内の決まりで外部のサービスに渡せないデータがあれば、無料相談のときにお知らせください。その範囲を除くか、別の方法で確かめます。除く範囲によっては、作業量と料金が変わります。

料金と納期はいつ決まりますか?

1日あたり77,000円(税込)です。無料相談で対象と決めたいことを伺い、調べる範囲と確かめ方から作業量を見積もって、申し込みの前に総額と報告書をお渡しする日をお伝えします。

作業量は工数の目安で、納期ではありません。納期は資料や権限をご用意いただける時期によって変わります。

訪問での調査も依頼できますか?

オンラインでの対応が基本です。

相談

気になっていることを、聞かせてください。

何のためのシステムか、公開の予定や、今気になっていることを伺います。仕様書や資料が揃っていなくても構いません。

調査の範囲と費用を相談する

初回30分・オンライン無料。状況を伺い、調査の範囲・料金・納期をご案内します。
具体的な調査や技術的な助言は、お申し込みのあとに行います。

ほかのこともまとめて相談できます。メニューと料金は、相談窓口のページにまとめています。

エンジニアの相談窓口を見る