任意コード実行(ACE)とは? ACEの定義と防御の方法

任意コード実行(ACE)は、ソフトウェアやハードウェアの欠陥に起因します。ハッカーはその問題を発見し、それを利用してターゲットデバイス上でコマンドを実行することができます。

リモートコード実行の脆弱性は、1台のデバイス上というより、ネットワーク全体でハッカーが悪意のあるコードを起動できる場合に起こります。

ACEの仕組み

コンピューターは、有効な入力(パスワードなど)とコマンド(コードなど)を区別することができません。数字や文字の適切なシーケンスを入力し、コンピュータがそれを受け入れるように構築されていれば、ほとんどすべての入力を攻撃に変えることができます。

ハッカーは、すでに存在する問題を引き起こしたり、プログラム内の情報を変更したり、別のコードをロードしたり、後で実行するために問題をインストールしたりする可能性があります。

ターゲットとなるソフトウェアやデバイスは、ハッカーが持つアクセスレベルを制御しますが、ハッカーの目標はその権限を昇格させることです。つまり、ハッカーはデバイスの管理者権限を手に入れようとします。成功すれば、そのコンピュータはハッカーにとってゾンビデバイスとなり、別の攻撃で悪用される可能性があります。

ACEインシデントの深刻さはさまざまです。

2014年、あるゲーマーがACEコマンドとコントローラのボタンを使って、ビデオゲーム「スーパーマリオワールド」をハイジャックしました。この悪用は非常に重大で、「ゲームのリアリティ構造が数秒間、ばらばらになる」と語るライターもいました。

こうしたインシデントは、ビデオゲームを改変するよりも劇的な結果をもたらし得るのです。ハッカーはまた、ACEを使ってデータを盗んだり、恐喝をしたり、ビジネスを崩壊に追い込みます。ハッカーがACEを使用すると、プライベートなテキストメッセージや検索履歴が流出する可能性さえあります。

4つのACEの脆弱性

ハッカーは、どんなシステムにもただ飛び込んでコードを実行し始めることはできません。まず問題が存在し、ハッカーがそれを見つけなければいけません。

リモートでコードを実行するかもしれない既知の脆弱性には、以下の4つがあります。

  • デシリアライズ(逆シリアライズ):プログラマーは、複雑なデータを送信しやすいストリームに変換するためにシリアライズ(直列化)を行います。デシリアライズはそのデータを元の形に復元します。ユーザーがこのプロセスに介入し、不正なデータや予期しないデータを送信する可能性があります。 
  • GND ldd ACE:lddコマンドはLinuxで実行され、共有ライブラリの依存関係を調べることができます。このシンプルなコマンドは、ACEを可能にします。ハッカーは実行ファイルを~/app/bin/execに置き、それをlibローダーによってロードさせることができます。 
  • メモリの安全性:これは、すべてのプログラム実行において、無効なメモリにアクセスする術がないということを意味します。違反があると、プログラムが予期せずクラッシュしてしまい、それが発生する際にハッカーが実行可能なコードを挿入する可能性があります。この同様の問題は、データ漏洩も可能にします。 
  • タイプの混乱:プログラムのコードは複雑になることがあり、時折、微妙な混乱を引き起こすことがあります。ある時点で、デバイスが何をすべきか正確にわからなくなることがあり、ハッカーがその答えを持って介入してきます。2018年、あるプログラマーがInternet Explorerでこの問題を発見しました。

ハッカーは革新的であり、他にも多くの脆弱性が存在すると思われます。以下の簡潔なリストでは、この問題がいかに広範囲に存在しているかをご紹介します。

ACEを防止する方法

ハッカーに対抗するには想像力が必要です。開発者は、他者がソフトウェアに侵入し、操作する可能性のある、あらゆる常軌を逸した奇妙な方法を考えなければいけません。ハッカーが付け込んでくる可能性のあるあらゆる問題を、これらの専門家が想定することはほとんど不可能でしょう。

使用するどんなソフトウェアにも、おそらく脆弱性があります。その知識を応用して、ソフトウェアを定期的にアップデートしましょう。すでに把握している脆弱性によって会社の安全が損なわれないようにしましょう。

ウイルス対策ソフトにも投資しましょう。プログラムはすべてのACEの問題をキャッチすることはできません(ウイルススキャナーの約半数が検出できなかった脆弱性が実際にありました)が、もう1つの重要な保護レイヤーを提供してくれます。

ノートパソコンを含め、使用するデバイスには常識的な安全対策を実行しましょう。データを暗号化し、定期的にバックアップを取り、パスワードデータをロックしましょう。

Oktaでは、ユーザーのサインイン、承認、管理に使用できるプログラムを提供しています。また、外部からの攻撃から貴社のサーバーを保護するお手伝いもいたします。セキュリティに関するご相談や無料トライアルをご希望の方は、お気軽にお問い合わせください。

参考文献

How An Emulator-Fueled Robot Reprogrammed Super Mario World On the Fly(2014年1月、Ars Technica)

Fearless Security: Memory Safety(2019年1月、Mozilla Hacks)This Hugely Popular Android App Could Have Exposed Your Web History and Texts(2021年6月、Express)

Deserialization of Untrusted Data(OWASP)

RCE Without Native Code: Exploitation of a Write-What-Where in Internet Explorer(2019年5月、Zero Day Initiative)

ldd Arbitrary Code Execution(2021年、Cat On Mat)

Hackers Exploit WinRAR Vulnerability to Deliver Malware(2019年2月、Security Week)