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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-32023 — CVE-2025-32023 用 PoC & Exploit / PlaidCTF 2025 "Zerodeo" | Kitploit
ツール/GitHubGitHub/leesh3288/cve-2025-32023
メモリフォレンジック脆弱性分析エクスプロイトリバースエンジニアリングCTFペイロード開発バイナリエクスプロイト
GitHubleesh3288/cve-2025-32023

CVE-2025-32023

CVE-2025-32023 用 PoC & Exploit / PlaidCTF 2025 "Zerodeo"

リポジトリを見る
2164011年前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-32023

CVE-2025-32023 の PoC & Exploit(GHSA-rp2m-q4j6-gr43)/ PlaidCTF 2025 "Zerodeo"

Repro / Patch

redis:7.4.2-alpine3.21@sha256:02419de7eddf55aa5bcf49efb74e88fa8d931b4d77c07eff8a6b2144472b6952 に対してテスト済み

影響を受ける Redis バージョン: 2.8 以上。8.0.3、7.4.5、7.2.10、6.2.19 でパッチ適用済み。redis/redis@5018874 を参照。

Bug

Redis の HyperLogLog は、独自のカスタムエンコーディングを持つ単なる文字列にすぎません。スパース HLL エンコーディングを反復処理するには、各スパース表現のラン長を合計する必要がありますが、不正な HLL に対して操作すると、int i でカウントされる合計長が負の値にオーバーフローする可能性があります。これにより、攻撃者は HLL 構造上の負のオフセットへ上書きでき、HLL 構造の由来に応じてスタック/ヒープ上の境界外書き込みが発生します(例: hllMerge() はスタック割り当ての構造体を受け取り、hllSparseToDense() はヒープ割り当ての構造体を受け取ります)。

パッチの抜粋は次のとおりです:

root@kitploit:~
 int hllMerge(uint8_t *max, robj *hll) {
     struct hllhdr *hdr = hll->ptr;
     int i;

     if (hdr->encoding == HLL_DENSE) {
         hllMergeDense(max, hdr->registers);
      } else {
         uint8_t *p = hll->ptr, *end = p + sdslen(hll->ptr);
         long runlen, regval;
+        int valid = 1;
 
         p += HLL_HDR_SIZE;
         i = 0;
         while(p < end) {
             if (HLL_SPARSE_IS_ZERO(p)) {
                 runlen = HLL_SPARSE_ZERO_LEN(p);
+                if ((runlen + i) > HLL_REGISTERS) { /* Overflow. */
+                    valid = 0;
+                    break;
+                }
                 i += runlen;
                 p++;
             } else if (HLL_SPARSE_IS_XZERO(p)) {
                 runlen = HLL_SPARSE_XZERO_LEN(p);
+                if ((runlen + i) > HLL_REGISTERS) { /* Overflow. */
+                    valid = 0;
+                    break;
+                }
                 i += runlen;
                 p += 2;
             } else {
                 runlen = HLL_SPARSE_VAL_LEN(p);
                 regval = HLL_SPARSE_VAL_VALUE(p);
-                if ((runlen + i) > HLL_REGISTERS) break; /* Overflow. */
+                if ((runlen + i) > HLL_REGISTERS) { /* Overflow. */
+                    valid = 0;
+                    break;
+                }
                 while(runlen--) {
                     if (regval > max[i]) max[i] = regval;
                     i++;
                }
                 p++;
             }
         }
-        if (i != HLL_REGISTERS) return C_ERR;
+        if (!valid || i != HLL_REGISTERS) return C_ERR;
     }
     return C_OK;
 }

Exploit

エクスプロイトは標準的な Redis pwnables です:

  1. jemalloc ヒープ上の sds オブジェクトを破壊して、その長さを巨大化する
  2. embstr オブジェクトをスプレーして偽のモジュールオブジェクトに破壊する
  3. 破壊した sds オブジェクトを使ってヒープをダンプし、ターゲットの embstr オブジェクトを見つけてアドレスをリークする
  4. ターゲットの embstr オブジェクト上に偽のモジュールオブジェクトを作成する
  5. 偽のモジュールオブジェクトを削除してデストラクタを発火させ、RCE を得る
ツールをダウンロード