支持本站 — 捐款将帮助我们持续运营

目标:1000 元,已筹:752

75.2%
一、 漏洞 CVE-2025-12758 基础信息
漏洞信息
                                        # N/A

## 概述

在 `validator` 包 13.15.22 版本之前的版本中,存在一个由于未完全过滤特殊元素(Unicode 变体选择符)引起的漏洞。

## 影响版本

- 受影响版本:`validator` < `13.15.22`

## 细节

- **漏洞函数**:`isLength()` 函数
- **主要问题**:未正确处理 Unicode 变体选择符(如 `\uFE0F`、`\uFE0E`)
- **结果**:导致在计算字符串长度时产生误差

## 影响

- 输入验证可能误判过长字符串
- 导致数据被截断(数据库中)
- 引发其他组件中缓冲区溢出
- 导致拒绝服务(DoS)
                                        
神龙判断

是否为 Web 类漏洞: 未知

判断理由:

N/A
提示
尽管我们采用了先进的大模型技术,但其输出仍可能包含不准确或过时的信息。
神龙会尽力确保数据准确,但也请结合实际情况进行甄别与判断。
神龙祝您一切顺利!
漏洞标题
N/A
来源:美国国家漏洞数据库 NVD
漏洞描述信息
Versions of the package validator before 13.15.22 are vulnerable to Incomplete Filtering of One or More Instances of Special Elements in the isLength() function that does not take into account Unicode variation selectors (\uFE0F, \uFE0E) appearing in a sequence which lead to improper string length calculation. This can lead to an application using isLength for input validation accepting strings significantly longer than intended, resulting in issues like data truncation in databases, buffer overflows in other system components, or denial-of-service.
来源:美国国家漏洞数据库 NVD
CVSS信息
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
来源:美国国家漏洞数据库 NVD
漏洞类别
对一个或多个特殊元素实例的过滤不完全
来源:美国国家漏洞数据库 NVD
漏洞标题
Validator.js 安全漏洞
来源:中国国家信息安全漏洞库 CNNVD
漏洞描述信息
Validator.js是validatorjs开源的一个字符串验证器 Validator.js 13.15.22之前版本存在安全漏洞,该漏洞源于isLength函数未考虑Unicode变体选择器,可能导致字符串长度计算不当。
来源:中国国家信息安全漏洞库 CNNVD
CVSS信息
N/A
来源:中国国家信息安全漏洞库 CNNVD
漏洞类别
其他
来源:中国国家信息安全漏洞库 CNNVD
二、漏洞 CVE-2025-12758 的公开POC
#POC 描述源链接神龙链接
1Nonehttps://github.com/dajneem23/CVE-2025-12758POC详情
三、漏洞 CVE-2025-12758 的情报信息
  • 标题: fix(isLength): correctly handle Unicode variation selectors by koral-- · Pull Request #2616 · validatorjs/validator.js · GitHub -- 🔗来源链接

    标签:

    神龙速读:
                                            ## 关键信息
    
    - **漏洞描述:**
      - 之前,验证器会从字符串的总长度中减去所有的Unicode变异选择器(\uFE0F, \uFE0E),这使得字符串可以通过最大长度验证,同时包含潜在无限数量的这些字符。例如,字符串“test\uFE0F\uFE0F\uFE0F...”可以绕过最大长度验证的检查。
      - 现在,只有直接跟在基础字符之后的变异选择器才会从长度中减去。如果它们出现在字符串的开头或序列中,它们将正确计算在总长度内。
    
    - **修复措施:**
      - 确保变异选择器只有直接跟在基础字符之后时才从长度中减去。
      - 编写测试以验证修复的有效性。
      - 重新放置`isLength`测试。
    
    - **代码审查和合并:**
      - 该修复已通过代码审查,并且Codecov报告显示所有修改和可覆盖的行都已被测试覆盖。
      - 该修复已被合并到`validatorjs:master`分支中。
                                            
    fix(isLength): correctly handle Unicode variation selectors by koral-- · Pull Request #2616 · validatorjs/validator.js · GitHub
  • 标题: Incomplete Filtering of One or More Instances of Special Elements in validator | CVE-2025-12758 | Snyk -- 🔗来源链接

    标签:

    神龙速读:
                                            ### 关键信息
    
    #### 漏洞信息
    - **漏洞名称**: Incomplete Filtering of One or More Instances of Special Elements
    - **受影响的包**: validator
    - **受影响版本**: <13.15.22
    - **修复方式**: 升级 validator 至 13.15.22 或更高版本
    
    #### 漏洞详情
    - **CVE编号**: CVE-2025-12758
    - **CWE编号**: CWE-792
    - **严重性**: 8.7 (高)
    - **漏洞简介**: 受影响的 `validator` 版本在 `isLength` 函数中存在对 Unicode 变体选择符(\uFE0F, \uFE0E)处理不当的问题,导致字符串长度计算不准确。这可能导致应用在输入验证时接受比预期长得多的字符串,从而引发数据截断、缓冲区溢出或拒绝服务等问题。
    
    #### 证明代码
    - **输入示例**: 
    ```javascript
    const validator = require('validator');
    console.log(`"test" (String.length: 4) length less than or equal to 3? ${(validator.isLength("test", { max: 3 }))}`);
    console.log(`"test" (String.length: 4) length less than or equal to 4? ${(validator.isLength("test", { max: 4 }))}`);
    console.log(`"test\uFE0F\uFE0F\uFE0F\uFE0F" (String length: 8) length less than or equal to 4? ${(validator.isLength("test\uFE0F\uFE0F\uFE0F\uFE0F", { max: 4 }))}`);
    ```
    - **输出示例**:
    ```
    "test" (String.length: 4) length less than or equal to 3? false
    "test" (String.length: 4) length less than or equal to 4? true
    "test\uFE0F\uFE0F\uFE0F\uFE0F" (String length: 8) length less than or equal to 4? true
    ```
    
    #### 其他信息
    - **Snyk ID**: SNYK-JS-VALIDATOR-13653476
    - **公开时间**: 2025-11-26
    - **披露时间**: 2025-10-18
    - **报告人**: Karol Wrótniak
                                            
    Incomplete Filtering of One or More Instances of Special Elements in validator | CVE-2025-12758 | Snyk
  • 标题: JS validator isLength bug · GitHub -- 🔗来源链接

    标签:

    神龙速读:
                                            ### 漏洞关键信息
    
    - **漏洞类型**: 输入验证漏洞
    - **影响版本**: `validator`库的版本`^13.15.15`
    - **漏洞描述**: 
      - 问题在于`isLength`函数在处理包含Unicode变体选择符(`\uFE0F`, `\uFE0E`)的字符串时,无法正确计算字符串长度。
      - 按照Unicode标准,当变体选择符是组合字符的一部分时,应该被视为零宽字符,但在该函数中未能准确处理。
      - 利用此漏洞,攻击者可以通过在字符串中嵌入大量变体选择符来绕过最大长度限制。
    
    - **示例代码**: 在`index.js`中,展示了正常情况下和包含变体选择符时的字符串长度对比,以及`isLength`函数的校验结果。
    
    - **测试结果**:
      - 对于正常字符串"test"(长度4),校验其长度小于等于3时返回false,小于等于4时返回true。
      - 对于包含变体选择符的字符串"`test\uFE0F\uFE0F\uFE0F\uFE0F`"(长度8),校验其长度小于等于4时返回true,表明校验结果不正确。
    
    - **影响**: 此漏洞可能导致输入验证失效,使得输入的长度限制条件形同虚设,从而可能引发更严重的安全问题。
                                            
    JS validator isLength bug · GitHub
  • https://nvd.nist.gov/vuln/detail/CVE-2025-12758
四、漏洞 CVE-2025-12758 的评论

暂无评论


发表评论