4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHP/Symfony バージョンアップ時に確認するComposerコマンドまとめ

Posted at

目的

PHP 8.0.25 → PHP 8.2.7 へバージョンアップ作業を行いました。
その際に Composer 周りの脆弱性のあるパッケージが含まれてないか調査しました。
Symfony 5.4.13 を使用しており、今回はフレームワークのバージョンアップは実施しません。

ローカルでvendor配下を更新してないか

vendor 配下がどういうわけかGitで管理されているプロジェクトでした。
vendor 配下が更新されていてアップデートできないのではないか?という不安がありました。

その疑念を解消する神コマンドがありました。

$ composer status -v
No local changes

変更がないのでひと安心です。

プラットフォーム要件が満たされていることを確認する

check-platform-reqs コマンドは 現在のプラットフォーム(PHPや拡張モジュールなど)が、プロジェクトの composer.json ファイルに定義された依存関係の要件を満たしているかどうかを確認します。

$ composer check-platform-reqs
Checking platform requirements for packages in the vendor dir
composer-plugin-api 2.6.0      success
ext-bcmath          8.2.7      success
ext-ctype           8.2.7      success
ext-dom             20031129   success
ext-iconv           8.2.7      success
ext-json            8.2.7      success
ext-libxml          8.2.7      success
ext-mbstring        *          success provided by symfony/polyfill-mbstring
ext-pcre            8.2.7      success
ext-phar            8.2.7      success
ext-simplexml       8.2.7      success
ext-tokenizer       8.2.7      success
ext-xml             8.2.7      success
ext-xmlwriter       8.2.7      success
php                 8.2.7      success

ここでエラーが出た場合はその環境でプラットフォーム要件が満たされてないことが分かるので、対応しましょう。
各環境で一度実行して確認しておくと良いでしょう。

インストールされたパッケージのセキュリティ脆弱性勧告をチェックする

composer audit コマンドは脆弱なパッケージがないか調べてくれます。

$ composer audit
Found 5 security vulnerability advisories affecting 5 packages:
+-------------------+----------------------------------------------------------------------------------+
| Package           | aws/aws-sdk-php                                                                  |
| Severity          | medium                                                                           |
| CVE               | CVE-2023-51651                                                                   |
| Title             | Potential URI resolution path traversal in the AWS SDK for PHP                   |
| URL               | https://nvd.nist.gov/vuln/detail/CVE-2023-51651                                  |
| Affected versions | >=3.0.0,<3.288.1                                                                 |
| Reported at       | 2023-11-22T00:00:00+00:00                                                        |
+-------------------+----------------------------------------------------------------------------------+
+-------------------+----------------------------------------------------------------------------------+
| Package           | guzzlehttp/psr7                                                                  |
| Severity          | medium                                                                           |
| CVE               | CVE-2023-29197                                                                   |
| Title             | Improper header validation                                                       |
| URL               | https://github.com/guzzle/psr7/security/advisories/GHSA-wxmh-65f7-jcvw           |
| Affected versions | >=2,<2.4.5|<1.9.1                                                                |
| Reported at       | 2023-04-17T16:00:00+00:00                                                        |
+-------------------+----------------------------------------------------------------------------------+
+-------------------+----------------------------------------------------------------------------------+
| Package           | symfony/http-kernel                                                              |
| Severity          | medium                                                                           |
| CVE               | CVE-2022-24894                                                                   |
| Title             | CVE-2022-24894: Prevent storing cookie headers in HttpCache                      |
| URL               | https://symfony.com/cve-2022-24894                                               |
| Affected versions | >=2.0.0,<2.1.0|>=2.1.0,<2.2.0|>=2.2.0,<2.3.0|>=2.3.0,<2.4.0|>=2.4.0,<2.5.0|>=2.5 |
|                   | .0,<2.6.0|>=2.6.0,<2.7.0|>=2.7.0,<2.8.0|>=2.8.0,<3.0.0|>=3.0.0,<3.1.0|>=3.1.0,<3 |
|                   | .2.0|>=3.2.0,<3.3.0|>=3.3.0,<3.4.0|>=3.4.0,<4.0.0|>=4.0.0,<4.1.0|>=4.1.0,<4.2.0| |
|                   | >=4.2.0,<4.3.0|>=4.3.0,<4.4.0|>=4.4.0,<4.4.50|>=5.0.0,<5.1.0|>=5.1.0,<5.2.0|>=5. |
|                   | 2.0,<5.3.0|>=5.3.0,<5.4.0|>=5.4.0,<5.4.20|>=6.0.0,<6.0.20|>=6.1.0,<6.1.12|>=6.2. |
|                   | 0,<6.2.6                                                                         |
| Reported at       | 2023-02-01T08:00:00+00:00                                                        |
+-------------------+----------------------------------------------------------------------------------+
+-------------------+----------------------------------------------------------------------------------+
| Package           | symfony/twig-bridge                                                              |
| Severity          | medium                                                                           |
| CVE               | CVE-2023-46734                                                                   |
| Title             | CVE-2023-46734: Potential XSS vulnerabilities in CodeExtension filters           |
| URL               | https://symfony.com/cve-2023-46734                                               |
| Affected versions | >=2.0.0,<2.1.0|>=2.1.0,<2.2.0|>=2.2.0,<2.3.0|>=2.3.0,<2.4.0|>=2.4.0,<2.5.0|>=2.5 |
|                   | .0,<2.6.0|>=2.6.0,<2.7.0|>=2.7.0,<2.8.0|>=2.8.0,<3.0.0|>=3.0.0,<3.1.0|>=3.1.0,<3 |
|                   | .2.0|>=3.2.0,<3.3.0|>=3.3.0,<3.4.0|>=3.4.0,<4.0.0|>=4.0.0,<4.1.0|>=4.1.0,<4.2.0| |
|                   | >=4.2.0,<4.3.0|>=4.3.0,<4.4.0|>=4.4.0,<4.4.51|>=5.0.0,<5.1.0|>=5.1.0,<5.2.0|>=5. |
|                   | 2.0,<5.3.0|>=5.3.0,<5.4.0|>=5.4.0,<5.4.31|>=6.0.0,<6.1.0|>=6.1.0,<6.2.0|>=6.2.0, |
|                   | <6.3.0|>=6.3.0,<6.3.8                                                            |
| Reported at       | 2023-11-10T08:00:00+00:00                                                        |
+-------------------+----------------------------------------------------------------------------------+
+-------------------+----------------------------------------------------------------------------------+
| Package           | twig/twig                                                                        |
| Severity          | high                                                                             |
| CVE               | CVE-2024-45411                                                                   |
| Title             | Twig has a possible sandbox bypass                                               |
| URL               | https://github.com/advisories/GHSA-6j75-5wfj-gh66                                |
| Affected versions | >=3.0.0,<3.11.1|>=3.12.0,<3.14.0|>=2.0.0,<2.16.1|>=1.0.0,<1.44.8                 |
| Reported at       | 2024-09-09T20:19:26+00:00                                                        |
+-------------------+----------------------------------------------------------------------------------+

こんな感じで発見してくれます。
指摘箇所はすべて直した方がよいですが、highレベルなものから優先度高くして対応すると良いでしょう。

composer update するだけで直るパッケージもありました。
必要に応じて composer.json を編集してパッケージのバージョンを引き上げて composer update しましょう。

詳細はURLからそれぞれ確認しましょう。
最終的に問題がなくなればokです。

$ composer audit
No security vulnerability advisories found.

Composer.json, lock を検証する

composer.json, composer.lock の書き方に問題ないか検証してくれます。

$ composer validate
./composer.json is valid

さいごに

今回のバージョンアップ作業では、Composerの便利なコマンドを活用して、ローカルの変更確認、プラットフォーム要件の確認、セキュリティ脆弱性のチェックを行いました。これにより、システムの安全性と信頼性を保ちつつ、最新の(?)PHPバージョンに対応できました。

セキュリティ対応や依存パッケージの管理は、プロジェクトの安定性に直結するため、定期的に監視・更新を行うことが大切です。今後も脆弱性の監視やプラットフォーム要件の確認を怠らず、安心して開発を続けられる環境を維持していきましょう。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?