Kiota: KiotaのJavaおよびPHPジェネレーターにおける、ドキュメントコメントの区切り文字の改ざんによるコードインジェクション

### 影響

OpenAPIの説明を制御または改ざんする攻撃者は、Kiotaが生成したドキュメントコメント以外の場所に、攻撃者が制御するJavaまたはPHPのソースコードを出力させる可能性があります。影響を受けるサニタイザーは、コメントの終端記号を無効化するのではなく、削除するため、重なり合う文字や、その後の正規化によって終端記号が再形成される可能性があります。Javaのサニタイザーは、終端記号を削除した後、ASCII文字以外の文字も削除するため、新しい終端記号が作成される可能性があります。

この脆弱性を悪用するには、開発者またはビルドパイプラインが、悪意のある説明からクライアントを生成し、その後、Javaの出力をコンパイルしてロードするか、PHPの出力をロードする必要があります。コードが実行されるのは、Kiotaが説明を読み取るだけではなく、利用するアプリケーションまたはビルド環境のセキュリティコンテキスト内です。

### 影響を受けるバージョン

影響を受けるNuGetパッケージは、`Microsoft.OpenApi.Kiota`と`Microsoft.OpenApi.Kiota.Builder`です。Javaの正規化順序の欠陥は、バージョン0.5.0で導入され、バージョン1.34.1まで存在し、セキュリティバックポート版の1.29.1も含まれます。PHPの区切り文字の改ざんのバリアントも、バージョン1.34.1および1.29.1に存在します。バージョン1.35.0では、これらのバリアントの両方が修正されています。

以下のパッケージバージョン範囲は、Javaの欠陥に関するものであり、この範囲のすべてのバージョンでPHPの生成が存在することを意味するものではありません。

### 修正

Kiotaをバージョン1.35.0以降にアップグレードし、影響を受けるクライアントを再生成してください。この修正では、コメントの終端記号を削除するのではなく、無効化し、非ASCIIの正規化後にJavaの区切り文字を無効化します。

- 修正: https://github.com/microsoft/kiota/pull/8017
- 修正されたリリース: https://github.com/microsoft/kiota/releases/tag/v1.35.0

### 対策

アップグレードするまでは、信頼できる、完全性保護されたOpenAPI記述ファイルからのみクライアントを生成してください。生成されたJavaおよびPHPのソースコードをコンパイル、ロード、またはデプロイする前に、必ず内容を確認してください。生成およびビルド環境で利用可能な権限と機密情報を制限してください。

### 関連する注意喚起

これは、PHPのダブルクォーテーション文字列補間(GHSA-jqwh-526h-c92j)や、C#のXMLドキュメントの改行問題(GHSA-3hrf-2gc2-mx32)とは異なります。これらの修正は、Java/PHPのブロックコメント区切り文字の再構成に関する問題を解決していません。

影響を受けるパッケージ:
- nuget Microsoft.OpenApi.Kiota: 影響を受けるバージョンは0.5.0以上、1.35.0未満。1.35.0で修正済み。
- nuget Microsoft.OpenApi.Kiota.Builder: 影響を受けるバージョンは0.5.0以上、1.35.0未満。1.35.0で修正済み。