ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
Linuxカーネルに存在した脆弱性の一つ。validate_event権限昇格の脆弱性。
MITRE社の脆弱性情報データベースCommon Vulnerabilities and Exposures(CVE)に登録されている脆弱性の一つ。
これは、validate_eventの脆弱性により、ログイン可能な一般ユーザーがroot権限で任意のコードを実行することができたり、サービス拒否(NULLポインター参照やシステムクラッシュ)を引き起こすことが可能、という重大なセキュリティホールである。
Linux 3.10.8より前の arch/arm/kernel/perf_event.c では、ソフトウェアイベントの際にPMUをチェックしていない。
このため、偽のPMUを与えられた時、対応するPMUのないソフトウェアイベントとなり、結果として ->get_event_idx 関数ポインターをデリファレンスしようとした際にカーネルクラッシュが発生する。
validate_event()関数の2番目の引数struct perf_event *eventを、is_software_event()関数で確認するようにした。
static int validate_event(struct pmu_hw_events *hw_events, struct perf_event *event) { struct arm_pmu *armpmu = to_arm_pmu(event->pmu); struct hw_perf_event fake_event = event->hw; struct pmu *leader_pmu = event->group_leader->pmu; + if (is_software_event(event)) + return 1; + if (event->pmu != leader_pmu || event->state <= PERF_EVENT_STATE_OFF) return 1; return armpmu->get_event_idx(hw_events, &fake_event) >= 0; }
修正は「ARM: 7809/1: perf: fix event validation for software group leaders」と題されている。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます