CVE-2024-50063 in Linux情報

要約

〜によって VulDB • 2026年05月21日

Linuxカーネルにおいて、以下の脆弱性が修正されました。

bpf: 異なるフックにアタッチされたプログラム間のテールコールを防止する

BPFプログラムはカーネル関数にアタッチ可能であり、アタッチされた関数は異なるパラメータを受け取ったり、異なる戻り値を返したりする場合があります。あるカーネル関数にアタッチされたプログラムが、別のカーネル関数にアタッチされたプログラムに対してテールコールを実行した場合、コンテキスト(ctx)へのアクセス検証や戻り値の検証を回避できる可能性があります。

例えば、1つのパラメータのみを受け取るfunc1にprog1がアタッチされ、2つのパラメータを受け取るfunc2にprog2がアタッチされているとします。ベリファイアは、prog2に渡されるBPFコンテキストがfunc2のプロトタイプに基づいて構築されると仮定するため、prog2がprog2に渡されたBPFコンテキストから2番目のパラメータにアクセスすることを許可します。問題は、ベリファイアがprog1がそのBPFコンテキストをテールコールを介してprog2に渡すことを防止していない点にあります。この場合、prog2に渡されるBPFコンテキストはfunc2ではなくfunc1から構築されるため、コンテキストアクセス検証の仮定が回避されます。

別の例として、BPF LSMプログラムprog1がフックfile_alloc_securityにアタッチされ、BPF LSMプログラムprog2がフックbpf_lsm_audit_rule_knownにアタッチされているとします。ベリファイアはこれらの2つのフックの戻り値ルールを知っており、例えばbpf_lsm_audit_rule_knownが正の数1を返すことは合法であり、file_alloc_securityが正の数を返すことは違法であるとします。したがって、ベリファイアはprog2が正の数1を返すことを許可しますが、prog1が正の数を返すことは許可しません。問題は、ベリファイアがprog1がテールコールを介してprog2を呼び出すことを防止していない点にあります。この場合、prog2の戻り値1がprog1のフックfile_alloc_securityの戻り値として使用されます。つまり、戻り値ルールが回避されます。

このパッチは、このような回避を防ぐためにテールコールに制限を追加します。

If you want to get best quality of vulnerability data, you may have to visit VulDB.

責任者

Linux

予約する

2024年10月21日

モデレーション

承諾済み

エントリ

VDB-281438

EPSS

0.00231

アクティビティ

非常低い

ソース

Do you want to use VulDB in your project?

Use the official API to access entries easily!