v2.53.0
⚠️ セキュリティに関する重要な注意事項
v2.53.0 では、公開APIからサーバー側秘匿値やサーバー設定リソースを利用する場合の保護を強化しました。
OPENAI_API_KEY や CUSTOM_API_* などのサーバー側秘匿値、チャットログ保存、サーバー側TTS URLなどを公開環境で使う場合は、AITUBERKIT_SERVER_SECRET_ACCESS_MODE の設定が必要です。未設定のままでは、一部APIは安全のため 403 で拒否されます。
移行時は用途に応じて次のいずれかを設定してください。
protected:AITUBERKIT_SERVER_SECRET_TOKENを設定し、API呼び出し時にAuthorization: Bearer <token>を付与してください。demo:AITUBERKIT_DEMO_ACCESS_TOKENと許可Originを設定し、デモ用途向けの制限付きアクセスとして使ってください。unprotected: ローカル環境や信頼できる閉じた環境に限定してください。公開環境では推奨しません。disabled: デフォルトです。リクエスト側のAPIキー利用は許可し、サーバー側秘匿値や保護対象リソースの利用は拒否します。
利用者が各自のAPIキーをブラウザ設定から使う通常構成では、この変更による追加設定は基本的に不要です。
設定の詳細は以下を参照してください。
改善
- サーバー側秘匿キーやサーバー設定リソースを利用するAPIに、アクセス制御を追加しました。
AITUBERKIT_SERVER_SECRET_ACCESS_MODEによるdisabled/protected/demo/unprotectedのモード制御に対応しました。protectedモードではBearerトークン、demoモードでは許可Origin・demoトークン・簡易レート制限を使ってアクセスを制御できるようにしました。
- AI / TTS / STT / Embedding / Custom API / YouTube会話継続 / チャットログ保存 / 話者更新系のAPIで、サーバー側秘匿値やサーバーリソース利用時にガードを通すようにしました。
- Custom APIのストリーミングで、reasoningやprovider metadataの転送をデフォルトで抑制するようにしました。
- Cloudflareデプロイワークフローで、公開環境変数追記用の処理を削除し、環境ファイルの扱いを簡素化しました。
バグ修正
save-chat-logのtargetFileNameを検証し、パストラバーサルにつながる不正なファイル名を拒否するようにしました。- VOICEVOX / AivisSpeech のサーバーURLを検証し、不正なURLや非HTTP(S)プロトコルを拒否するようにしました。
- Azure OpenAIのエンドポイント・デプロイメント名処理で、サーバー側設定値を使う場合にもAPI保護を適用するようにしました。
テスト
serverSecretGuardのアクセスモード、Bearerトークン、demoトークン、許可Origin、レート制限、プロキシヘッダー処理をテストしました。- Custom API、AI、Embedding、TTS、話者更新、YouTube会話継続、チャットログ保存など、保護対象APIのテストを追加しました。
ドキュメント・翻訳
.env.exampleにAITUBERKIT_SERVER_SECRET_ACCESS_MODEなどのサーバー側秘匿キー保護設定を追加しました。- READMEと各言語READMEに、公開APIからサーバー側秘匿キーを使う場合の保護設定と
v2.53.0リリースノートへの案内を追加しました。