この変更が意味すること
Angular v22.0.1 がリリースされました。Angular 22 のファーストパッチリリースで、セキュリティ上重要な修正を複数含んでいます。
最も重要な変更は formatDateTime のプロトタイプ汚染(Prototype Pollution)の修正です。悪意ある入力を通じて JavaScript オブジェクトのプロトタイプが汚染される可能性があった脆弱性が解消されます。Angular の日時フォーマット機能(DatePipe、formatDate など)を使用しているすべてのアプリケーションが影響範囲です。
また、transfer cache のキー生成に暗号論的に安全な SHA-256 を採用する変更も含まれており、セキュリティ強化を目的とした複合的なパッチです。Angular 22 を利用しているプロジェクトは早めのアップデートを推奨します。
主な変更点
セキュリティ修正: formatDateTime のプロトタイプ汚染を防止
Angular の日時フォーマット処理内部でプロトタイプ汚染が発生する脆弱性が修正されました。攻撃者が細工した入力を渡すことで、アプリケーション全体の JavaScript オブジェクトのプロトタイプを汚染できる可能性がありました。
影響範囲: DatePipe、formatDate()、テンプレートでの日付フォーマット表示などを使用しているすべてのコンポーネント。
Commit: c4b5fa3c
セキュリティ修正: transfer cache キーに暗号的安全な SHA-256 を使用
Angular Universal(SSR)の transfer cache で使用されるキャッシュキーの生成が、暗号論的に安全な SHA-256 に変更されました。これまでのキー生成が予測可能または衝突しやすい実装であったリスクが解消されます。
Commit: 1d87c49f
セキュリティ修正: escapeCssUrl で CSS 文字列終端文字をエスケープ
CSS の url() 内に埋め込まれる値で文字列を終端させる文字(" や ')が適切にエスケープされるようになりました。CSS インジェクションのリスクを軽減します。
Commit: c4b5fa3c
バグ修正: 日付フォーマット文字列の長さを制限
異常に長い日付フォーマット文字列を DatePipe や formatDate() に渡した場合の過負荷リスクを軽減するため、フォーマット文字列の長さに上限が設けられました。
Commit: dfff57ed
EOL / サポート状況
| サイクル | 最新バージョン | サポート終了 |
|---|---|---|
| 22 | 22.0.1 | アクティブ |
| 21 | 21.2.17 | 2027-05-19 |
| 20 | 20.3.25 | 2026-11-28 |
| 19 | 19.2.25 | 2026-05-19(EOL済) |
| 18 | 18.2.14 | 2025-11-21(EOL済) |
Angular 19 は 2026年5月19日に EOL となっています。Angular 19 以前を利用中の場合は、22 系へのアップグレードを計画してください。
開発者への影響
DatePipeやformatDate()を使用しているすべてのコンポーネント: プロトタイプ汚染の修正が含まれます。早めのアップデートを推奨します- Angular SSR(Universal)を使用しているアプリ: transfer cache のキー生成が強化されました
- 動的に CSS
url()を生成しているコンポーネント:escapeCssUrlの修正により、一部の CSS レンダリング動作が変わる可能性があります(意図しない文字が含まれていた場合のみ) - 極端に長い日付フォーマット文字列を使用しているケース: フォーマット文字列の長さ制限により、異常な入力が拒否されるようになります
Breaking Changes はありません。動作変更は上記のエッジケースのみです。
アップデート方法
# Angular CLI を使用している場合
ng update @angular/core@22.0.1 @angular/cli@22.0.1
# npm 直接
npm install @angular/core@22.0.1 @angular/common@22.0.1 @angular/compiler@22.0.1
データソース: GitHub Releases API, endoflife.date
AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
