Actual BudgetのActualにおける複数の脆弱性
タイトル Actual BudgetのActualにおける複数の脆弱性
概要

Actualはローカルファーストのパーソナルファイナンスツールです。バージョン26.4.0以前では、認証されたユーザー(`BASIC`ロールを含む)がパスワード認証からOpenID Connectに移行したサーバー上で`ADMIN`権限に昇格できてしまいます。3つの脆弱性が組み合わさっています。`POST /account/change-password`には認可チェックがなく、任意のセッションからパスワードハッシュを書き換えることが可能です。移行時に非アクティブなパスワード`auth`行が削除されません。そして、ログインエンドポイントはクライアントが指定する`loginMethod`を受け入れ、サーバーのアクティブな認証設定を回避してしまいます。これらが組み合わさることで、攻撃者は既知のパスワードを設定し、マルチユーザー移行中に作成された匿名の管理者アカウントとして認証できてしまいます。これら3つの脆弱性は連続した一つのエクスプロイトチェーンを形成しており、単独では特権昇格は発生しません。`POST /change-password`の認可欠如はパスワードハッシュの上書きを可能にしますが、孤立した対象の行がある場合に限り意味を持ちます。移行後に残存する孤立したパスワード行は対象行を提供しますが、それだけでは認証に使えず無害です。クライアント制御のloginMethod "password"はパスワード認証を強制しますが、ステップ1で確立された既知のハッシュがなければ無効です。これらすべてを順に連結することで影響を与えることが可能です。単一の脆弱性だけでは特権昇格は起こりません。根本原因は`/change-password`の認可チェックの欠如であり、他の2つはそれを悪用可能にする前提条件です。バージョン26.4.0で修正されています。

想定される影響 当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 
対策

正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。

公表日 2026年4月24日0:00
登録日 2026年4月30日12:30
最終更新日 2026年4月30日12:30
CVSS3.0 : 重要
スコア 8.8
ベクター CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
影響を受けるシステム
Actual Budget
Actual 26.4.0 未満
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
ベンダー情報
その他
変更履歴
No 変更内容 変更日
1 [2026年04月30日]
  掲載
2026年4月30日12:30

NVD脆弱性情報
CVE-2026-33318
概要

Actual is a local-first personal finance tool. Prior to version 26.4.0, any authenticated user (including `BASIC` role) can escalate to `ADMIN` on servers migrated from password authentication to OpenID Connect. Three weaknesses combine: `POST /account/change-password` has no authorization check, allowing any session to overwrite the password hash; the inactive password `auth` row is never removed on migration; and the login endpoint accepts a client-supplied `loginMethod` that bypasses the server's active auth configuration. Together these allow an attacker to set a known password and authenticate as the anonymous admin account created during the multiuser migration. The three weaknesses form a single, sequential exploit chain — none produces privilege escalation on its own. Missing authorization on POST /change-password allows overwriting a password hash, but only matters if there is an orphaned row to target. Orphaned password row persisting after migration provides the target row, but is harmless without the ability to authenticate using it. Client-controlled loginMethod: "password" allows forcing password-based auth, but is useless without a known hash established by step 1. All three must be chained in sequence to achieve the impact. No single weakness independently results in privilege escalation. The single root cause is the missing authorization check on /change-password; the other two are preconditions that make it exploitable. Version 26.4.0 contains a fix.

公表日 2026年4月24日12:16
登録日 2026年4月25日4:07
最終更新日 2026年4月28日0:01
影響を受けるソフトウェアの構成
構成1 以上 以下 より上 未満
cpe:2.3:a:actualbudget:actual:*:*:*:*:*:node.js:*:* 26.4.0
関連情報、対策とツール
共通脆弱性一覧