What’s new in v25.2LTS-patch20261023
General changes
- Classフィールド(identifier/local_fields)にDBレイヤのデフォルト値(
field_server_default)を指定できるようにしました。 - ClosedLoopが起動するJob/Podに任意の環境変数を注入できるオプション(
podOptions.env/podOptions.envFrom)を追加しました。 - ClosedLoop向けextensionをあらかじめコンテナイメージに埋め込み済みの環境向けに、ConfigMap経由の配布を省略できるオプション(
extension_base_dir_image_embedded)を追加しました。 - DAGオブジェクトの属性として
versionを取得できるようにしました。 - ClosedLoopTypeの
podOptions.envFromでprefixを省略できるようにしました。省略した場合はConfigMap/Secretのキー名がそのまま環境変数名になります。
Bug fixes
- 複数のserveブロックを含むシナリオで、既に通過済みのserve宛のcallbackが遅れて届いた際にtransactionの進行状況が巻き戻る問題を修正しました。
- trace機能で、巨大なレスポンスボディを上限なくログ配信していた問題を修正し、サイズに上限を設けました。
- 非JSON形式のレスポンスのContent-Typeが
application/jsonのままになる問題、および/metricsエンドポイントにセキュリティヘッダーが付与されない問題を修正しました。 - axisマスター再起動のたびに、稼働中のClosedLoop Jobが参照しているextension用ConfigMapが削除されてしまうことがある問題を修正しました。
- SNMPヘルパーがpysnmp7の仕様変更に追従しておらず、一部の操作でエラーになる問題を修正しました。
- Slack通知で本文が4000文字を超えた場合に本文の大部分が失われる問題を修正しました。
- SNMPのGETBULKがタイムアウトした際、エラー応答の対象OIDが空になり、どの監視対象の失敗か判別できない問題を修正しました。
Content-Typeがapplication/json以外、かつ静的ルーティングを指定したcalloutで、静的ルーティング指定が無視される問題を修正しました。ルートにターゲットが設定されている場合、エラーにならないまま本来と異なる宛先へ配送されることがありました。- Classフィールドに指定したデータベースレイヤのデフォルト値(
field_server_default)が、atomの保存時に適用されない問題を修正しました。値を指定せずに生成したatomには、指定したデフォルト値がフィールドの型に変換されて設定されます。identifierに指定した場合も同様で、自動生成APIのPOSTではidentifierを省略できます(field_defaultを持つidentifierは従来どおり必須です)。 - 既存のインスタンスがあるClassを
PUT /classesで更新した際、field_server_defaultの変更がテーブル列のデフォルト値に反映されない問題を修正しました。既存の行の値は変更されません。また、field_server_defaultを削除しても列のデフォルト値は削除されません。 - Redisへのpublishのたびに新規接続していたため、DAGの合流点などで接続の確立と名前解決が集中する問題を修正しました。
- 対話シェルの
systemsコマンドで、Redisのコネクションプール統計の取得がエラーになる問題を修正しました。 GET /extensionsで、存在しないパッケージ等の不正なpackage指定が500エラーになる問題を修正し、400を返すようにしました。あわせて、extensionのベースディレクトリ直下に配置した.pyファイルが一覧に表示されない問題を修正しました。extension_base_dirsで配置したextensionが、ClosedLoopのrunner Podへ正しく配布されない問題を修正しました。- GitHub連携モードで、既存のPluginを更新すると誤ったパスに保存される問題を修正しました。
- ClosedLoopのrunner Job生成時のextension取得と、DAGのクラッシュリカバリがエラーとなり動作しない問題を修正しました。
- point scheduleの実行履歴(life)が、保持期間(
schedule_history_duration_days)を過ぎても削除されずに蓄積する問題を修正しました。 - APIGW以外のサービス(scenario、collector、reflector等)がAPIGWを内部で呼び出す際に使うクレデンシャルが、サービスの起動から
credential_expires(デフォルト24時間)の経過後に失効し、以後の内部呼び出しが401になる問題を修正しました。この問題により、Scenarioの登録・更新(POST/PUT /scenarios)が500 {"cause":"401 GET /routings"}で失敗していました。内部のクレデンシャルは有効期限の1時間前から自動的に再発行されます。
セキュリティ対応
- パスワード生成処理で暗号論的に安全でない乱数生成器を使用していた問題を修正しました。
- superuserログイン時の資格情報比較を定数時間比較に変更しました。
- APIキーローテーション後もアカウントキャッシュが即座にクリアされず、旧キーが一時的に有効なままになる問題を修正しました。
super_api_keyを用いた認可の高速パスで、有効期限切れの資格情報が通ってしまう問題を修正しました。- NETCONFデバイスへの接続時、起動ログに平文パスワードが出力される問題を修正しました。
- トレース・プロファイル取得APIが無認証でアクセスできた問題を修正し、認証を必須化しました。
- 複数ロールを保有するアカウントが認可のdeny-listをバイパスできる問題を修正しました。
- インベントリカウンタの作成・拡張・縮小操作で、過大な範囲指定によるメモリ枯渇を防ぐ上限を設けました。
- オンラインアップグレード機能に、細工したリリースタグ文字列を渡すことで意図しないgit操作が実行されうる問題を修正しました。
- 内部ルーティング上書き用ヘッダーが外部から偽装可能だった問題を修正しました。
- 認証なしで任意のリクエストを内部特権クレデンシャル付きでプロキシできてしまうエンドポイントを削除しました。
- アカウントパスワードのハッシュ方式をSHA224からbcryptへ移行しました(既定では既存のSHA224ハッシュのまま動作し、明示的な設定変更で段階的に移行できます)。
- ログ出力からの認証情報・トークンの漏えい、パストラバーサル、正規表現による性能劣化、SQLインジェクションに関する複数の対策を実施しました。
- 複数のAPIキー・family-key検証処理の比較方法を定数時間比較に統一しました。
- 予約ヘッダ(
X-Xaas-Schedule-Datetime)付きのリクエストが、ルートの認可を経ずに予約され、実行時に認可を迂回できた問題を修正しました。 - GitHub連携モードのPlugin削除で、パスの検証が行われていなかった問題を修正しました。
Modules
依存moduleの更新
- eMudhra社の中間認証局の秘密鍵が漏えいした問題(2026年10月17日公表)に対応するため、以下のmoduleのバージョンを更新しました。漏えいした認証局が発行した証明書を信頼しないようになります。
certifi 2026.2.25 -> 2026.10.19
- 以下のmoduleのバージョンを更新しました。
aiosmtplib 2.0.0 -> 5.1.2
geopy 2.3.0 -> 2.5.0
multidict 6.7.1 -> 6.9.1
PyJWT 2.13.0 -> 2.15.0
setuptools 82.0.1 -> 83.0.0
tornado 6.5.7 -> 6.5.9
urllib3 2.7.0 -> 2.8.0
Note
本バージョンはv25.2LTS-patch20260911以降の変更をすべて含みます(v25.2LTS-patch20261022のeMudhra社の中間認証局への対応も含みます)。