本文へスキップ
>_ITDITDセキュリティ対策プラットフォーム

用語辞典

#RCE#脆弱性#CVE

RCE(リモートコード実行)とは — なぜ最悪クラスの脆弱性なのか

RCE(Remote Code Execution/リモートコード実行)は、攻撃者がネットワーク越しにサーバー上で任意のプログラムを動かせてしまう脆弱性です。情報を読まれるだけでなく『乗っ取り』に直結するため、CVSSでも最高ランクになりがち。XSSやSQLiとの違い、被害範囲が何で決まるか、そして利用者にできる防御(迅速な更新・CVE監視・最小権限)を、図と表でやさしく解説します。

公開日 2026-06-07 更新日 2026-06-07 5分で読める

「CVSS 10.0 の RCE」——脆弱性ニュースで最も緊張が走る言葉です。なぜRCEが“最悪クラス”なのか、他の脆弱性と何が違うのかを、ゼロから解説します。

他の脆弱性と何が違うのか

多くの脆弱性は被害が限定的です。RCEは「サーバー本体でコマンドが動く」ため、桁が違います。代表的な3つと比べてみます。

脆弱性コードが動く場所主な被害一般的な深刻度
XSS利用者のブラウザセッション窃取・画面改ざん中〜高
SQLiデータベースデータの読み出し・改ざん
RCEサーバー本体乗っ取り・横展開・全部最悪(10.0級も)

なぜ最悪クラスなのか

攻撃者がサーバー上でコマンドを実行できる=そのプロセスができることは何でもできることを意味します。

RCE 成立(任意コード実行)

↓ できてしまうこと
.env を読んでシークレット窃取
DBに到達して持ち出し・改ざん
別サービスへ横展開する足場
↓ どこまで広がるか=
そのプロセスの「権限」次第(だから最小権限が効く)
被害範囲は“動いているプロセスの権限”で決まる。最小権限と分離が、最後の防波堤になる。

被害範囲は「そのプロセスの権限」で決まります。だからこそ、**コンテナ化・最小権限・分離(爆発半径の最小化)**が効きます。root で動かしていれば全部やられ、非特権ユーザー+分離なら被害を閉じ込められます。

多くは「自分のバグ」ではなく「既知の穴」から

RCEは、自分が書いたバグだけでなく、使っているフレームワークやライブラリの既知の穴から起きることが非常に多いです。歴史的な大事故も、その多くがRCEでした。

利用者にできる防御

1

公開済みCVEを放置しない(最大の防御)

CVE を機械で監視(Dependabot / osv-scanner)し、修正版へ迅速に更新する。RCEの大半は「既知の穴の放置」から起きる。

2

実稼働版で判定する

マニフェストの下限表記ではなく、実際に動いているバージョンで危険を測る。表記を信じると危険度を誤判定する。

3

爆発半径を最小化する

非特権ユーザーで動かし、コンテナ・ネットワークを分離。万一踏まれても被害を閉じ込める。

4

入力を実行系に直接渡さない

外部入力をシェルコマンドやデシリアライズ・テンプレート評価へ素通しさせない。自分でRCEを作り込まない基本。

次に読む

よくある質問

QRCEとよくある脆弱性(XSSなど)は何が違う?
A

XSSなどが主に『利用者のブラウザ内』で悪さをするのに対し、RCEは『サーバー本体』で任意のプログラムを動かせます。サーバーの権限・データ・他サービスへ波及しうるため、一般に最も深刻です。

QRCEの被害はどこまで広がる?
A

『攻撃された時に動いていたプロセスの権限』までです。rootや広い権限で動かしていれば被害は甚大に、非特権ユーザー+コンテナ分離なら被害を閉じ込められます。だから最小権限と分離が効きます。

Q利用者(開発者)側でRCEをどう防ぐ?
A

自分でRCEバグを書かない工夫(入力を実行系に直接渡さない等)に加え、最大の防御は『使っているフレームワーク/ライブラリの公開済みRCEを放置しない』こと。CVE監視と迅速な更新が要です。