
このリポジトリは、政府発行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 検証の脆弱性
### 影響を受ける製品
- **IDentiFake Plus** 検証端末
- **AgeVisor Series** 年齢確認デバイス
- **IDVisor Sentry** セキュリティスキャンシステム
- **製品ライン全体のすべての現行バージョン**
### 脆弱性の詳細
**根本原因**:
PDF417 バーコードの時間的データフィールドとサブファイルマーカーの不適切な検証により、TokenWorks 検証システムをバイパスする完全な合成ID生成が可能になる。
**技術的悪用ベクトル**:
1. **生年月日フィールドの操作**:
- システムは1400~2025年の日付を検証なしで受け入れる
- 生理的境界チェックが実装されていない
- 中世の日付(例:1400年代)が正当なものとして通過する
2. **サブファイルオフセットの偽造**:
- 偽造されたZC/ZF/ZG州固有マーカーが受け入れられる
- 計算されたオフセットがフォーマット検証を通過する
- 既知のパターンに対するクロスリファレンス検証がない
## AAMVA ID 標準におけるシステム的脆弱性
### 根本原因分析
脆弱性は、**AAMVA DL/ID-2020 標準**の基本的なギャップに起因する:
**重要な標準欠陥**:
- **暗号検証要件の欠如**: デジタル署名仕様がない
- **不十分な時間的範囲チェック**: セクション4.3.2に年検証要件がない
- **データの真正性よりもフォーマット準拠性が優先**: コンテンツ検証よりもパースの正確性が重視される
### 影響を受けるシステムマトリックス
| システムタイプ | 例 | 影響レベル | 検証バイパス |
|-------------------------|------------------------------|------------|-------------------|
| 政府IDアプリ | Missouri ShowMeID v3.0.14 | **重大** | 完全 |
| エンタープライズスキャナー | TokenWorks IDentiFake Plus | **高** | 時間的/パターン |
| 消費者向けツール | Scannr iOS v4.2.1+ | **高** | フォーマットベース |
| KYCプラットフォーム | IDScan.net VSCloud | **重大** | 認証 |
## リポジトリ構造```shell
./
├── Cargo.lock
├── Cargo.toml # Rust project configuration
├── generated_pdf417.png # Example output barcode
├── LICENSE.md # Security Research License
├── README.md # This comprehensive documentation
├── scan_proof/ # Validation evidence and screenshots
│ ├── show_me_id/ # Missouri ShowMeID bypass evidence
│ │ └── img.png
│ └── veriscan/ # VeriScan validation bypasses
│ ├── arizona/ # Arizona license validation tests
│ │ ├── cole_after.png
│ │ ├── cole_before.png
│ │ ├── unanimous_1.png
│ │ └── unanimous.png
│ ├── california/ # California license validation tests
│ │ ├── andrew_before.png
│ │ ├── andrew_after.png
│ │ └── joe_biden.png
│ ├── florida/ # Florida license validation tests
│ │ ├── before.png
│ │ └── wendy_synthesized.png
│ ├── georgia/ # Georgia license validation tests
│ │ ├── hire_me_2.png
│ │ └── lucas_real.png
│ ├── new_jersey/ # New Jersey license validation tests
│ │ ├── ana_real.png
│ │ └── wendy_synthesized.png
│ ├── south_carolina/ # South Carolina license validation tests
│ │ ├── jason_real.png
│ │ └── slander.png
│ └── texas/ # Texas license validation tests
│ └── slander.png
├── signatures/ # PGP signatures for all evidence
│ ├── show_me_id/
│ │ └── img.png.asc
│ └── veriscan/
│ ├── arizona/
│ │ ├── unanimous_1.png.asc
│ │ └── unanimous.png.asc
│ ├── california/
│ │ └── joe_biden.png.asc
│ ├── florida/
│ │ └── wendy_synthesized.png.asc
│ ├── georgia/
│ │ └── hire_me_2.png.asc
│ ├── new_jersey/
│ │ └── wendy_synthesized.png.asc
│ └── south_carolina/
│ └── slander.png.asc
├── vince_coordination/ # CISA VINCE case documentation
│ └── VU396042_thread.pdf # Complete coordination thread
├── scripts/
│ └── barcode_reader.sh # Barcode validation utility
└── src/ # Proof of Concept implementation
├── main.rs # Interactive demonstration program
├── states/ # State-specific implementations
│ ├── california_cdl.rs # California Commercial Driver's License
│ ├── california.rs # California standard license
│ ├── florida.rs # Florida license implementation
│ ├── georgia.rs # Georgia license implementation
│ ├── illinois.rs # Illinois license implementation
│ ├── mod.rs # States module
│ ├── new_jersey.rs # New Jersey license implementation
│ ├── south_carolina.rs # South Carolina license implementation
│ └── texas.rs # Texas license implementation
└── utils/ # Core functionality
├── decoding/ # PDF417 barcode decoding
│ ├── base64_to_str.rs
│ ├── decode.rs
│ ├── errors.rs
│ ├── mod.rs
│ └── tests.rs
└── encoding/ # PDF417 barcode generation
├── encode.rs
└── mod.rs
基本的な脆弱性は、本人確認エコシステムの複数のレイヤーにわたって顕在化します。
技術的課題: 検証システムは、データの内容や発行元を認証することなく、AAMVAフォーマットへの準拠のみを検証します。
影響: 適切なPDF417構造と州固有のフォーマットを維持していれば、完全に合成された身分証明書でも検証を通過する可能性があります。
技術的課題: システムは、バーコード情報が発行機関の信頼できる記録と一致することを確認できません。
影響: フォーマットは有効だが、個人情報が完全に偽造された身分証明書の作成が可能になります。
技術的課題: 合成データを使用しながら技術的に正しいオフセット値を計算することで、偽造された身分証明書がパース検証をすり抜けます。
影響: 高度な攻撃者は、フォーマットチェックと基本的な整合性チェックの両方を通過する身分証明書を生成できます。
技術的課題: システムは、生理学的および論理的に不可能な値(中世の生年月日、未来の発行日)を受け入れます。
影響: 検証ワークフローにおける基本的な妥当性チェックの根本的な欠如を示しています。
技術的課題: 商用運転免許証のようなセキュリティ強化された文書も、同じ悪用手法に対して同様に脆弱です。
影響: 危険物/運送資格のなりすましを通じて、重大な公共の安全リスクをもたらします。
この研究には7つの州の包括的な実装が含まれており、異なるエンコーディングスキーム間で一貫した脆弱性パターンを示しています。
california.rs, california_cdl.rs)florida.rs)georgia.rs)illinois.rs)new_jersey.rs)south_carolina.rs)texas.rs)実装上の注意: 変更可能な値
州の実装全体を通じて、特定の値は検証を破らずに変更できます。
- '9' シーケンス:
999999999を使用するフィールドは、任意の値で変更可能- 'X' プレースホルダー:
XXXXXを使用するフィールドは、任意の文字に置き換え可能- 時間フィールド: あらゆる日付を変更可能(中世の生年月日、未来の発行日などの不可能な値を含む)
- 個人情報: 氏名、住所は完全に偽造可能
この柔軟性は、影響を受けるシステムにおける包括的なデータ検証の欠如を浮き彫りにしています。
この実装は、各州のビルダーパターンを提供します。```rust // Example demonstrating comprehensive validation bypass use crate::states::california::CaliforniaLicense;
let license = CaliforniaLicense::builder() .expiration_date("12312030") // Future expiration (accepted) .last_name("RESEARCH") // Synthetic data .first_name("TEMPORAL") .middle_name("BYPASS") .issue_date("07012025") // Current date .birth_date("01011500") // Medieval date (accepted by VeriScan) .sex("1") // Male .eye_color("BLU") // Blue eyes .height("070 IN") // Height in inches .address("123 VALIDATION ST") // Synthetic address .city("TESTTOWN") .state("CA") .zip_code("900010000") .license_number("T3ST1234") // Synthetic license number .country("USA") .weight("150") // Weight in pounds .hair_color("BRO") // Brown hair .sequence("99999") // Research sequence number .issuer_identification_number("636014") // Valid CA IIN .redundant_eye_color("BLU") // AAMVA redundant field .alternative_hair_color("BRO") // AAMVA alternative field .build() .expect("Failed to build California license");
// Generate barcode that bypasses VeriScan validation let barcode_data = license.to_barcode();
### テストと検証```bash
# Run comprehensive test suite
cargo test
# Execute specific vulnerability demonstrations
cargo test -- --nocapture test_temporal_validation_bypass
cargo test -- --nocapture test_commercial_license_spoofing
cargo test -- --nocapture test_cross_state_consistency
# Generate and test specific state implementations
cargo test -- --nocapture test_california_license
cargo test -- --nocapture test_texas_license
git clone https://github.com/coleleavitt/AAMVA-PDF417-Vulnerability-Research.git cd AAMVA-PDF417-Vulnerability-Research
cargo build --release
./target/release/id-validation-poc
### 生成されたバーコードのスキャン
生成されたバーコードはPNGファイルとして保存され、テスト用に検証システムに提示できます。```bash
# Using the provided script to read a generated barcode (requires zbar tools)
./scripts/barcode_reader.sh generated_pdf417.png
目の色の標準:
髪の色の標準:
この研究の真正性と整合性を検証するには:
curl https://keys.openpgp.org/vks/v1/by-fingerprint/2EFAA4791439CF3547A966801ECC2986AF903402 | gpg --import
gpg --verify complete-evidence.tar.gz.asc complete-evidence.tar.gz
gpg --verify signatures/show_me_id/img.png.asc scan_proof/show_me_id/img.png gpg --verify signatures/veriscan/california/joe_biden.png.asc scan_proof/veriscan/california/joe_biden.png gpg --verify signatures/veriscan/arizona/unanimous.png.asc scan_proof/veriscan/arizona/unanimous.png
**PGPフィンガープリント**: `2EFA A479 1439 CF35 47A9 6680 1ECC 2986 AF90 3402`
## 研究方法と倫理
### 責任ある開示アプローチ
ベンダーの否定やCISAのケースクローズにもかかわらず、本研究は責任ある開示原則を維持しています。
1. **延長された調整期間**: 120日以上(標準の90日間を超過)
2. **合成データのみ**: すべてのデモンストレーションは明確にマークされた研究データを使用
3. **ベンダーとの連携**: 広範な技術的議論と提案された解決策
4. **公共の安全への焦点**: 悪用よりも防御的改善に重点
### 技術的検証基準
すべての所見は以下に照らして検証されました:
- **NIST SP 800-63B** 本人確認ガイドライン
- **NIST Cybersecurity Framework v1.1** セキュリティ管理策
- **CWE/SANS Top 25** 脆弱性分類
- **ISO/IEC 29147** 開示基準
## 参考文献と基準
### 技術基準とガイドライン
- [AAMVA DL/IDカード設計標準](https://www.aamva.org/dl-id-standards/) - 公式AAMVA実装仕様
- [NIST SP 800-63B 本人確認ガイドライン](https://pages.nist.gov/800-63-3/sp800-63b.html) - 連邦本人確認基準
- [NIST Cybersecurity Framework v1.1](https://www.nist.gov/cyberframework) - サイバーセキュリティ実装ガイダンス
- [CWE/SANS Top 25 最も危険なソフトウェアエラー](https://cwe.mitre.org/top25/) - 脆弱性分類フレームワーク
- [ISO/IEC 29147 脆弱性開示](https://www.iso.org/standard/45170.html) - 国際開示基準
### 調整および公開に関する参考文献
- [MITRE CVEプログラム](https://cve.mitre.org/) - 脆弱性の調整と公開
- [CISA脆弱性開示ポリシー](https://www.cisa.gov/vulnerability-disclosure-policy) - 連邦調整フレームワーク
## 制限と倫理的考慮事項
### 技術的制限
1. **物理的セキュリティ機能の欠如**: 生成されたバーコードは物理的セキュリティ機能(ホログラム、RFID、特殊インク)を欠く
2. **法的コンプライアンス要件**: すべてのデモンストレーションは「研究目的のみ」の透かし入り合成データを使用
3. **調整の課題**: 実装固有の脆弱性に対処する業界の抵抗
4. **規制フレームワークのギャップ**: 体系的な検証セキュリティ問題への対処に関する既存フレームワークの不足
### 倫理的研究の境界
1. **合成データの排他的利用**: いかなるデモンストレーションでも実際の個人情報は使用されていません
2. **教育目的への焦点**: 防御的セキュリティ能力の向上を目的とした研究
3. **責任ある開示の遵守**: 延長された調整期間と協力的なベンダーとの連携
4. **公共の安全の優先**: 悪用の促進よりも保護的改善に重点
## 今後の研究方向性
### 必要な技術的改善
1. **暗号検証**: デジタル署名検証の実装
2. **行動分析**: 不審なスキャン行動のパターン検出
3. **データベース統合**: 発行当局とのリアルタイム相互参照
4. **多要素検証**: 物理的およびデジタル検証方法の組み合わせ
### ポリシーと調整の改善
1. **脆弱性分類**: 標準問題と実装問題のためのより優れた枠組み
2. **業界の説明責任**: セキュリティ主張に対するより明確な責任モデル
3. **公共の安全の統合**: 現実世界への影響の考慮の強化
4. **国際調整**: 国境を越えた本人確認基準
## 責任ある開示と公共の利益
本研究は、広範な調整努力を経て公共の利益のために公開されています。公開の決定要因:
1. **延長された調整のコミットメント**: 120日以上の誠実なベンダーおよび規制当局との関与
2. **公共の安全リスク評価**: 商用ライセンスのなりすまし能力は重大な輸送セキュリティリスクをもたらす
3. **技術的価値の検証**: 業界の注意を要する文書化された実装固有の脆弱性
4. **教育的価値の提供**: 研究はセキュリティ意識と防御能力開発を向上させる
### 継続的なベンダーとの連携
調整上の不一致にもかかわらず、研究者は以下のために引き続き利用可能です:
- 技術的実装改善の支援
- AAMVA標準拡張の支援と協力
- 防御的セキュリティ対策の開発
- 必要に応じた追加の技術分析の提供
## 連絡先と調整
### 研究連絡先情報
- **主なメール**: [email protected] (PGP暗号化推奨)
- **GitHubプロフィール**: [github.com/coleleavitt](https://github.com/coleleavitt)
- **LinkedIn**: [linkedin.com/in/coleleavitt](https://linkedin.com/in/coleleavitt)
### 継続的な調整チャネル
- **MITRE CVEプログラム**: [email protected]
- **CISA脆弱性開示**: [email protected]
- **VINCEケース参照**: VU#396042 (クローズ済みだが、文書は利用可能)
## ライセンスと法的枠組み
本研究は包括的なセキュリティ研究ライセンスの下で提供されます。完全な利用規約については[LICENSE.md](https://github.com/coleleavitt/aamva-pdf417-vulnerability-research/blob/HEAD/LICENSE.md)を参照してください。
**研究目的**: 本研究は、本人確認エコシステム全体のセキュリティ向上を目的として実施されました。調整努力には大きな課題がありましたが、技術的所見は引き続き有効であり、公共の安全と国家安全保障の利益を保護するために業界の注意が必要です。
**法的コンプライアンス**: すべての研究活動は、コンピュータ詐偽及び濫用防止法(CFAA)、デジタルミレニアム著作権法(DMCA)、ならびに関連する州および連邦の身分証明書規制を含む適用法令に準拠しています。実際の個人情報は一切使用されておらず、すべてのデモンストレーションは明確にマークされた合成研究データを使用しています。
**注記**: 本研究は、本人確認エコシステム全体のセキュリティ向上を目的として実施されました。調整努力には課題がありましたが、技術的所見は引き続き有効であり、公共の安全と国家安全保障の利益を保護するために業界の注意が必要です。