CVE-2013-4254
読み:スィーヴィーイー-にーゼロいちさん-よんにーごーよん
外語:CVE-2013-4254
Linuxカーネルに存在した脆弱性の一つ。validate_event権限昇格の脆弱性。
概要
MITRE社の脆弱性情報データベースCommon Vulnerabilities and Exposures(CVE)に登録されている脆弱性の一つ。
これは、validate_eventの脆弱性により、ログイン可能な一般ユーザーがroot権限で任意のコードを実行することができたり、サービス拒否(NULLポインター参照やシステムクラッシュ)を引き起こすことが可能、という重大なセキュリティホールである。
- 影響: Linux Kernel ?.? ‐ 3.10.7
- 他の符号
特徴
問題
原因
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」と題されている。
再検索