「アカウントパスワードをリセット」スクリプトステップの脆弱性

 「アカウントパスワードをリセット」スクリプトステップは、アカウント名と新パスワードを指定して、アカウントのパスワードを変更することができます。このステップの実行には[完全アクセス]アクセス権セットが要求されるため、スクリプトに「完全アクセス権で実行」を設定する必要があります。

 このステップを活用して、ユーザーがアカウントを管理するためのスクリプトを作成することができます。しかし、このステップには危険性があります。具体的には、[完全アクセス]アクセス権セットを持つアカウントの名前さえ知っていれば、パスワードを知らなくてもそれを上書きすることができる可能性があります。

なぜなら、このスクリプトステップには、
1. 変更前のパスワードを必要としないこと
2. [完全アクセス]アカウントのパスワードも変更できること
という性質があるからです。(他のアカウント操作系ステップは[完全アクセス]アカウントを変更できないが、なぜかこのステップだけは可能)このため、[完全アクセス]アカウントのアカウント名さえ知っていれば、パスワードを知らなくてもそれを上書きすることができます。それによって[完全アクセス]アカウントのパスワードを上書きし、ファイルの権限を完全に乗っ取ることが可能です。
 この攻撃が成立するのは、「アカウントパスワードをリセット」を使用していて、
1.このステップに、任意のアカウント名を入力できること
2.[完全アクセス]アカウントのアカウント名を知っていること
の場合です。

スクリプトステップそのものに問題があるため根本的な解決は難しいですが、可能なものとしては以下の対策があります。

・「アカウントパスワードをリセット」ステップに任意のアカウント名を入力させない

・アカウント名の入力をチェックして[完全アクセス]のアカウント名である場合、if分岐でスクリプトを終了させる。(アカウント名をハードコーディングするしかないため、[完全アクセス]アカウントを追加した際はスクリプトも必ず変更するように注意)

 

投稿者プロフィール

奥田
スモールの未来探究部 所属
FileMaker開発エンジニア