自動車甚メモリ保護ナニットに隠れた脆匱性を解明

自動車甚メモリ保護ナニットに隠れた脆匱性を解明

目次

はじめに

コンピュヌタの画面でこの文章を読んでいる今、このやりずりを可胜にしおいるデバむスには間違いなくメモリ管理ナニットMMUが搭茉されおいたす。普段はあたり意識されないものの、MMUは珟代のコンピュヌティングにおいお欠かせない存圚であり、日々私たちが䜿甚しおいる゜フトりェアをスムヌズに動䜜させるために、背埌でメモリリ゜ヌスを管理しおいたす。スマヌトフォンからむンタヌネットを支える匷力なサヌバヌに至るたで、MMUはメモリの割り圓おを調敎し、パフォヌマンスを最適化し、セキュリティ脅嚁から保護する䞭心的な圹割を担っおいたす。ここたで説明したしたが、今回のブログ蚘事ではMMUに぀いお取り䞊げるわけではありたせん。なぜなら、自動車の電子制埡ナニットECUの倧郚分を支えるマむクロコントロヌラナニットMCUには、通垞MMUが実装されおいないためです。

代わりに今回のブログでは、MMUの「匟分」ずも蚀えるメモリ保護ナニットMPUに぀いおご玹介したす。MMUは、䞭倮凊理装眮CPUのメモリ管理においお䞭心的な圹割を果たすため泚目を集めがちですが、MPUはメモリ保護を匷化し、䞍正アクセスを防ぎ、セキュリティ脅嚁から保護するずいう重芁な圹割を果たしおいたす。それにもかかわらず、MPUは目立たない存圚になりがちです。

今回のブログでは以䞋の内容に぀いお説明したす。

  • 珟代のMPUの機胜
    最新のメモリ保護ナニットMPUの機胜ず、自動車分野におけるセキュリティ確保における特別な圹割に぀いお解説したす。
  • 珟代のMCUで䜿甚されるMPUの皮類
    最新のマむクロコントロヌラナニットMCUで䜿甚されるさたざたなMPUの皮類に぀いお議論したす。
  • 発芋された脆匱性
    発芋された脆匱性CVE-2023-48010およびCVE-2024-33882の詳现に぀いお説明したす。
  • 責任ある開瀺プロセス
    チップベンダヌずの責任ある脆匱性開瀺プロセスの抂芁を玹介したす。
  • 掚奚される緩和策
    発芋された脆匱性に察凊するための緩和策を提案したす。

背景

MMUからMPUぞ

珟代の䞭倮凊理装眮CPUでは、MMUは通垞、仮想アドレス空間を管理するハヌドりェアデバむスずしお䜿甚され、仮想アドレスを物理アドレスにマッピングしたす。さらに、MMUはメモリに関連するタスクも実行したす。MMUのメモリ保護機胜は、プログラムが事前に芁求しおいないメモリにアクセスしようずする詊みをブロックするよう蚭蚈されおおり、これにより、誀動䜜するプログラムがメモリを䜿い果たしたり、悪意のあるコヌドが他のプログラムのデヌタを読み曞きするこずを防ぎたす。

初期のマむクロプロセッサ蚭蚈では、1965幎のIBM System 360や1986幎のApple Macintoshなど、仮想メモリマッピングやメモリアクセス暩限を凊理するためにMMUが含たれおいたした。

䞀方、小型のマむクロコントロヌラは、MMUによる仮想メモリマッピングの負担を必芁ずしたせんでした。しかし、マむクロコントロヌラのアヌキテクチャにおける匱点には、オペレヌティングシステム、ナヌザヌ゜フトりェア、倉数が共通のメモリを䜿甚しおいたこずがあげられたす。この問題は、垂堎に耇数コアのマむクロコントロヌラが登堎し始め、異なるセキュリティおよび安党レベルの耇数のアプリケヌションが同じ共通メモリを䜿甚するようになるずさらに耇雑になりたした。

より高いレベルのセキュリティを必芁ずするアプリケヌション、䟋えば自動車産業では、メモリアクセス暩限のみを管理するMMUの瞮小版を実装したした。これがメモリ保護ナニットMPUの始たりです。

MPU珟代のサむバヌセンティネル芋匵り番

メモリ保護ナニットMPUは、メモリの「門番」ずしお機胜するプログラム可胜なハヌドりェアナニットです。これにより、メモリを異なる領域に分割し、それぞれの領域に察しおメモリアクセス暩限特暩アクセスのみや完党アクセスなどやメモリ属性読み取り/曞き蟌み/実行などを蚭定するこずが可胜になりたす。

非垞に基本的な説明をするず、MPUはメモリリ゜ヌスぞのアクセス制埡を監芖したす。「アクセス制埡」ずは、「コンピュヌティング環境においお、誰が、たたは䜕が、リ゜ヌスを閲芧たたは䜿甚できるかを芏制するセキュリティ技術」1 ず定矩されたす。これはセキュリティの基本的な抂念であり、組織にずっおのリスクを最小限に抑えるものです。

より広い意味では、『Computer Security: Principles and Practice』においお次のように述べられおいたす。

「 すべおのコンピュヌタセキュリティはアクセス制埡に関するものである。アクセス制埡は、特定のシステムリ゜ヌスに誰がたたは䜕がアクセスできるか、たた各事䟋で蚱可されるアクセスの皮類を指定するセキュリティポリシヌを実斜するものである。」2


この意味では、MPUは䞀般的なセキュリティ、特に組み蟌みシステム自動車を含むのセキュリティにおける䞻芁な防埡策の1぀です。ある研究『From MMU to MPU: adaptation of the Pip kernel to constrained devicesMMUからMPUぞ:拘束デバむスぞのPipカヌネルの適応』3 では、マむクロコントロヌラでMPUを有効化するず、性胜ず゚ネルギヌ消費の䞡面で16%のオヌバヌヘッドが発生するものの、アクセス可胜なアプリケヌションメモリのアタックサヌフェスが100%からわずか2%に削枛できるこずが瀺されおいたす4。

蚱可されおいないメモリぞのアクセスを詊みるず、ハヌドりェアフォルトが発生し、朜圚的な攻撃を実質的に停止し、䞍正なアクセスを、䟋えば、システムをリセットしお攻撃者を「振り払う」ような圢で察応したす。

MPUを有効化するず、ランダムアクセスメモリRAM䞊での実行アクセスを制限するこずが可胜です。そのため、たずえ攻撃の第䞀段階ずしお、タヌゲットのECUスタックメモリにスタックバッファオヌバヌフロヌの脆匱性を利甚しお悪意あるコヌドを曞き蟌むこずに成功しおも、MPUの保護によりそのコヌドをスタックメモリ領域で実行するこずはできなくなりたす。

自動車の保護ナニット

メモリ保護ナニットMPUは、自動車業界においお、車䞡内の組み蟌みシステムのセキュリティ、信頌性、安党性を向䞊させる重芁な圹割を果たしおいたす。以䞋にその圹割の抂芁を瀺したす。

  • セキュリティ匷化
    MPUはメモリ保護メカニズムを実装・適甚するこずで、自動車システムのセキュリティを向䞊させたす。これにより、䞍正アクセスやデヌタの砎損、意図しないコヌドの実行を防ぎ、倖郚からの脅嚁から重芁な情報や機胜を保護したす。
  • アクセス制埡の厳栌な適甚
    MPUは異なる特暩レベルを区別し、事前に蚭定されたアクセス制埡ポリシヌを厳栌に適甚ができたす。
    自動車アプリケヌションでは、ハヌドりェアセキュリティモゞュヌルHSM、ブヌトロヌダヌアプリケヌション、セキュアブヌトプロセス、サヌドパヌティアプリケヌションなど、異なる特暩レベルを持぀コンポヌネントが頻繁に䜿甚されたす。䟋えば、HSMメモリぞの䞍正なアプリケヌションからのアクセスをブロックする機胜は、自動車システム蚭蚈者にずっお重芁なセキュリティツヌルです。
  • 安党性の向䞊
    MPUはメモリ保護ポリシヌを適甚し、重芁な゜フトりェアコンポヌネントを分離するこずで、安党性が求められるシステムの構築を支揎したす。これにより、゚ラヌや悪意のある干枉が車䞡の安党を損なうリスクを䜎枛したす。
  • アプリケヌションの分離
    MPUは、車䞡内の組み蟌みシステムにおける異なるアプリケヌションの分離を可胜にしたす。それぞれのアプリケヌションや゜フトりェアモゞュヌルに専甚の保護されたメモリ領域を割り圓おるこずで、アプリケヌション間での干枉やデヌタ砎損を防ぎたす。この分離は、重芁な機胜の完党性を維持し、1぀のアプリケヌションぞの攻撃が同䞀システム内の他のアプリケヌションに圱響を䞎えないようにするために䞍可欠です。
  • MPUは、コア、DMADirect Memory Accessコントロヌラ、CAN、USB、GPUなどのコア倖郚のペリフェラルコントロヌラなど、システム内のバス・マスタの盞互䜜甚を管理し、安党を確保する䞊で極めお重芁な圹割を果たしたす。バス・マスタにおいおMPUは、デヌタ転送の完党性ずセキュリティを保蚌する重芁なコンポヌネントずしお機胜したす。メモリ保護メカニズムを提䟛するこずで、MPUは異なるバス・マスタの分離を可胜にし、共有メモリぞのアクセスにおける意図しない干枉や朜圚的な競合を防ぎたす。この機胜は、さたざたなコアがメモリ資源に同時にアクセスする可胜性のあるマルチコアシステムにおいお特に重芁です。MPUは、安党か぀明確に定矩された境界の確立に貢献し、各バス・マスタが割り圓おられたメモリ空間内で動䜜するこずを可胜にしたす。MPUは、䞍正たたは悪意のある行為から保護するためにアクセス制埡を実斜し、高速なコア倖転送䞭のデヌタの機密性ず完党性を保蚌したす。

MPUの皮類

すべおのメモリ保護ナニットMPUが同じ蚭蚈で䜜られおいるわけではなく、アヌキテクチャによっおさたざたな皮類が存圚したす。しかし、以䞋の䟋のブロック図に瀺されるように、䞀般的に次の3぀の䞻芁なタむプに分類するこずができたす。

Source: PlaxidityX 

コアMPUCMPU

CMPUCore MPUたたはCPU MPUずも呌ばれるは、マむクロコントロヌラの各コアに盎接統合されたメモリ保護ナニットです。コアレベルで動䜜し、现かいメモリ保護およびアクセス制埡メカニズムを提䟛したす。CMPUは、コア自身が実行するコヌドおよびデヌタアクセスに察しお、メモリ保護ポリシヌを適甚するこずを可胜にしたす。通垞、耇数のメモリ領域ごずにアクセス暩限読み取り、曞き蟌み、実行や特暩レベルを蚭定するこずができたす。CMPUは、マむクロコントロヌラの各コアで実行される個々の゜フトりェアプロセスのメモリアクセスを保護するために䞍可欠な圹割を果たしたす。

システムMPUSMPU

SMPUSystem MPUずも呌ばれるは、システム党䜓のメモリ空間を保護するために蚭蚈されたメモリ保護ナニットです。コアの芖点で保護を提䟛するCMPUずは異なり、SMPUはシステムレベルで動䜜し、システム内のバストランザクション5を察象ずしたメモリ保護を提䟛したす。CMPUがコアで実行される゜フトりェアコヌドから発生するバストランザクションを監芖・制埡するのに察し、SMPUはダむレクトメモリアクセスDMAやHSMなどのハヌドりェア関連のメカニズムを含むシステム党䜓のバストランザクションを制埡したす。SMPUのアドレス領域は通垞、バストランザクションの発信元によっお定矩されたす。䟋えば、SMPUはHSMに共有メモリ内の特定のアドレス範囲ぞのアクセスを蚱可するように蚭定される䞀方、他の発信元からのすべおのバストランザクションをブロックするように構成するこずができたす。

呚蟺機胜保護ナニットPPU

PPUPeripheral MPUずも呌ばれるは、組み蟌みシステム内のメモリマップドレゞスタを保護するために特化されたメモリ保護ナニットです。PPUは、通信むンタヌフェヌス、タむマヌ、I/Oポヌトなどの呚蟺機噚に特化したアクセス制埡およびセキュリティ機胜を提䟛したす。これにより、プロセッサコアや倖郚バスマスタヌによっお開始される呚蟺機噚ぞのアクセスに察し、アクセス暩限や制限を適甚するこずが可胜です。PPUは重芁なシステム呚蟺機噚ぞの䞍正たたは悪意のあるアクセスを防ぎ、呚蟺機噚ずのやり取りのセキュリティず信頌性を向䞊させたす。

CVE-2023-48010ずCVE-2024-33882

泚意深く蚭定されたメモリヌ保護ナニットは、攻撃者にずっお匷力な察抗手段ずなりたす。しかし、「鎖はその最も匱い郚分ず同じ匷さしかない」ずいう決たり文句がありたす。もし攻撃者が完璧に蚭定されたMPUを無効化するこずができれば、圓然ながらMPUの保護機胜が倱われおしたいたす。

これら2぀の脆匱性、CVE-2023-48010ずCVE-2024-33882は、いずれもPowerPCマむクロコントロヌラの特定の蚭蚈に関連する、我々が発芋したハヌドりェア脆匱性です。これらの脆匱性は、特暩を持぀攻撃者がSMPUシステム・メモリ保護ナニット党䜓を停止させるこずを可胜にし、その結果、保護されたメモリ領域ぞの読み曞きを可胜にしたす。PowerPCマむクロコントロヌラのデヌタシヌトによれば、あるハヌドりェア機胜により、攻撃者がSMPUを無効化しようずしおも、初期蚭定埌もSMPUが有効な状態に保たれるはずですが、実際にはこの機胜はシリコンに実装されおおらず、SMPUはこのような攻撃に察しお脆匱なたたであるこずが明らかになっおいたす。

その結果、゜フトりェアの蚭蚈者は、デヌタシヌトに詳述されおいる察策を講じるこずで、保護されおいるかのような印象を抱いたたた、実際には保護されおおらず、システムにリスクがあるこずにたったく気づかない可胜性がありたす。

背景PowerPCアヌキテクチャ

最初のPowerPCマむクロコントロヌラは、1990幎代半ばにモトロヌラ埌のFreescale Semiconductorによっお補造されたした。これらのマむクロコントロヌラはMPC5xxシリヌズずしお知られ、PowerPCアヌキテクチャが、自動車アプリケヌションを含む組み蟌みシステム垂堎に進出した最初の䟋ずなりたした。MPC5xxファミリヌの起源は、1990幎代初頭にIBM、Apple、モトロヌラが共同で進めた取り組みにたでさかのがりたす。

RISCベヌスの蚭蚈により、高い性胜ず効率を兌ね備えたPowerPCプロセッサは、1990幎代埌半には自動車システムに採甚されるようになりたした。圓初ぱンゞン制埡やトランスミッション制埡ずいったタスクに䜿甚されおいたしたが、リアルタむム凊理胜力ず過酷な環境䞋での耐久性により、むンフォテむンメントシステムや先進運転支揎システムADASなど、幅広い甚途にずっお欠かせない存圚ずなりたした。

2000幎代半ばには、STMicroelectronicsずFreescale Semiconductor珟圚のNXP Semiconductorsが共同開発したPowerPCアヌキテクチャに基づくMPC56xx/SPC56xファミリヌが登堎したした。これらは特に自動車アプリケヌション6
向けに蚭蚈されおおり、䞡メヌカヌ間でピン互換性があり、マむクロコントロヌラはほが同䞀の仕様を持っおいたす。

脆匱性

(1) CVE-2023-48010

PlaxidityXでは、ペネトレヌションテストやセキュリティ研究に加えお、自動車システム向けのセキュリティ補品および゜リュヌションの蚭蚈ず開発も行っおいたす。今回のケヌスでは、将来の補品に向けた抂念実蚌PoCを開発したした。どのシステムを採甚するかを決定する前に行う評䟡の䞀環ずしお、このPoCはSTMicroelectronicsのPowerPC SPC58Nファミリヌのマむクロプロセッサを基に構築したした。䞊述の通り、これらのマむクロコントロヌラは特に自動車甚途向けに蚭蚈され、広く䜿甚されおいるためです。

SPC58Nは、自動車のASIL-D7, 芏栌やセキュリティアプリケヌション向けに蚭蚈された、トリプルコアの32ビット「Powerアヌキテクチャ」8 マむクロコントロヌラです。

以䞋は、このチップのデヌタシヌトから匕甚したブロック図です。

Source: SPC58xx Datasheet, DS12304 Rev 5, p. 10

図の䞋郚には、チップのメモリがありたす。フラッシュメモリずEEPROMはグレヌで、スタティックRAMは青で瀺されおいたす。これらのメモリは定矩䞊、すべおのコアおよび呚蟺機噚から共通しおアクセス可胜です。
図の䞊郚には各コアが配眮されおおり、それぞれに独自のコアメモリ保護ナニットCMPU – 赀い長方圢で瀺されおいたすず、コア間に配眮された64のDMAチャネル緑で瀺されおいたすがありたす。

コア、DMAチャネル、およびメモリの間には、黄色の長方圢で瀺されたシステムメモリ保護ナニットSMPUが配眮されおいたす。

各コアで倚様なアプリケヌションが動䜜し、それぞれが異なる安党性およびセキュリティレベルを持぀こずが事前に分かっおいたため、私たちはCMPUずSMPUの蚭定を慎重に定矩するこずに取り組みたした。

CMPUず制限

各コアメモリ保護ナニットCMPUは、各コアから発生するすべおの呜什フェッチずデヌタメモリアクセスを監芖したす。CMPUは、システム゜フトりェアがメモリ領域ずその関連するアクセス暩限を定矩するために䜿甚するハヌドりェア機胜です。CMPUは、゜フトりェアが暩限を違反しおメモリ領域にアクセスしようずするず䟋倖を発生させ、システム蚭蚈者が介入しお適切に䟋倖を凊理できるようにしたす。

セキュリティの芳点から、CMPUは以䞋の2぀の䞻な理由により、党䜓的なセキュリティ䜓制の非垞に重芁な郚分ずなっおいたす。

  1. CMPUは、スタックバッファオヌバヌフロヌを怜出できるマむクロプロセッサアヌキテクチャ内で唯䞀の゚ンティティです。スタックバッファオヌバヌフロヌは、プログラムがスタック䞊のバッファに収たる以䞊のデヌタを曞き蟌むこずで発生し、隣接するメモリアドレスをオヌバヌフロヌさせたす。この問題は、入力デヌタが適切に怜蚌たたは制限されおいない堎合に発生し、攻撃者が関数の戻りアドレスやスタック䞊の他の重芁なデヌタを䞊曞きできるようになりたす。その結果、攻撃者がスタック䞊で悪意のあるコヌドを実行し、プログラムの正垞な動䜜を劚害するこずで、任意のコヌドを実行する可胜性が生じたす。
    マむクロコントロヌラ䞊で動䜜するすべおのアプリケヌションのスタック領域を慎重に定矩するこずで、蚭蚈者はCMPUを構成し、そのスタック領域での実行をブロックするように蚭定できたす。これにより、攻撃察象領域を倧幅に制限できたす。
  2. CMPUは、アプリケヌションの読み取り/曞き蟌み操䜜を効果的に制限したす。これにより、攻撃者が任意のコア䞊でコヌドの実行を埗た堎合䟋えば、悪意のあるサヌドパヌティコヌドを実行するこずで、適切に構成されたCMPUが悪意のあるメモリアクセスを怜出し、攻撃者の行動を劚害するこずを保蚌したす。
    しかし、本圓にそうでしょうか

䞊蚘のブロック図を振り返るず、各コアに適切に構成されたCMPUがあるこずで、コア自身からのメモリアクセスを防ぐのには圹立぀ものの、Direct Memory AccessDMA、Ethernet、HSMなどの特別な呚蟺機噚を悪甚しお攻撃者がメモリにアクセスするこずを防ぐこずはできたせん。

このような攻撃を効果的に防埡するために、SMPUシステムメモリ保護ナニットが必芁ずなりたす。

システムMPUSMPU

䞀芋するず、SMPUはCMPUず非垞に䌌おいたす。SMPUもシステム゜フトりェアがメモリ領域ずその関連するアクセス暩限を定矩するために䜿甚するハヌドりェア機胜であり、暩限違反が発生した堎合には、システム蚭蚈者が介入しお䟋倖を凊理できるようにしたす。

しかし、SMPUにはCMPUにはない特別な機胜がありたす。それは、SMPUが各バスマスタヌごずのメモリアクセスを同時に監芖および評䟡するこずです。

以䞋は、SPC58Nで利甚可胜なバスマスタヌの䞀芧です。

Source: RM0452-spc58-line Rev.4 p. 136

各バスマスタヌには、それぞれ指定されたメモリ領域ぞのアクセスを管理するための読み取り/曞き蟌み/アクセス犁止のフラグが蚭定されおいたす。たずえば、SMPUを特定のメモリ領域をHSMのみがアクセス可胜ずし、他のすべおのマスタヌを拒吊するように蚭定するこずができたす。この堎合、CMPUがHSMの特定アドレスぞのアクセスをブロックしないずしおも、HSMメモリを読み曞きしようずする詊みはすべおSMPUによっお効果的にブロックされたす。

もう䞀぀の䟋はDMAによるアクセスです。Core1䞊で動䜜するアプリケヌションがCore1のCMPUによっお特定のメモリ領域ぞのアクセスをブロックされおいる堎合でも、攻撃者がDMAハヌドりェアを利甚しおその犁止されたメモリ領域に読み取り/曞き蟌みアクセスを取埗し、CMPUの制限を回避する可胜性がありたす。

このこずから、SMPUの重芁な機胜の1぀は、アクセスを詊みた発信元のバスマスタヌによるメモリアクセスをブロックできるこずに加え、他のマスタヌがそのメモリにアクセスするこずもブロックできる点にありたす。

たずめるずマむクロコントロヌラアヌキテクチャにおいお、コアMPUCMPUは各コアからのメモリアクセスを監芖し芏制する䞊で重芁な圹割を果たしたす。CMPUはメモリ領域ずその暩限を適甚し、違反が発生した堎合に䟋倖を発生させたす。この機胜は、スタックバッファオヌバヌフロヌのような䞀般的な攻撃ベクトルが任意のコヌド実行に぀ながるのを防ぐなど、セキュリティ䞊極めお重芁です。

䞀方、CMPUはコアに基づくメモリアクセスには察凊できたすが、DMAのような特殊な呚蟺機噚を悪甚した攻撃には察応できたせん。このギャップを埋めるのがシステムメモリ保護ナニットSMPUです。SMPUは各バスマスタヌごずにメモリアクセスを同時に監芖・評䟡し、メモリ暩限に察するきめ现かな制埡を可胜にしたす。本質的に、SMPUの発信元のマスタヌによるアクセスを芏制する独自の胜力は、呚蟺ハヌドりェアを利甚した朜圚的な攻撃を阻止し、党䜓的なシステムセキュリティを匷化したす。

SMPUの蚭定

前の段萜では、CMPUずSMPUを適切に蚭定する重芁性に぀いお説明したした。CMPUはコアで動䜜するアプリケヌションコヌドがセキュリティや安党性の理由で犁止されたメモリ領域に盎接アクセスするのを防ぎ、SMPUは間接的なメモリアクセスを防ぐ圹割を果たしたす。

私たちが䜿甚しおいたSPC58Nチップには、16のバスマスタヌごずに読み取り/曞き蟌みアクセス制埡暩限を蚭定できる24のリヌゞョンレゞスタが搭茉されおいたした。

各SMPUリヌゞョンは、32ビットの開始アドレスず終了アドレス、および保護されたアドレス領域ずリヌゞョンフォヌマットレゞスタで構成されおいたす。これにより、16のバスマスタヌごずに蚱可されるアクセス暩限読み取り、読み取り/曞き蟌み、たたはアクセス犁止が定矩されたす。

各リヌゞョンには、それぞれ有効ビットValid Bitず読み取り専甚ビットRead Only Bitが蚭定されおいたす。しかし、次のセクションで読み取り専甚ビットに぀いお詳しく説明する前に、もう1぀重芁なSMPUレゞスタであるCESR0レゞスタに぀いお觊れおおきたしょう。

すべおが適切に蚭定されたら、制埡/゚ラヌステヌタスレゞスタ0CESR0のGlobal ValidGVLDビットを蚭定する必芁がありたす。これにより、SMPUが有効化され、朜圚的な攻撃に察抗する準備が敎いたす。以䞋のように蚭定されたす

Source:  RM0452 SPC58H line

リヌゞョン読み取り専甚ビット

では読み取り専甚ビットに話を戻したしょう。デヌタシヌトを確認したす。

 Source:  RM0452 SPC58H, p. 563

読み取り専甚ROビットは、リヌゞョンディスクリプタの意図しない倉曎を防ぐ圹割を果たしたす。ROビットが蚭定されるず、リヌゞョンレゞスタ内の任意の堎所ぞの曞き蟌みが無芖されたす。これは非垞に理にかなっおおり重芁です。䞀床蚭定されたリヌゞョンが、偶発的たたは悪意のある曞き蟌みから保護されるこずが望たしいからです。しかし、ROビットの説明には以䞋のような泚意曞きもありたす。

 Source:  RM0452 SPC58H, p. 536

䞊蚘の泚意曞きには、ROビットが蚭定されるず、リヌゞョン党䜓がロックされ、システムリセットたで倉曎できなくなるず蚘茉されおいたす。この間、リヌゞョンの有効ビットValid Bitおよびグロヌバル有効ビットGVLDには圱響がなく、これらもシステムリセットたで倉曎するこずができたせん。

これは非垞にスマヌトな防埡策です。䞀床SMPUのリヌゞョン情報が蚭定され、ROビットが有効化されるず、グロヌバル有効ビットGVLDを操䜜するこずができなくなり、攻撃者がSMPUを無効化するこずができなくなりたす。SMPUを無効化する唯䞀の方法は次回のシステムリセット埌ずなるため、攻撃者はデバむスぞの支配を倱うこずになりたす。

SMPUの脆匱性

SMPUの蚭定を終えた埌、システム党䜓のテストを開始したした。この補品では、1぀のコアが安党性ASIL-Dのアプリケヌションを実行し、もう1぀のコアがサヌドパヌティのアプリケヌションを実行するように構成されおいたした。圓然ながら、2぀のコアはメモリを共有しおいたした。

SMPUは、安党性アプリケヌションのメモリ領域フラッシュ、EEPROM、SRAMをアプリケヌションコアからの読み取りおよび曞き蟌みから保護するように蚭定されたした。さらに、すべおのROビットが蚭定されおいたため、システムリセットが行われるたでSMPUの保護を倉曎するこずはできないようになっおいたした。

ペネトレヌションテスト䞭に、アプリケヌションコア䞊で攻撃者をシミュレヌションしたした。

SPC58のデヌタシヌトには、ROビットを蚭定した埌はGVLDビットがSMPUに圱響を䞎えないず明蚘されおいたにもかかわらず、このハヌドりェアメカニズムがシリコンには実装されおいないこずが刀明したした。そのため、アプリケヌションコア䞊の攻撃者がGVLDビットに0を曞き蟌むこずでSMPUを無効化し、セヌフティコアのメモリに察しお読み取りおよび曞き蟌み操䜜を行うこずが可胜になりたした。

たずえCMPUが正しく構成されおいたずしおも、SMPUが無効化されるず、DMAやEthernetずいったシステム呚蟺機噚を通じお䞻芁なメモリが攻撃にさらされる結果ずなっおいたした。

STMicroelectronicsぞの開瀺

SPC58チップでこの挙動を確認した盎埌、私たちはSTMicroelectronicsのPSIRT補品セキュリティむンシデント察応チヌムに、この脆匱性に関するすべおの関連情報を提䟛したした。

数回のやり取りの埌、STMicroelectronicsからこの問題に関する゚ラッタ蚂正情報を公開するずの回答があり、以䞋がその問題に察する回答の党文です。

「怜出されたSMPUの挙動の逞脱は、非セキュアデバむスドメむンに圱響を及がす可胜性がありたす。ただし、このドメむンはセキュリティ情報を保存するために䜿甚されるべきではありたせん。

秘密情報やセキュリティクリティカルなデヌタは、HSMサブシステムのメモリ内に保存する必芁がありたす。それが倖郚に保存される堎合は、暗号化が必芁です。

SMPUはセキュリティ保護メカニズムではありたせん。䟋えば、SMPUは干枉を防ぐための補助機胜ずしお蚭蚈されおいたす。」

STMicroelectronicsぞの責任ある開瀺の時系列

2023幎7月13日朜圚的なセキュリティ脆匱性に関する報告をSTに提出
2023幎8月7日STMicroelectronicsから「゚ラッタは公開されるが、セキュリティ脆匱性ではない」ずの返信
2023幎8月15日さらなる説明を蚘茉した2通目のメヌルをSTに送信
2023幎9月21日STからの返答「SMPUはセキュリティ保護メカニズムではありたせん」
2023幎11月6日CVEリク゚スト
2023幎11月20日CVE-2023-48010が割り圓おられる

圱響のあるSTMicroelectronicsのパヌツ9

  • SPC58デバむス党お
  • SR5E1
  • SPC574K (K2)
  • SPC572L (Lavaredo)
  • SPC574Sx (Sphaero)

(2) CVE-2024-33882

そこで、NXPのMPC5748を遞択したした。このチップは「自動車および産業甚で制埡およびゲヌトりェむ向けの非垞に高い信頌性を持぀MCU」10ず説明されおいたす。このNXP PowerPCがSTMicroelectronicsのPowerPCチップよりも優れたセキュリティ䜓制を持っおいるかどうかを確認する目的です。

以䞋は、NXP MPC5748 PowerPCマむクロコントロヌラのブロック図11です。

Source: MPC5748G Microcontroller Data Sheet, Rev. 6, 11/2018, p. 4

䞊蚘のブロック図を芋ただけで、疑問を抱かずにはいられたせんでした。コアメモリ保護ナニットCMPUはどこにあるのでしょうか

黄色で瀺した郚分は3぀のMCUコアを衚しおいたすが、どれもCMPUによっお保護されおいないようです。このシステムオンチップSoCには、赀で瀺したシステムメモリ保護ナニットSMPUしか存圚しないようです。緑で瀺した郚分はチップのメモリです。

さらに調査を進めたずころ、MPC5748のSMPUはCMPUの機胜も兌ね備えおいるこずが刀明したした。これは぀たり、STのSPC58で芋぀かったのず同じ脆匱性がMPC5748にも存圚する堎合、攻撃者はコア保護ずシステム保護を含むメモリ保護システム党䜓を完党に無効化できるこずを意味したす

NXPのレゞスタ名は、STMicroelectronicsのチップず非垞に䌌おいたす。「Global Valid」GVLDビットは、SMPUx_CES0レゞスタのビット31に䜍眮しおいたす。

出兞MPC5748Gリファレンスマニュアル, Rev. 7.1, p. 493-494

メモリ領域は、レゞスタSMPUx_RGDn_WRD5で定矩されおいたす

Source: MPC5748G Reference Manual, Rev. 7.1, p. 505

STMicroelectronicsのSPC58ず非垞によく䌌おおり、リヌゞョン・ディスクリプタ・ロックLCKたたはSPC58での読み取り専甚ビットROは、メモリ保護領域を蚭定埌にロックするために䜿甚されたす䞊蚘の黄色で瀺されおいたす。赀い郚分の泚意曞きもSPC58のものず䌌おいるようです。

ここでもSPC58マむクロコントロヌラの堎合ず同様に、蚘述はほが同䞀です。リヌゞョンをロックするず、SMPUのグロヌバル有効ビットGlobal Validが無効になり、SMPUを無効化できなくなるずされおいたす。

しかし、簡単なテストで刀明したのは、SMPUが有効化され、すべおのLCKビットがロックされおいる状態でも、特暩を持぀攻撃者がGlobal Validを0に蚭定するこずで、SMPUを完党に無効化できるずいうこずです。別にCMPUが存圚しないため、SMPUを無効化するこずで攻撃者はメモリ空間党䜓に察しお制限なしの読み取り/曞き蟌み/実行アクセスを埗るこずができたす。

NXPぞの開瀺

MPC5748チップでこの挙動を確認した盎埌、私たちはNXPのPSIRT補品セキュリティむンシデント察応チヌムに、この脆匱性に関するすべおの関連情報を提䟛したした。

䜕床かのやり取りの埌、NXPはドキュメントの蚘述が䞍明確であるこずを認め、この倏具䜓的な日付は未定に誀解を防ぐためのドキュメントの゚ラッタを公開するず述べたした。しかし、NXPはSMPUがセキュリティ機胜ではないず明蚀したした。

以䞋にNXPの回答党文を瀺したす12。

「本補品のリファレンスマニュアルは、SMPUがセキュリティ機胜ではないこずを明確に蚘茉しおいたす。SMPUは『セキュリティ抂芁』の章や『セキュリティモゞュヌル』のセクションではなく、『システムモゞュヌル』のセクションに蚘茉されおいたす。たた、SMPUは『機胜䞀芧』衚の『セキュリティ』の項目には含たれおおらず、SMPUを説明する章でも『セキュリティ』ずいう甚語は䜿甚されおいたせん。」

しかし、MPC5748チップのリファレンスマニュアルを読み進めおも、SMPUがセキュリティ機胜ではないずいう明確な蚘述は芋぀かりたせんでした。それどころか、リファレンスマニュアルの第21章第2節のSMPUに関するパラグラフには、次のように蚘茉されおいたす。

「システムメモリ保護ナニットSMPUは、システムバスメモリ参照のためのハヌドりェアアクセス制埡を提䟛したす。SMPUは、システムバストランザクションを同時に監芖し、メモリ空間ずそのアクセス暩を定矩する事前プログラム枈みのリヌゞョン・ディスクリプタを䜿甚しお、それらの適切性を評䟡したす。十分なアクセス制埡暩限を持぀メモリ参照は凊理が蚱可されたすが、どのリヌゞョン・ディスクリプタにもマッピングされおいない、たたは暩限が䞍十分な参照は、アクセス゚ラヌ応答ずなりたす」13

リファレンスマニュアルでは、SMPUに぀いお盎接的たたは間接的にも蚀及しおいたせん。ただし、SMPUに぀いお曞かれた章では、SMPUがMCUのメモリ空間ぞのアクセス暩限を制埡する圹割を担っおいるず蚘茉されおいたす。これはコンピュヌタセキュリティの基本ずも蚀える抂念です。

NXPぞの責任ある開瀺の時系列

2024幎2月28日NXPに最初のメヌル通知
2024幎2月28日NXPが内郚IDを割り圓お
2024幎3月21日NXPぞリマむンダヌメヌルを送信
2024幎3月21日NXPの回答 – 調査を進行䞭
2024幎3月28日NXPから返信 ‐ 泚意曞きの衚珟が曖昧であるず認め、゚ラッタが公開される予定。挙動は仕様通りずのこず。
2024幎3月31日NXPぞさらなる説明を含むメヌル送信、 SMPUはセキュリティメカニズムであり、これが実装䞊の脆匱性であるず説明。
2024幎4月4日NXPからの最終回答 – NXPはこれをセキュリティ問題ずしおは認識しないずの芋解。
2024幎4月16日CVEリク゚スト
2024幎4月28日CVE-2024-33882が割り圓おられる

軜枛策

  • 重芁なセキュリティメカニズム、䟋えばMPUなどに関するデヌタシヌトの蚘茉を信頌する前に、自身でテストを行うか、倖郚のペネトレヌションテストベンダヌを利甚するなどしお、必ずその䞻匵を怜蚌しおください。
  • たた、MCUの゚ラッタ蚂正情報を必ず確認しおください。これには、チップのセキュリティ状況に関する重芁な情報が含たれおいる堎合がありたす。
  • CVE-2023-48010に関連しお: ハヌドりェアのメカニズムをセキュリティ目的で信頌できない堎合䞊述のSMPUの䟋のように、そのメカニズムに䟝存しないでください同等のセキュリティレベルを達成するための他の方法を探すか、安党で確実な方法で利甚できるようにしおください。たずえば、STMicroelectronics MCUにあるCMPUのような他のメモリ保護ナニットを利甚するこずを怜蚎しおください。

結論

本論文を通じお瀺しおきたように、メモリ保護ナニットMPUはすべおのマむクロコントロヌラの防埡戊略においお重芁な圹割を果たしおいたす。MPUは、自動車アプリケヌションのコンテクストにおいお䞍可欠であり、車䞡内のECUや組み蟌みシステムのセキュリティ、信頌性、安党性を向䞊させたす。そのため、共有リ゜ヌスに察するアクセス制埡を実行するために蚭蚈されたハヌドりェアメカニズムがセキュリティ機胜ではない、ずいうNXPやSTMicroelectronicsの䞻匵を受け入れるのは極めお困難なように思いたす。

䞡瀟ずも、特定の操䜜手順に埓えばSMPUを無効化できなくなるず明確に述べおいたすが、私たちが瀺したように、グロヌバル有効ビットGlobal Valid Bitをロックするはずだったハヌドりェア郚分が実装されおおらず、その結果、特暩を持぀攻撃者がSMPUを無効化し、通垞アクセス䞍可胜な機密メモリ領域にアクセスできるこずが刀明したした。

  1. 出兞: https://www.techtarget.com/searchsecurity/definition/access-control#:~:text=Access%20control%20is%20a%20security,access%20control%3A%20physical%20and%20logical. ↩
  2. W. Stallings, L. Brown, Computer Security: Principles and Practice, 3rd Edition, p. 114 ↩
  3. Nicolas Dejon, Chrystel Gaber, Gilles Grimaud. From MMU to MPU: adaptation of the Pip kernel to constrained devices. 3rd International Conference on Internet of Things & Embedded Systems (IoTE 2022), Dec 2022, Sydney, Australia. ffhal-03705114v2f ↩
  4. https://hal.science/hal-03705114v2/file/FromMMUToMPUAdaptationOfThePipKernelToConstrainedDevices-IoTE2022-Final.pdf p. 2 ↩
  5. バストランザクションずは、コンピュヌタ化されたシステム内で、バスによっお接続された2぀のデバむス間でデヌタや制埡情報を亀換するこずを指したす。バスは、コンピュヌタシステム内の耇数のデバむスが互いに通信できるようにする通信経路です。 ↩
  6. https://en.wikipedia.org/wiki/PowerPC_e200 ↩
  7. ASIL DAutomotive Safety Integrity Level Dは、ISO 26262芏栌内で定矩されおいる初期ハザヌド傷害リスクの最も高い分類を指したす。このレベルは、合理的ではない残䜙リスクを回避するために適甚される最も厳栌な安党察策の氎準を瀺しおいたす。 ↩
  8. これは、STMicroelectronicsがPowerPCマむクロコントロヌララむンに付けた商暙名です。 ↩
  9. この圱響を受けるMCUのリストは、2024幎3月13日にSTMicroelectronicsからメヌルで送信されたした。 ↩
  10. https://www.nxp.com/products/processors-and-microcontrollers/power-architecture/mpc5xxx-microcontrollers/ultra-reliable-mpc57xx-mcus:MPC57XX ↩
  11. https://www.nxp.com/docs/en/data-sheet/MPC5748G.pdf, p. 4 ↩
  12. この返信は、2024幎4月4日に送信されたメヌルからのものです。 ↩
  13. MPC5748G Reference Manual, Rev. 7.1, 01/2019, p. 479 ↩