本文へ移動
English version →
重大 9.4 急ぎ度: 早めに

Algernonに認可回避の脆弱性、1.17.10で修正

WindowsやmacOSでWebサーバーのAlgernonを動かしている組織が対象で、URLの大文字小文字を変えるだけで /admin などの認可を認証なしに回避される脆弱性です。1.17.10へ更新し、アクセスログに不審な形跡がないかも確認してください。

CVE-2026-68548 公開 更新 執筆・監修: 佐々木 航 人が監修しながらAIを活用して執筆
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

CVSS v3は9.4で認証なしにネットワークから悪用でき、修正版1.17.10はすでに公開されているため、インターネットに公開しているサーバーから順に更新するのが妥当です。

関係があるか

AlgernonをWindowsかmacOSで動かし、/admin・/repo・/data配下に保護したいファイルやLuaスクリプトを置いている組織が対象です。権限の仕組みは既定の設定で有効になっています。

製品影響を受ける版修正版
Algernon(github.com/xyproto/algernon、Goモジュール) 1.17.9以前(1.17.10未満) 1.17.10(リリースは7月4日)

確かめ方

  1. 1動かしているAlgernonの版を確認し、1.17.10未満なら対象です。Goのプログラムに組み込んでいる場合は、go.modで取り込んでいる版を見ます。
  2. 2OSとファイルシステムを確認します。WindowsのNTFS、macOSのAPFSやHFS+(既定の設定)は大文字小文字を区別しません。
  3. 3/admin・/repo・/dataのいずれかに、外部へ見せたくないファイルやLuaスクリプトを置いていないか、公開ディレクトリの中身を調べます。

何が起きたか

Algernonには、保護されたパスへのアクセス制限を、URLの大文字小文字を変えるだけで素通りできる脆弱性があります。認証なしで /admin、/repo、/data配下のファイルを読まれ、Luaファイルなら実行までされるおそれがあります。

Algernonは、これらのパスの接頭辞を大文字小文字を区別する文字列比較(strings.HasPrefix)で照合します。大文字を混ぜたパスは保護対象と一致せず、ルート(/)の公開扱いに当たって許可されます。ところが同じパスがそのままファイルシステムの検索に渡され、大文字小文字を区別しない環境ではOSが実在する保護ファイルを開いてしまいます。

種類としてはCWE-178(大文字小文字の扱いの不備)とCWE-863(不適切な認可)です。1.17.10のリリースノートには「権限の確認で、大文字小文字を区別しないファイルシステムにも対応した」とあります。

攻撃の流れ

  1. 1

    リクエスト送信

    認証なしで、保護パスの大文字小文字を変えたURLにアクセスする。

  2. 2

    認可を素通り

    保護対象の接頭辞と一致せず、公開扱いとして許可される。

  3. 3

    実ファイルに解決

    同じパスをOSが検索し、実在する保護ファイルが開かれる。

  4. 4

    内容の取得・実行

    ファイルの内容が返され、Luaなら実行される。

公開されている情報をもとにした流れの例です。

どう悪用されるか

ログインは要りません。ネットワーク越しにAlgernonへリクエストを送れれば成立し、利用者の操作も不要です。攻撃の複雑さは低いと評価されています。

サーバーが大文字小文字を区別しないファイルシステム上でファイルを返していることが前提です。WindowsのNTFSは常に、macOSのAPFSとHFS+は既定でこれに当たります。

悪用されると、保護パス配下の静的ファイルが読まれ、Luaファイルは実行されます。CVSSでは機密性と完全性への影響が高、可用性への影響が低とされています。

今すぐやること

  1. 1

    Algernonの版を確認する

    稼働中のすべてのAlgernonで版を調べ、対象の台数と、インターネットに公開しているものを洗い出します。

    algernon --version
  2. 2

    修正版に更新する

    1.17.10は今回の修正のほかに、引数やフラグの処理、パスの扱い、Luaテーブルの描画などの変更も含みます。検証環境で動作を確かめてから本番へ入れてください。Goのプログラムに組み込んでいる場合は、依存を更新して再ビルドします。

  3. 3

    更新前のアクセスログを調べる

    Algernonや前段のプロキシのログで、/admin・/repo・/dataの大文字小文字を変えた形のパスに、成功応答が返っていないかを見ます。該当があれば、保護パス配下のファイルの内容と、Luaスクリプトの実行で起きうる影響を洗い直してください。

  4. 4

    保護パス配下の機密を棚卸しする

    認証情報や設定値などをこのパス配下に置いていないかを確認します。侵害の疑いがあれば、そこに含まれていた値を差し替えます。

すぐ更新できないとき

公式に示されている対処は1.17.10への更新です。すぐに更新できない間は、次のつなぎで被害を減らせます。
- ファイアウォールやアクセス元の制限で、Algernonに届く範囲を社内や必要な相手だけに絞る。
- 機密性の高いファイルを、/admin・/repo・/data配下から公開ディレクトリの外へ移す。

背景

Algernonは、Goだけで書かれた小さな単体のWebサーバーです。静的ファイルの配信に加えてLuaのスクリプトを動かせるため、社内向けの管理画面や小規模なアプリの土台として使われることがあります。/admin・/repo・/dataは、このサーバーが権限の仕組みで守る既定の保護パスです。

今回の脆弱性は、URLで認可を判断する側と、ファイルを探すOS側とで、大文字小文字の扱いがずれることで起きます。Algernonでは、WindowsのNTFSに由来する別の情報漏えいがすでに報告されています。ただ、その修正は大文字小文字を正規化しないので、今回の経路は防げず、別の修正が必要になりました。

よくある質問

Q.Linuxで動かしていれば影響はありませんか。
A.影響の条件は、大文字小文字を区別しないファイルシステムでファイルを返していることです。WindowsやmacOSの既定の環境が典型ですが、Linuxでもそうした設定のボリュームに公開ディレクトリを置いていれば当てはまります。使っているファイルシステムの設定を確認してください。
Q.Algernonをライブラリとして組み込んだ自社アプリも対象ですか。
A.取り込んでいるAlgernonが1.17.10未満であれば対象です。依存を1.17.10へ更新して再ビルドし、配布し直す必要があります。

まだ分かっていないこと

  • この脆弱性が実際の攻撃で悪用されたかどうかは、公表されている情報からは分かりません。

この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。

原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

Algernon is a small self-contained pure-Go web server. Prior to version 1.17.10, Algernon's URL-prefix authorization gate matches its protected prefixes (/admin, /repo, /data) with case-sensitive strings.HasPrefix, while the exact same raw req.URL.Path is later resolved against the filesystem. On case-insensitive filesystems (Windows NTFS — always; macOS APFS/HFS+ — default), a request for /Admin/secret.lua evades every protected-prefix check, falls through to the public-prefix accept branch, and then resolves on disk to admin/secret.lua. The result is an unauthenticated bypass of the /admin, /repo, and /data authorization boundary, enabling read (and, for Lua files, execution) of protected content. The permission system is active in the default configuration. This issue has been patched in version 1.17.10.

出典: CVE.org (CVE Program・cvelistV5) NVD

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく