リモートコード実行とは?
リモートコード実行(RCE)攻撃とは、攻撃者が組織のコンピュータやネットワーク上で悪意のあるコードを実行させようとする攻撃のことです。攻撃者が制御するコードの実行能力は、追加のマルウェアの展開や機密データの窃取など、さまざまな目的で使用される可能性があります。
リモートコード実行(RCE)攻撃の仕組み
リモートコード実行攻撃は、一般的にWebアプリケーションやネットワークインフラの脆弱性を介して発生します。
リモートコード実行の脆弱性とは、攻撃者がターゲットシステム上で悪意のあるコードを実行できてしまうソフトウェアの欠陥のことです。RCEに利用できる脆弱性には、以下の例のようないくつかの種類があります。
- インジェクションの脆弱性:インジェクションの脆弱性(SQLインジェクションやコマンドインジェクションなど)は、入力のサニタイズが不十分な場合に発生します。ユーザーが慎重に作成された悪意のある入力を行った場合、提供されたデータの一部が実行すべきコマンドとして解釈されることになります。これにより、攻撃者は、脆弱なシステムに攻撃者が提供するコードを実行させることができます。
- 安全でないデシリアライズ:シリアライズは、受信側のシステムで解凍するために、データセットを単一のビット列にパックすることで伝送を単純化します。しかし、シリアライズされたデータの構造が十分に定義されていない場合、攻撃者は、解凍されたときに誤って解釈される入力を細工することができるかもしれません。データの保存方法や処理方法によっては、この誤認識によって攻撃者がコード実行を実現する可能性があります。
- 境界外書き込み:バッファとは、データを保存するために割り当てられた固定サイズのメモリの一部です。安全でないデータの読み書きを行うと、データをコードとして解釈される場所に攻撃者が書き込んだり、アプリケーションの重要な制御フロー情報として書き込んだりできる可能性があります。
- ファイル管理:アプリケーションによっては、ユーザーがファイルをサーバーにアップロードすることができます。このアクセスにより、攻撃者は悪意のあるコードを含むファイルをアップロードし、アプリケーションを騙して実行させることができるかもしれません。
マルウェアとは、攻撃者が提供する、ターゲットシステム上で実行されるように設計されたコードのことです。RCE脆弱性は、単に攻撃者がさまざまな方法でマルウェアをデプロイすることを可能にします。
その結果、RCE脆弱性は、従来のマルウェアと同じ目的の多くを達成するために利用されてしまうことがあります。RCEは、脆弱なシステム上にマルウェアをデプロイしたり、サービス妨害(DoS)攻撃を行ったり、システム上に保存されている機密情報にアクセスしたりするために使用されることがあります。
攻撃者はどのようにRCEを使用できるのか
リモートコード実行は、悪意のあるコードを実行できるため、攻撃者に様々な選択肢を提供することになり、危険です。RCE脆弱性が一般的な攻撃をさらに進めるために利用される方法には、次のようなものがあります。
- リモートアクセス:RCE脆弱性は、攻撃者に企業ネットワークへの最初の足がかりを与え、その後拡大するためによく使われます。例えば、RCEの脆弱性により、攻撃者はVPN経由のネットワークアクセスを可能にするログイン認証情報を盗むことができます。
- マルウェアの展開:RCE脆弱性はコードの実行を可能にするものの、このコードの範囲は限定的である可能性があります。この制限を突破するために、攻撃者はRCEを使用して、より破壊的な他のマルウェアをダウンロードし実行することがあります。例えば、RCEは脆弱なシステム上でランサムウェアをダウンロードし実行するために使用される可能性があります。
- データ窃盗:RCEの脆弱性により、攻撃者が脆弱なアプリケーション内でコマンドを実行できる可能性があります。これにより、ファイルシステム、データベース、および企業や顧客の機密データのその他の保存場所へのアクセスが可能になる場合があります。
- データ破壊:RCEの脆弱性により、攻撃者がデータベース内でDROPコマンドを実行したり、システム端末内でコードを実行したりする可能性があります。このアクセスでは、正規のユーザーが持つのと同じようにファイルを削除することができます。
- DoS攻撃:境界外書き込みの脆弱性により、攻撃者が重要なコードを上書きし、アプリケーションをクラッシュさせることができます。その他のRCEの脆弱性は、プロセスの終了や重要なデータの削除を可能にできることがあります。
リモートコード実行を防ぐ方法
リモートコード実行攻撃は、企業のWebアプリケーションの脆弱性によって可能になります。企業がRCE攻撃への露出を減らすためには、以下のような方法があります。
- 脆弱性スキャン: よく知られた脆弱性パターンを特定する静的コード解析とファジングなどの動的解析を組み合わせることで、開発者はRCEの脆弱性を悪用される前に特定し修正することができます。
- アップデートとパッチ適用:RCEの脆弱性は、アプリケーションやそのアプリケーションが依存するサードパーティライブラリに発見される場合があります。アップデートやパッチを迅速に適用することで、脆弱なコードを悪用される可能性を減らすことができます。
- 入力検証:RCEの脆弱性の多くは、入力検証が不十分なこと、つまり、アプリケーションがユーザーから提供されたデータの判断の仕方に起因します。強固な入力検証により、ほとんどのRCE脆弱性の脅威を排除することができます。
- ネットワーク監視:RCEの試みは、WebアプリケーションおよびAPI保護(WAAP)ソリューションによって検出およびブロックすることができます。Webアプリケーションの手前でネットワークセキュリティのソリューションをデプロイすることで、パッチ未適用の脆弱性がもたらす潜在的なリスクを低減することができます。
Cloudflare OneでRCEから保護する
Webアプリケーションのクラウドベースのホスティングへの移行が進むにつれ、悪用されないようにセキュリティを確保することが難しくなっています。Cloudflare Webアプリケーションファイアウォールは、膨大な数のグローバル脅威インテリジェンスを使用して、リモートコード実行の試みをブロックします。
また、Cloudflare One、Cloudflareのセキュアアクセスサービスエッジ(SASE)プラットフォームは、企業の内部アプリケーションに堅牢なセキュリティと監視を提供します。