CVE-2013-4254
読み:スィーヴィーイー-にーゼロいちさん-よんにーごーよん
外語:CVE-2013-4254

 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」と題されている。

再検索