概要
セルフホスト型の監視ツールとして人気の高い「Uptime Kuma」の開発チームは8月2日(日本時間)、バージョン2.5.0をリリースした。今回の目玉は監視機能の拡充だけでなく、開発リポジトリ自体のnpm依存関係管理にサプライチェーン攻撃対策を組み込んだことだ。具体的には、.npmrcにmin-release-age=14という設定を追加し、npmパッケージが公開されてから14日間が経過するまで、依存関係の更新に取り込まないようにした。これはnpm CLI自体が備える比較的新しい機能で、悪意あるバージョンが公開直後に自動更新で取り込まれてしまうリスクを下げる狙いがある。
技術的な詳細
min-release-ageはnpmのインストール・更新処理に対して、指定した日数(今回は14日)より新しく公開されたパッケージバージョンの採用を保留させるオプションだ。Uptime Kuma開発チームはこれを44名以上のコントリビューターによる今回のリリースの一部として、依存関係更新のPR(#7508)でリポジトリ全体に適用した。近年、npmエコシステムでは公開直後の正規パッケージのメンテナーアカウントが乗っ取られ、悪意あるコードが混入したバージョンが数時間から数日で拡散する事件が相次いでいる。多くの場合、問題のあるバージョンは発見後すぐに取り下げられるため、一定期間の「クールダウン」を設けるだけで被害を回避できるケースが多い。今回の変更は、Uptime Kuma自体の開発・ビルドプロセスを対象にしたものであり、エンドユーザーが監視対象に対して使う機能ではない点に注意が必要だ。
監視機能の新機能
セキュリティ対策以外にも、監視機能そのものへの追加が多数行われた。ネットワークタイムプロトコル(NTP)の同期状態を監視できる新しい監視タイプが加わったほか、これまで24日が上限だったチェック間隔の制限が撤廃され、より長い間隔でのポーリングが可能になった。Dockerイメージ面では、非rootユーザーで実行できるnext-rootlessタグが新たに提供され、コンテナ運用時のセキュリティ強化に寄与する。このほか、Plivo・Ooredoo(モルディブ)・WxPusherといった新しい通知プロバイダーの追加、SMTP通知への追加ヘッダーオプション、MQTT監視でのmqtts://対応など、細かな機能拡張やバグ修正も多数含まれている。
今後の展望
min-release-ageのような公開後クールダウンの仕組みは、npmパッケージを大量に扱うOSSプロジェクトにとって、比較的低コストで導入できるサプライチェーン対策として注目されている。Uptime Kumaのような広く使われるセルフホストツールが具体的な設定例を公開したことで、同様の対策を検討する他のプロジェクトにとっても参考になりそうだ。一方で、この仕組みはあくまで開発側のビルド・依存関係管理を守るものであり、エンドユーザーが自身の環境にUptime Kumaをデプロイする際のセキュリティは、引き続き利用者自身によるアップデート適用やアクセス管理に委ねられている。