AAMVA準拠のIDシステムにおけるPDF417検証の体系的な脆弱性に関する研究(CVE-2025-31336、CVE-2025-31337、scr1841160)
このリポジトリは、政府発行ID、企業向けソリューション、コンシューマアプリケーションに影響を与える、AAMVA標準PDF417バーコード検証システムにおける重大な脆弱性を文書化した包括的なセキュリティ研究です。この研究には、運転免許証のバーコードを処理するID検証システムに存在する体系的な欠陥を実証する、完全に機能する概念実証(PoC)が含まれています。
重要: このコードはセキュリティ研究目的のみで提供されています。使用許容についてはLICENSE.mdファイルを参照してください。
この研究は以下の原則に従って実施されました。
この研究は以下に割り当てられた脆弱性を実証しています。
基本スコア: 10.0 (クリティカル)
ベクター: AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
内訳:
エクスプロイト例:```rust // Temporal validation bypass demonstration let license = CaliforniaLicense::builder() .birth_date("06201500") // Year 1500 - Medieval era .validate(); // Returns OK in affected systems
## 調整履歴とベンダー対応の概要
### 開示タイムライン
- **2025年3月22日**: MITREへの初回CVEリクエスト提出
- **2025年3月25日**: IDScan.netへの概念実証提出と確認
- **2025年3月28日**: TokenWorksの脆弱性確認受領
- **2025年4月3日**: CISA VINCEケースVU#396042正式開封
- **2025年4月9~16日**: 影響を受けるベンダーとの広範な技術的議論
- **2025年6月18日**: CISAケース終了決定(「理解されたリスク」として却下)
- **2025年7月1日**: 長期調整期間を経て公開開示
### ベンダーの対応と技術的相違
#### IDScan.net (Joshua Sheetz, CISO/VP Engineering)
**初期対応**: *「調査の結果、あなたは単にバーコードデータを偽装しているだけであることがわかりました。これは一般的な標準です。」*
**技術的立場**:
- 自社のパーサーは「単にデータを読み取るだけ」であり、検証責任はないと主張
- 不可能な値(524歳の個人)は「パーサー」として許容されると主張
- 実装固有の脆弱性をAAMVA標準の制限として却下
- 「数百のアルゴリズムによるセキュリティチェック」という自社のマーケティング主張と矛盾
**マーケティングと現実のギャップ**:
- VeriScanのWebサイトは「偽造ID検出/ID認証」を約束
- 「偽造IDをキャッチ」し、「セキュリティチェック」を実行すると主張
- 技術分析の結果、フォーマット準拠以上の検証は最小限であることが判明
#### TokenWorksの対応
- 問題を「DMV実装の問題」として認識
- 暗号検証に対するベンダーの責任を軽視
- 修正のタイムラインは提供されず
#### CISAの決定(2025年6月18日)
**最終判断**: *「CISAは、これはAAMVA DL標準における理解されたリスクであるため、脆弱性ではないと判断しました。」*
**CISAの立場に関する技術的分析**:
この決定は、標準の制限と実装固有の脆弱性を混同しているように思われる。本調査では、以下の明確な技術的問題が記録されている。
1. **多層的な脆弱性分類**:
- **レイヤー1**: AAMVA標準の暗号上の欠陥(認識済み)
- **レイヤー2**: 実装固有の検証の失敗(CISAにより却下)
- **レイヤー3**: マーケティング主張と実際のセキュリティ能力の乖離(未対応)
2. **記録された実装固有の問題**:
- **CWE-20(不適切な入力検証)**: 生理学的に不可能な値を受け入れる
- **CWE-345(データ真正性の不十分な検証)**: 暗号チェックなし
- **CWE-770(制限のないリソース割り当て)**: レート制限なし
- **CWE-841(動作ワークフローの不適切な実施)**: パターン検出なし
## 概念実証の検証エビデンス
### ミズーリ州ShowMeID政府アプリケーションのバイパス
 ミズーリ州ShowMeIDバイパスの証拠```shell
gpg --verify signatures/show_me_id/img.png.asc scan_proof/show_me_id/img.png
影響: ミズーリ州の公式政府ID確認アプリケーションの完全なバイパスであり、州レベルの身分確認システムにおける体系的な脆弱性を示しています。
```shell
gpg --verify signatures/veriscan/california/andrew_before.png.asc scan_proof/veriscan/california/andrew_before.png
gpg --verify signatures/veriscan/california/andrew_after.png.asc scan_proof/veriscan/california/andrew_after.png
#### アリゾナ州ライセンス検証のバイパス



```shell
gpg --verify signatures/veriscan/arizona/unanimous.png.asc scan_proof/veriscan/arizona/unanimous.png
gpg --verify signatures/veriscan/arizona/unanimous_1.png.asc scan_proof/veriscan/arizona/unanimous_1.png
```shell
gpg --verify signatures/veriscan/florida/wendy_synthesized.png.asc scan_proof/veriscan/florida/wendy_synthesized.png
#### ジョージア州ライセンス検証バイパス

```bash
# Verify Georgia bypass evidence
gpg --verify signatures/veriscan/georgia/hire_me_2.png.asc scan_proof/veriscan/georgia/hire_me_2.png
```shell
gpg --verify signatures/veriscan/new_jersey/wendy_synthesized.png.asc scan_proof/veriscan/new_jersey/wendy_synthesized.png
#### サウスカロライナ州ライセンス検証バイパス

```shell
gpg --verify signatures/veriscan/south_carolina/slander.png.asc scan_proof/veriscan/south_carolina/slander.png
テキサスバイパスの証拠 - 州の実装全体にわたる一貫した脆弱性パターンを示しています```shell
gpg --verify signatures/veriscan/texas/slander.png.asc scan_proof/veriscan/texas/slander.png
## 技術的証拠とベンダーの反論
### 文書化された脆弱性
#### 1. 時間的検証バイパス
**発見**: VeriScan は中世の生年月日(例:1500年)を受け入れる
**ベンダーの応答**: *"線引きはどこにするのか、特に単なるパーサーでは"*
**技術的対抗手段**: 人間の生理的限界が明確な検証境界を提供する(最大約122年)
#### 2. パターン検出の失敗
**発見**: 同じライセンス番号が異なる名前で繰り返し受け入れられる
**ベンダーの応答**: *"最初のスキャンと2回目のスキャンのどちらが本物かは分からない"*
**技術的対抗手段**: パターン検出はどちらが本物かに関わらず疑わしい動作をフラグする
#### 3. マーケティングクレームの不一致
**発見**: 製品は「セキュリティチェック」と「偽造ID検出」を提供するとマーケティングされている
**ベンダーの応答**: *"当社の解析ツールのみを使用する場合...利用可能な機能セットに制限される"*
**技術的対抗手段**: マーケティング資料は明示的に検証機能を主張している
#### 4. 商用ライセンスの影響
**発見**: CDL(商用運転免許証)のバイパスは公共の安全リスクを引き起こす
**ベンダーの応答**: 特に対処されていない
**技術的影響**: 危険物/輸送資格のなりすましの可能性
## CVE-2025-31337: IDScan.net 検証の欠陥
### 影響を受ける製品
- **VeriScan** エンタープライズ検証プラットフォーム
- **VSCloud Enterprise** クラウドベースの検証
- **IDScan API を使用するモバイル検証アプリケーション**
### 脆弱性の詳細
**主な技術的問題**:
1. **時間的検証の失敗**:
- 生理学的に不可能な生年月日(例:1500年)を受け入れる
- 年齢計算の上限検証がない
- 将来の有効期限が検証を通過する
2. **ヘッダーのみの検証**:
- AAMVA フォーマット準拠性を内容の真正性よりも優先
- 暗号署名の検証がない
- 論理的一貫性チェックのない静的フィールド検証
3. **静的IINの受け入れ**:
- 発行者データベースとのリアルタイムクロスチェックがない
- 合成データとともに有効な州IIN(例:636014=CA)を受け入れる
- 権威あるDMV記録に対する検証がない
## CVE-2025-31336: TokenWorks ID 検証の脆弱性