概要

弊社メンバーがLinuxカーネル(7.1-rc2)で、Dirty Fragファミリの新しい権限昇格バリアントを発見しました。net/rxrpc/rxgk_common.h内のrxgk_decrypt_skb()は、skb_to_sgvec()によりskbのpaged fragを直接スキャッタリスト化し、AEAD復号(AES-256-CTS-HMAC-SHA1-96)をin-placeで実行します。splice()/MSG_SPLICE_PAGES経由でplantedされたページキャッシュページが復号バッファとして書き戻されるため、/etc/passwd等の改竄により非特権ユーザからroot権限を取得できます。

crypto/krb5enc.cはdecrypt-then-MACの順序であり、HMAC検証が失敗した時点でページキャッシュは既に破壊されています。攻撃者はCBC bit-flipとCTS-3 swapを組み合わせ、自前のRxGKセッションキーで任意の制御された平文を書き込めます。fcryptの鍵総当たりが必要なRxKADバリアントとは異なり、ブルートフォースを必要としません。

非特権ユーザからroot権限取得までの実行ログ
非特権ユーザからroot権限取得までの実行ログ

CVE-2026-43500との関係

本脆弱性は、Hyunwoo Kim氏(@v4bel)により公表されたDirty Fragファミリ(CVE-2026-43500)のRxGKバリアントに該当します。V4bel氏のwriteupではRxKADセキュリティクラス(pcbc(fcrypt))での実証が公開されていましたが、弊社メンバーはRxGKセキュリティクラス(AES-256-CTS-HMAC-SHA1-96)について独立にPoCを構築しました。

弊社からは[email protected]に独立報告を行い、Linux kernel CNAより「dispatch levelの修正により両variantがカバーされるためCVE-2026-43500に統合する」との判定をいただいています。本記事は修正パッチがmainlineに取り込まれた後のtechnical writeupであり、0-dayの公開ではありません。

パッチ適用と継続的な変種調査

Dirty Fragのような脆弱性ファミリでは、最初の修正が公開された後にも別バリアントが見つかることが珍しくありません。利用者の皆様には、ベンダから提供されるカーネル更新を遅滞なく適用していただくことを強く推奨します。修正の遅れは攻撃者にとっての猶予となります。

弊社は、こうした既知ファミリに対して、まだ公に発見されていない0-dayバリアントを能動的に探索・特定し、お客様の環境に対して適切な修正の実装までを一貫してご提供します。ご関心のある方はお問い合わせください。