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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
ツール/GitHubGitHub/rubbxalc/cve-2021-32675
脆弱性分析エクスプロイトペネトレーションテスト学習と教育レッドチーミング
GitHubrubbxalc/cve-2021-32675

CVE-2021-32675

CVE-2021-32675 の Redis における機能的 DoS エクスプロイト。過大なバルク文字列ヘッダーを利用してメモリ枯渇を引き起こします。使用方法と Docker ベースのテスト環境を含みます。

リポジトリを見る
15時間32分前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2021-32675 – Redis 事前割り当てサービス拒否(OOM)

このリポジトリには、Redis におけるサービス拒否(DoS)脆弱性である CVE-2021-32675 の実用的なエクスプロイトが含まれています。この欠陥により、認証されていないリモート攻撃者が、引数データを送信せずに過大なバルク文字列ヘッダーを送信することで、Redis サーバー上で大規模なメモリ事前割り当てを引き起こし、メモリ枯渇とサービス停止に至らせることができます。

説明

CVE-2021-32675 は、Redis のクエリバッファ処理における脆弱性です。RESP(REdis Serialization Protocol)プロトコルで受信コマンドを解析する際、Redis はバルク文字列引数の宣言された長さ($<length>\r\n)を読み取り、引数バイトを読み取る前に、ペイロードを受信するための SDS(Simple Dynamic String)バッファをメモリ内に即座に事前割り当てします。

この事前割り当ては引数ペイロードの受信前に行われるため、認証されていないクライアントは最大許容バルク文字列サイズ(デフォルトでは proto-max-bulk-len は 512 MB)を宣言し、実際のデータを送信せずに接続を無期限に開いたままにすることができます。Redis は各アクティブ接続に対して事前割り当てされたメモリを保持するため、約 32,000,000倍 の増幅率(約16バイトのネットワークトラフィックで512 MBのメモリ予約が発生)が生じます。

このヘッダーのみの手法を使用して複数の同時接続を開くと、利用可能なサーバーメモリが急速に枯渇し、以下の状態を引き起こします:

  • maxmemory ポリシーが有効な場合、強制的なキーの退避(エビクション)。
  • 後続の書き込み操作を拒否することによるサービス拒否(OOM command not allowed)。
  • オペレーティングシステムの OOM(Out-Of-Memory)キラーによるプロセス終了。

この脆弱性は、以下のバージョンより前の Redis に影響します:

  • 6.2.6
  • 6.0.16
  • 7.0(認証なし、またはデフォルトのバルク制限で実行されている場合)

認証なし(requirepass 未設定)またはデフォルトの (512 MB)で実行されている Redis インスタンスは、このエクスプロイトに対して脆弱です。パッチ適用済みバージョンでは、事前割り当てが行われる前に、認証されていないクライアントに対して厳格な16 KBのプロトコルバッファ制限が適用されます。

proto-max-bulk-len

インストール手順

  1. 仮想環境を作成する(任意ですが推奨):
root@kitploit:~
python3 -m venv .venv
source .venv/bin/activate
  1. 依存関係をインストールする:
root@kitploit:~
pip install -r requirements.txt

要件

  • Python 3.8+

    • colorama ライブラリ
    • redis ライブラリ
  • 脆弱な Redis インスタンス(6.2.6 / 6.0.16 より前のバージョン、または認証なしのインスタンス)

使用方法

root@kitploit:~
python3 exploit.py --host <IP> --port <PORT> [options]

オプション

オプション型デフォルト説明
--hoststr必須対象の Redis ホスト名または IP アドレス
--portint6379ポート番号
--connectionsint10開く悪意のある接続数
--sizeint512宣言するバルク文字列バッファサイズ(MB)
--holdint5クリーンアップ前に接続を開いたままにする秒数
--password, --authstrNoneRedis 認証用パスワード(必要な場合)

例

root@kitploit:~
python3 exploit.py --host 127.0.0.1 --port 6379 --connections 10 --size 512 --hold 5

ローカルテスト環境(任意)

同梱の Docker Compose 設定を使用して、ローカルテストラボを起動できます:

root@kitploit:~
# 脆弱な Redis(ポート 6380)と緩和済み Redis(ポート 6381)を起動
docker compose -f conf/docker-compose.yml up -d

# 脆弱なインスタンスに対してテスト
python3 exploit.py --host 127.0.0.1 --port 6380 --connections 10 --size 512

# 緩和済みインスタンスに対してテスト
python3 exploit.py --host 127.0.0.1 --port 6381 --password "L4bS3cur3!2024" --connections 10 --size 512

# コンテナを停止
docker compose -f conf/docker-compose.yml down

免責事項

この Proof of Concept は、教育、研究、およびセキュリティ検証の目的のみで提供されています。作者は、明示的な許可なくシステムに対する誤用、損害、または不正なテストについて一切の責任を負いません。

ツールをダウンロード