SASTとSCAでPCIコンプライアンスのセキュリティを強化
DeveloperSteve Coochin
2022年2月8日
0 分で読めますPCI DSSとも呼ばれるPayment Card Industry Data Security Standard(PCIデータセキュリティ基準)は、機密性の高い消費者のカード会員データを取り扱い、保管する企業のシステムやポリシーを審査する包括的なプロセスです。
PCI DSSは、決済業界にとって非常に重要です。エンドユーザーのデータを安全に保護するのに役立ちます。また、PCI Security Standards Councilが維持・管理しており、PCI DSS認定に必要な認定ベンダー向け要件など、基準の各要素も管轄しています。現在、MasterCardとVisaは一部の例外を除き、加盟店とサービスプロバイダーにPCI DSSへの準拠を義務付けています。侵害が発生した時点で被害を受けた組織がPCI DSSに準拠していなかった場合、罰金などの追加ペナルティが科されます。
こうした確認は、決済業界全体にとって重要であるだけでなく、データが保護されているとユーザーが認識し、信頼を築くうえでも欠かせません。PCIコンプライアンスのプロセスでは通常、認定を受けた第三者が複数の項目を確認し、安全なデータ取り扱いのプロセスが整っていることを確かめます。
この記事では、PCI DSSの要件と、静的アプリケーション・セキュリティ・テスト(SAST)およびソフトウェア構成分析(SCA)ツールを活用して、要件をより容易に満たす方法を詳しく見ていきます。さらに、Snykを使ってPCI DSSに必要なSASTとSCAの両方に対応する方法も紹介します。それでは始めましょう。
PCIコンプライアンスの要件
安全なネットワークとシステムを構築・維持するためのPCI DSS要件は12項目です。機密性の高いカード会員データや内部システム、アプリケーションインフラへのアクセス、安全なシステムとアプリケーションの開発・保守などが定められています。
要件の概要は次のとおりです。
カード会員データを保護するための ファイアウォール 設定の導入と維持。ファイアウォールはすべてのネットワークトラフィックを検査し、信頼できないネットワークからのシステムへのアクセスを遮断します。
システムのパスワードやその他のセキュリティパラメーターについて、ベンダーが提供するデフォルト設定を変更すること。デフォルトのパスワードは公開情報から容易に特定でき、悪意ある人物が不正にシステムへアクセスするために利用されるおそれがあります。
保存されているカード会員データの保護。カード会員データの保護には、暗号化、ハッシュ化、マスキング、切り捨てなどの方法が使われます。
オープンな公衆ネットワークを介して送信されるカード会員データの暗号化。信頼できる鍵や証明書のみを使用するなど、強力な暗号化を行うことで、ハッキングを通じた悪意ある人物の標的となるリスクを軽減できます。
すべてのシステムをマルウェアから保護し、ウイルス対策ソフトウェアを定期的に更新すること。マルウェアは、インターネットの利用、従業員のメール、モバイルデバイスやストレージデバイスなど、さまざまな経路からネットワークに侵入する可能性があります。ウイルス対策ソフトウェアを最新の状態に保つ、またはマルウェア対策ソフトウェアを追加することで、マルウェアによる悪用のリスクを低減できます。
安全なシステムとアプリケーションを開発・維持すること。システムやアプリケーションの脆弱性を悪用されると、不正な人物に特権アクセスを許すおそれがあります。脆弱性を修正し、悪用やカード会員データの侵害を防ぐため、セキュリティパッチを速やかに適用する必要があります。
カード会員データへのアクセスを、許可された担当者のみに制限すること。必要な担当者だけがアクセスできる「知る必要性」の原則に基づき、システムとプロセスを用いてカード会員データへのアクセスを制限する必要があります。
システムコンポーネントへのアクセスを識別・認証すること。システムコンポーネントにアクセスする各担当者には、一意の識別情報(ID)を割り当て、重要なデータシステムへのアクセスに対する説明責任を確保する必要があります。
カード会員データへの物理的なアクセスを制限すること。データへの不正アクセスや持ち出しを防ぐため、カード会員データやその保管システムへの物理的なアクセスを安全に管理する必要があります。
カード会員データとネットワークリソースへのすべてのアクセスを追跡・監視すること。データ侵害の防止、検知、影響の最小化に不可欠なユーザーの活動を追跡できるよう、ログの記録機能を整備する必要があります。
セキュリティシステムとプロセスを定期的にテストすること。新たな脆弱性は継続的に発見されています。悪意ある人物に悪用されるおそれのある脆弱性を見つけるため、システム、プロセス、ソフトウェアを頻繁にテストする必要があります。
すべての担当者を対象とする情報セキュリティポリシーを維持すること。強固なセキュリティポリシーには、データの機密性と保護に対する各担当者の責任を理解させることが含まれます。
PCI Security Standards Councilのウェブサイトで公開されているコンプライアンス要件の全リストには、さらに詳しい内容が記載されています。たとえば、安全なシステムの開発・保守を定める要件6では、次のような具体的な脆弱性の種類が扱われています。
インジェクションの脆弱性 (SQLインジェクション)
バッファオーバーフロー
安全でない暗号化ストレージ
安全でない通信
不適切なエラー処理
不適切なアクセス制御
クロスサイトリクエストフォージェリ(CSRF)
認証とセッション管理の不備。
Snykを利用すれば、こうしたセキュリティ上の問題をすべて簡単に検出し、チームが使用するワークフローやパイプラインの中で自動的に修正できます。
Snyk CodeとSnyk Open Sourceができること
PCIコンプライアンスの実例として、PHPエコシステムのオープンソースeコマースプラットフォームPrestaShopをSnykで保護してみましょう。Snykでは、問題を見つけて修正する方法がいくつかあります。ここでは、Snyk CLIで依存関係の脆弱性をスキャンし、次にSnykプラグインを使ってPHPStormでコードをスキャンします。
以下の例を試すには、Git、PHP、Composer依存関係管理ツールをインストールしておく必要があります。

準備する
一緒に進めるには、まずSnykの無料アカウントを作成してください。数分で利用を開始できます。クレジットカードは不要です。
次に、ローカル環境にSnyk CLIをインストールします。Snyk CLIの便利な点は、プラットフォーム全体でインストールが1回で済むことです。コード、依存関係、コンテナ、IaCのスキャンに利用できます。まずはSnyk CLIチートシートをご覧ください。
その後、PrestaShopリポジトリ(執筆時点のバージョンは1.7.8.3)をローカル環境にクローンします。
PHP Composerをインストールしたら、次のコマンドを実行します。
オープンソースの脆弱性をスキャンする
まず、Composerのマニフェストに対してオープンソースの脆弱性を確認しましょう。クローンしたリポジトリのルートディレクトリで、次のコマンドを実行します。
この例では、8件の問題と11件の脆弱性を含むパスが検出され、いくつかの修正案も提示されます。

これらの脆弱性については、修正済みのバージョンにライブラリをアップグレードすればよさそうです。Snykは脆弱性を含むパスを特定できるだけでなく、接続済みのリポジトリに自動プルリクエストを作成して問題を修正することもできます。
リポジトリの接続方法について詳しくは、Gitリポジトリのインテグレーションに関するドキュメントをご覧ください。
コードの脆弱性をスキャンする
Snyk CLIの動作を確認したところで、PHPStormとSnykプラグインを使ってコードベースの脆弱性をテストしてみましょう。
プロジェクト内の各プログラミング言語のファイルをチェックし、脆弱性の可能性がないか確認します。この例では、コードから252件の脆弱性の可能性(99 [high]、131 [medium]、22 [low])が検出され、さらに調査が必要です。

脆弱性を修正するには、スキャンでハイライトされたコード箇所を確認し、詳しく調査して、調査結果と修正内容を記録します。PHPStormでSnykプラグインを使うと、ファイルごとにコードレベルで調査を進められるため、このプロセスが簡単になります。
PHPStorm用Snykプラグインでは、ファイル内の各関数をたどって、同じ種類の問題があった他のプロジェクトでの修正例を確認することもできます。

PCIコンプライアンスを維持する
開発者からCTO、CISOまで、プロセスを効率化する仕組みやツールが整っていれば、PCI DSSコンプライアンスへの対応は困難な作業ではありません。要件を理解し、準拠を維持するためのツールやプロセスを整えることが重要です。また、この記事を読んでいる開発者の皆さんにとって、コードのドキュメント化はPCI要件の重要な一部であり、変更履歴や将来の開発者へのメモを残すうえでも役立ちます。
ご覧いただいたとおり、SnykはPCI DSSコンプライアンスのプロセスを効率化できます。さらに、SnykのスキャンをCI/CDやコードパイプラインに簡単に統合できるため、継続的な問題の自動化と記録にも役立ちます。無料アカウントに登録して、コンプライアンスの維持をより簡単にしましょう。
最先端のインテリジェンスでコードを保護
わずか30分で、Snyk CodeのSAST機能を幅広くご紹介します。
