Skip to main content

Snyk CodeのPHPセキュリティが正式リリース

著者
Headshot of DeveloperSteve Coochin

DeveloperSteve Coochin

blog social php composer

2022年1月26日

0 分で読めます

先日、Snyk CodeのPHPサポートのベータ版を発表しました。これにより、コードレベルでPHPの潜在的なセキュリティ脆弱性を特定できるようになりました。パブリックベータの成功を受け、Snyk CodeのPHPセキュリティサポートが正式リリースされました。

PHPは、世界中の開発者に利用されている人気のプログラミング言語です。このブログでは、Snyk Codeの機能とPHPでの活用方法をご紹介します。初心者から経験豊富な開発者まで、すぐに使い始められるよう、いくつかの例も取り上げます。

正式リリースに伴うアップデート

Snyk CodeのPHP言語のセキュリティサポートが加わったことで、既存のPHPスキャン機能をさらに強化しました。この機能では、Composerのマニフェストをスキャンし、オープンソースライブラリや依存関係の脆弱性を特定します。

また、Snyk Visual Studio Code拡張機能も、PHPのコードとComposerのスキャンに対応しました。コードの記述中に安全でない可能性のあるコードをハイライト表示し、オープンソースライブラリや依存関係に潜む脆弱性を知らせてくれるため、特に便利です。

Visual Studio Codeに表示されたPHPコードと、未サニタイズのHTTP入力がmysqli_queryに渡されることを示すSnykの警告。

Snyk CodeのPHP正式リリースでは、問題の詳細を調べ、必要に応じてコードベースをさかのぼって追跡できます。コード内の別の箇所に起因する追跡可能な関数を扱う際に役立ちます。

tasks.php内で、サニタイズされていないHTTP入力がmysqli_queryの呼び出しに渡される様子を示す、Snyk CodeのSQLインジェクション分析。

PHPのデモアプリでSnyk Codeのスキャンを試す

Snykでは、意図的に脆弱性を仕込んだデモアプリを作成し、goofアプリと呼んでいます。実際に手を動かしながら、実環境で見つかる脆弱性を体験するのに最適です。Snyk CodeのPHPサポートの開始に合わせて、PHP goofアプリを追加しました。

PHP goofアプリを使った例をいくつかご紹介します。実際に試すにはSnykアカウントが必要です。まだお持ちでない場合は、数秒で無料アカウントを作成できます。

まずSnykダッシュボードにログインして、プロジェクトを追加します。今回のスキャンでは、パブリックリポジトリを監視するオプションを使ってPHP goofアプリのリポジトリをスキャンするか、コードをフォークして任意のリポジトリに接続できます。

snyk-labs/php-goofリポジトリのコード解析とcomposer.lockの脆弱性の深刻度別件数を表示するセキュリティダッシュボード。

ヒント:パブリックリポジトリのスキャンは、日常的に利用しているオープンソースプロジェクトをスキャンする際にも役立ちます。

スキャンはすぐに完了し、コードとパッケージマニフェストの両方でいくつかの問題が検出されたことを確認できます。Snyk Codeは数十種類の問題と、数百万ものデータフローのソースとシンクの組み合わせを特定します。PHP goofアプリを使って、よく見られる2つの例を見てみましょう。

SQLインジェクション

スキャンを実行してまず気づくのは、Snyk Codeを使うとコードを簡単に確認できることです。下のスクリーンショットでは、サニタイズされていない入力値が渡されるデータベースクエリが特定されています。

Snyk CodeによるSQLインジェクション解析。サニタイズされていないHTTP入力がPHPのmysqli_query呼び出しに渡されている様子。

脆弱性をすばやくわかりやすく提示するだけでなく、Snyk Codeは修正方法の分析と対処方法のアドバイスも提供します。PHP開発者で、セキュリティの知識に自信がない場合、ライブラリを使う方法や、filter_var関数を使う方法など、PHPで入力を安全にサニタイズする方法はいくつかあります。Snykはコードの安全を保つために必要なリアルタイムのセキュリティに関する知見を提供し、使いながら学べるよう支援します。

PHPのセキュリティについて詳しく知りたい方は、PHPコードインジェクションを防ぐ5つの方法をご覧ください。

ハードコードされた認証情報の使用

goofアプリでは、Snyk Codeのスキャンで検出されるよう、意図的にMySQLの認証情報をハードコードしています。下のスクリーンショットのとおり、Snyk Codeはこれを検出し、問題として警告しています。(認証情報を安全に扱うには、プラットフォーム上または環境設定ファイル内の環境変数として保存する方法があります。)

db.php内のmysqli_connectに渡されるハードコードされたPHPデータベースパスワードを強調表示したSnyk Codeの画面

オープンソースの脆弱性

さらに、スキャンではComposerのマニフェストに記載されたオープンソースライブラリのバージョンに問題が見つかりました。クロスサイトスクリプティングの脆弱性がどのように持ち込まれるかを示すため、意図的にアプリに含めています。

league/commonmarkのセキュリティ脆弱性レコード。中程度の深刻度のクロスサイトスクリプティングの問題(CVSS 6.5)と、バージョン0.18.3での修正を示しています。

PHPプロジェクトのセキュリティ対策を始めましょう

Snyk CodeのPHPサポートが正式リリースされたことを嬉しく思います。ぜひ、無料のSnykアカウントでお試しいただき、ご意見やご感想をお寄せください。

Capture the Flagを始めよう

オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。

続きを読む

feature insights context
Blog

自律型攻撃はすでに始まっている。防御もそのスピードに追いつかなければならない。

自律型攻撃者によって、防御に使える時間は短くなっています。継続的な検出、修復、検証、予防で、セキュリティチームが攻撃に歩調を合わせる方法をご紹介します。

illustration hero ai
Blog

AIハリケーンが到来

AIはソフトウェア開発とサイバー攻撃の双方を加速させています。リーダーは、エージェントとコードを開発の初期段階から保護し、実行時に制御を徹底するとともに、防御策を独立して検証しなければなりません。

feature insights context
Blog

予防は、本質的に解決済みの問題なのでしょうか?

エージェントが生成するコードの予防策はアーキテクチャ上解決されていますが、開発を遅らせることなくセキュリティを守る制御を選ぶことが、依然として課題です。