Actual BudgetのActualにおける複数の脆弱性
| Title |
Actual BudgetのActualにおける複数の脆弱性
|
| Summary |
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で修正されています。
|
| Possible impacts |
当該ソフトウェアが扱う全ての情報が外部に漏れる可能性があります。 また、当該ソフトウェアが扱う全ての情報が書き換えられる可能性があります。 さらに、当該ソフトウェアが完全に停止する可能性があります。 そして、この脆弱性を悪用した攻撃の影響は、他のソフトウェアには及びません。 |
| Solution |
正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。 |
| Publication Date |
April 24, 2026, midnight |
| Registration Date |
April 30, 2026, 12:30 p.m. |
| Last Update |
April 30, 2026, 12:30 p.m. |
|
CVSS3.0 : 重要
|
| Score |
8.8
|
| Vector |
CVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
Affected System
| Actual Budget |
|
Actual 26.4.0 未満
|
CVE (情報セキュリティ 共通脆弱性識別子)
CWE (共通脆弱性タイプ一覧)
ベンダー情報
その他
Change Log
| No |
Changed Details |
Date of change |
| 1 |
[2026年04月30日] 掲載 |
April 30, 2026, 12:30 p.m. |
NVD Vulnerability Information
CVE-2026-33318
| Summary |
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.
|
| Publication Date |
April 24, 2026, 12:16 p.m. |
| Registration Date |
April 25, 2026, 4:07 a.m. |
| Last Update |
April 28, 2026, 12:01 a.m. |
Affected software configurations
| Configuration1 |
or higher |
or less |
more than |
less than |
| cpe:2.3:a:actualbudget:actual:*:*:*:*:*:node.js:*:* |
|
|
|
26.4.0 |
Related information, measures and tools
Common Vulnerabilities List