本仓库包含全面的安全研究,记录了影响政府身份证明、企业解决方案和消费类应用的 AAMVA 标准 PDF417 条码验证系统中的关键漏洞。研究包括一个功能完整的概念验证(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/工程副总裁)
**初步回应**:*“经过调查,发现您只是在伪造条码数据。这是常见标准。”*
**技术立场**:
- 声称其解析器“仅读取数据”,不负责验证
- 认为不可能的值(524岁个体)在“解析器”中可以接受
- 将特定实现漏洞视为AAMVA标准局限性
- 与其自身关于“数百项算法安全检查”的营销声明相矛盾
**营销与现实差距**:
- VeriScan网站承诺“假证检测/身份证认证”
- 声称能“识别假证”并执行“安全检查”
- 技术分析显示验证程度极低,仅满足格式合规性
#### TokenWorks回应
- 将问题视为“DMV实施问题”
- 淡化供应商对加密验证的责任
- 未提供修复时间表
#### CISA决定(2025年6月18日)
**最终裁决**:*“CISA认为这不构成漏洞,因为这是AAMVA DL标准中的已知风险。”*
**对CISA立场的技术分析**:
该决定似乎将标准局限性问题与特定实现漏洞混为一谈。研究记录了以下不同技术问题:
1. **多层漏洞分类**:
- **第一层**:AAMVA标准加密缺陷(已确认)
- **第二层**:特定实现验证失败(CISA未予受理)
- **第三层**:营销声明与实际安全能力不符(未予处理)
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
影响:完全绕过密苏里州官方身份验证应用,揭示了州级身份验证系统中的系统性漏洞。
```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
## Technical Evidence and Vendor Rebuttals
## 技术证据与供应商反驳
### Documented Vulnerabilities
### 已记录的漏洞
#### 1. Temporal Validation Bypass
#### 1. 时间验证绕过
**Finding**: VeriScan accepts birth dates from medieval times (e.g., year 1500)
**发现**: VeriScan 接受中世纪时期的出生日期(例如,年份1500)
**Vendor Response**: *"Where do you draw the line, especially in just a parser"*
**供应商回应**: *"你在哪里划定界限,尤其是在一个解析器中"*
**Technical Counter**: Human physiological limits provide clear validation boundaries (max ~122 years)
**技术反驳**: 人类生理限制提供了明确的验证边界(最大约122年)
#### 2. Pattern Detection Failure
#### 2. 模式检测失败
**Finding**: Same license number with different names accepted repeatedly
**发现**: 相同驾照号码与不同姓名被重复接受
**Vendor Response**: *"We would not know if the first or second scan was real"*
**供应商回应**: *"我们无法知道第一次或第二次扫描是否真实"*
**Technical Counter**: Pattern detection flags suspicious behavior regardless of which is authentic
**技术反驳**: 模式检测会标记可疑行为,无论哪次是真实的
#### 3. Marketing Claims Discrepancy
#### 3. 营销声明差异
**Finding**: Product marketed as providing "security checks" and "fake ID detection"
**发现**: 产品宣传提供"安全检查"和"假身份证检测"
**Vendor Response**: *"Using only our parsing tool...you are limited to what feature sets you have"*
**供应商回应**: *"仅使用我们的解析工具...您受限于所拥有的功能集"*
**Technical Counter**: Marketing materials explicitly claim validation capabilities
**技术反驳**: 营销材料明确声称验证能力
#### 4. Commercial License Implications
#### 4. 商业驾照影响
**Finding**: CDL (Commercial Driver's License) bypass poses public safety risks
**发现**: CDL(商业驾照)绕过构成公共安全风险
**Vendor Response**: Not specifically addressed
**供应商回应**: 未特别回应
**Technical Impact**: Hazmat/transport credential spoofing potential
**技术影响**: 危险品/运输凭证欺骗的可能性
## CVE-2025-31337: IDScan.net Validation Flaw
## CVE-2025-31337: IDScan.net 验证缺陷
### Affected Products
### 受影响产品
- **VeriScan** enterprise validation platform
- **VeriScan** 企业验证平台
- **VSCloud Enterprise** cloud-based verification
- **VSCloud Enterprise** 基于云的验证
- **Mobile verification applications** using IDScan APIs
- **使用 IDScan API 的移动验证应用**
### Vulnerability Details
### 漏洞详情
**Core Technical Issues**:
**核心技术问题**:
1. **Temporal Validation Failure**:
1. **时间验证失败**:
- Accepts physiologically impossible birth dates (e.g., year 1500)
- 接受生理上不可能的出生日期(例如,年份1500)
- No upper bound validation for age calculations
- 年龄计算无上限验证
- Future issue/expiration dates pass validation
- 未来的签发/到期日期通过验证
2. **Header-Only Verification**:
2. **仅头部验证**:
- Validates AAMVA format compliance over content authenticity
- 验证AAMVA格式合规性而非内容真实性
- Missing cryptographic signature verification
- 缺少加密签名验证
- Static field validation without logical consistency checks
- 静态字段验证,无逻辑一致性检查
3. **Static IIN Acceptance**:
3. **静态IIN接受**:
- No real-time issuer database cross-checking
- 无实时发行方数据库交叉检查
- Accepts valid state IINs (e.g., 636014=CA) with synthetic data
- 接受有效州IIN(例如,636014=CA)与合成数据
- Missing verification against authoritative DMV records
- 缺少与权威DMV记录的验证
## CVE-2025-31336: TokenWorks ID Validation Vulnerability
## CVE-2025-31336: TokenWorks ID验证漏洞
### Affected Products
### 受影响产品
- **IDentiFake Plus** verification terminal
- **IDentiFake Plus** 验证终端
- **AgeVisor Series** age verification devices
- **AgeVisor系列** 年龄验证设备
- **IDVisor Sentry** security scanning systems
- **IDVisor Sentry** 安全扫描系统
- **All current versions** across product line
- **全线产品当前所有版本**
### Vulnerability Details
### 漏洞详情
**Root Cause**:
**根本原因**:
Improper validation of PDF417 barcode temporal data fields and subfile markers enables complete synthetic ID generation that bypasses TokenWorks validation systems.
对PDF417条码时间数据字段和子文件标记的不当验证使得完全合成身份证生成成为可能,从而绕过TokenWorks验证系统。
**Technical Exploitation Vectors**:
**技术利用向量**:
1. **Birth Date Field Manipulation**:
1. **出生日期字段篡改**:
- System accepts dates from 1400-2025 without validation
- 系统接受1400-2025年的日期而不验证
- No physiological boundary checking implemented
- 未实施生理边界检查
- Medieval dates (e.g., 1400s) pass as legitimate
- 中世纪日期(例如,1400年代)作为合法通过
2. **Subfile Offset Forgery**:
2. **子文件偏移伪造**:
- Forged ZC/ZF/ZG state-specific markers accepted
- 接受伪造的ZC/ZF/ZG特定州标记
- Calculated offsets bypass format validation
- 计算出的偏移绕过格式验证
- Missing cross-reference validation against known patterns
- 缺少针对已知模式的交叉引用验证
## Systemic Vulnerabilities in AAMVA ID Standards
## AAMVA身份证标准中的系统性漏洞
### Root Cause Analysis
### 根本原因分析
The vulnerabilities stem from fundamental gaps in the **AAMVA DL/ID-2020 Standard**:
这些漏洞源于 **AAMVA DL/ID-2020标准** 中的基本缺陷:
**Critical Standard Deficiencies**:
**关键标准缺陷**:
- **No cryptographic validation requirements**: Missing digital signature specifications
- **无加密验证要求**:缺少数字签名规范
- **Inadequate temporal range checks**: Section 4.3.2 lacks year validation requirements
- **时间范围检查不足**:第4.3.2节缺少年份验证要求
- **Format compliance prioritized over data authenticity**: Parsing correctness valued over content verification
- **格式合规优先于数据真实性**:解析正确性重于内容验证
### Affected Systems Matrix
### 受影响系统矩阵
| System Type | Examples | Impact Level | Validation Bypass |
| 系统类型 | 示例 | 影响等级 | 验证绕过方式 |
|----------------------|------------------------------|--------------|-------------------|
| Government ID Apps | Missouri ShowMeID v3.0.14 | **Critical** | Complete |
| 政府身份证应用 | Missouri ShowMeID v3.0.14 | **严重** | 完全绕过 |
| Enterprise Scanners | TokenWorks IDentiFake Plus | **High** | Temporal/Pattern |
| 企业扫描仪 | TokenWorks IDentiFake Plus | **高** | 时间/模式绕过 |
| Consumer Tools | Scannr iOS v4.2.1+ | **High** | Format-based |
| 消费者工具 | Scannr iOS v4.2.1+ | **高** | 基于格式绕过 |
| KYC Platforms | IDScan.net VSCloud | **Critical** | Authentication |
| KYC平台 | IDScan.net VSCloud | **严重** | 身份验证绕过 |
## Repository Structure
## 仓库结构```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 结构和特定州格式,完全合成的凭证即可通过验证。
技术问题:系统未能验证条码信息是否与发证机构的权威记录一致。
影响:可创建格式正确但个人身份信息完全虚构的凭证。
技术问题:通过计算技术上正确的偏移量值并结合合成数据,伪造凭证可绕过解析验证。
影响:高级攻击者能够生成既通过格式检查又通过基本一致性检查的凭证。
技术问题:系统接受生理学和逻辑上不可能的值(中世纪的出生日期、未来的签发日期)。
影响:证明验证工作流中完全缺乏基本合理性检查。
技术问题:高安全级别的文件(如商业驾照)同样易受相同利用技术的影响。
影响:通过潜在的危化品/运输凭证伪造,带来重大公共安全风险。
本研究包含对七个州的全面实现,展示了不同编码方案下的一致漏洞模式:
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
### Scanning Generated Barcodes
Generated barcodes will be saved as PNG files that can be presented to verification systems for testing:```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 Fingerprint**: `2EFA A479 1439 CF35 47A9 6680 1ECC 2986 AF90 3402`
## 研究方法与伦理
### 负责任披露策略
尽管供应商未予重视且 CISA 关闭了案例,本项研究仍坚持负责任披露原则:
1. **延长协调期**:120 天以上(超过标准 90 天期限)
2. **仅使用合成数据**:所有演示均使用明确标记的研究数据
3. **供应商参与**:广泛的技术讨论与解决方案提议
4. **公共安全导向**:重点在于防御改进而非利用漏洞
### 技术验证标准
所有发现均通过以下标准验证:
- **NIST SP 800-63B** 身份验证指南
- **NIST 网络安全框架 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 网络安全框架 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/PoC/LICENSE.md)。
**研究目标**:本项研究旨在提升身份验证生态系统的安全性。尽管协调过程中遇到重大挑战,技术发现仍然有效,需要行业关注以保护公共安全与国家利益。
**法律合规**:所有研究活动均遵守适用法律,包括《计算机欺诈与滥用法案》(CFAA)、《数字千年版权法案》(DMCA)以及相关州和联邦身份证件法规。未使用任何真实个人信息,所有演示均采用明确标记的合成研究数据。
**注意**:本项研究旨在提升身份验证生态系统的安全性。尽管协调过程中遇到挑战,技术发现仍然有效,需要行业关注以保护公共安全与国家利益。