Last Updated on 2025-03-31 12:59 by admin
ギリシャのピレウス大学とアテナ研究センター、オランダのデルフト工科大学の研究者らが、マルウェア作成者が検出回避のために一般的でないプログラミング言語を使用する傾向について調査した結果を発表した。
研究者チームはTheodoros Apostolopoulos、Vasilios Koutsokostas、Nikolaos Totosis、Constantinos Patsakis、Georgios Smaragdakisらで構成されている。
彼らの論文「趣味と利益のための奇抜なプログラミング言語によるマルウェアのコーディング」によると、マルウェア作成者は静的解析による検出を回避するために、DelphiやHaskell、Rust、Nimなどの一般的でない言語を使用している。アンチウイルス評価機関AV-TESTによれば、2025年だけで約2600万件の新たなマルウェアが確認されている。
研究チームはMalware Bazaarから約40万のWindowsの実行可能ファイルを調査し、プログラミング言語だけでなくコンパイラの選択もマルウェアの検出率に影響することを発見した。特にPelles C、Embarcadero Delphi、Tiny Cなどの一般的でないコンパイラの使用が検出率に大きな影響を与えることが分かった。
APT29などの高度な持続的脅威(APT)グループは、ウクライナに対するMasepieマルウェアでPythonを使用し、ZebrocyマルウェアではDelphi、Python、C#、Goの混合を使用している。また、AkiraランサムウェアはC++からRustに移行し、BlackByteランサムウェアはC#からGoに移行、HiveはRustに移植されている。
研究者らは、Rust、Phix、Lisp、Haskellなどの言語がシェルコードバイトを不規則に分散させることで静的検出を複雑にしていると指摘している。彼らは、セキュリティコミュニティがこれらの一般的でない言語で書かれたコードにより注目し、適切な検出ツールを開発する必要があると結論付けている。
from:Malware in Lisp? Now you’re just being cruel
【編集部解説】
マルウェア開発者たちが検出回避のために新たな戦略を取り始めています。それは、あまり一般的ではないプログラミング言語を使用するという方法です。この傾向は、セキュリティ業界に新たな課題をもたらしています。
ギリシャとオランダの研究者たちによる最新の調査では、DelphiやHaskell、Rust、Nimといった「エキゾチック」な言語でコーディングされたマルウェアが増加していることが明らかになりました。これらの言語は主流のC/C++と比較して使用頻度が低いため、セキュリティツールによる検出が困難になっているのです。
この傾向は実は2021年頃から始まっていたことが、BlackBerryの研究チームによる過去の報告からわかります。当時から、Go、Rust、Nim、DLangといった言語がマルウェア開発に使われ始めていました。特にロシアを拠点とするAPT28(Fancy Bear)やAPT29(Cozy Bear)といった高度な脅威グループが、これらの言語を積極的に採用していたことが指摘されています。
なぜマイナー言語がマルウェア開発に適しているのでしょうか。まず、これらの言語で書かれたコードは従来の静的解析ツールでは検出しにくいという特徴があります。特に署名ベースの検出方法では、既知のマルウェアパターンを探しますが、新しい言語で書き直されたマルウェアはこのパターンから外れるため、検出を回避できるのです。
また、HaskellやLispなどの関数型言語は、C言語とは根本的に異なる実行モデルを持っています。例えば、Haskellでは「遅延評価」という仕組みを使い、必要になるまで計算を遅らせるという特徴があります。これにより、シェルコードのバイトが不規則に分散され、静的検出がさらに複雑になります。
研究チームが約40万のWindowsの実行可能ファイルを調査した結果、プログラミング言語だけでなく、使用するコンパイラの選択も検出率に大きな影響を与えることがわかりました。例えば、Pelles C、Embarcadero Delphi、Tiny Cなどのあまり使われていないコンパイラを使用すると、検出率が大幅に低下する傾向があります。
興味深いのは、マルウェア開発者が必ずしも完全に新しいマルウェアを作成しているわけではないという点です。多くの場合、既存のマルウェアを新しい言語で「ラッピング」したり、一部のコンポーネントだけを書き換えたりしています。例えば、BazarLoaderというマルウェアはNim言語で書き直されてNimzaLoaderとなりました。
この傾向は、サイバーセキュリティの世界で「いたちごっこ」が続いていることを示しています。マルウェア開発者が新しい手法を編み出すと、セキュリティ研究者はそれに対応する検出方法を開発します。そして再びマルウェア開発者が新たな回避策を見つける…というサイクルが繰り返されているのです。
私たちユーザーにとって、この状況は何を意味するのでしょうか。まず、単一のセキュリティ対策に頼ることの危険性を認識する必要があります。署名ベースの検出だけでなく、振る舞いベースの検出や機械学習を活用した多層防御が重要になってきています。
また、企業のセキュリティチームにとっては、これらのマイナー言語に対する知識と分析能力を高める必要性が出てきました。特にHaskellやRustなどの関数型言語やモダンな言語に精通したセキュリティ専門家の需要が高まるでしょう。
長期的には、プログラミング言語の多様化がセキュリティ業界全体に与える影響も考慮する必要があります。言語ごとに最適化された検出ツールの開発や、言語に依存しない検出手法の研究がさらに重要になってくるでしょう。
この事例は、テクノロジーの進化とともにセキュリティの課題も変化し続けることを示しています。私たちinnovaTopiaは、こうした最新のセキュリティトレンドを追い続け、読者の皆さんに有益な情報をお届けしていきます。
【用語解説】
静的解析(Static Analysis):
コードを実行せずに解析する手法。ソースコードを読み取り、潜在的な問題やバグを特定する。
マルウェア(Malware):
悪意のあるソフトウェアの総称。ウイルス、ワーム、トロイの木馬などが含まれる。
APT(Advanced Persistent Threat):
高度で持続的な標的型攻撃。特定の組織や国家を長期間にわたって狙う。
Delphi:
Embarcadero社が開発したオブジェクト指向のプログラミング言語およびIDE。Windows向けアプリケーション開発に広く使われている。
Haskell:
純粋関数型プログラミング言語。副作用を持たない関数を特徴とし、型推論や遅延評価などの機能を持つ。
Rust:
メモリ安全性と並行処理に焦点を当てたシステムプログラミング言語。C++の代替として注目されている。
Nim:
Pythonに似た構文を持ちながらC言語のように高速に動作するプログラミング言語。
コンパイラ:
プログラミング言語で書かれたコードを機械語や中間言語に変換するソフトウェア。
シェルコード:
コンピュータシステムのコントロールを奪取するために使用される小さなコード片。
【参考リンク】
Embarcadero Delphi(外部)
Delphiの公式サイト。RAD(高速アプリケーション開発)ツールとして30年の歴史を持つ。
AV-TEST(外部)
ドイツの独立したセキュリティ研究機関。マルウェア検出とアンチウイルスソフトウェアのテストを行う。
Malware Bazaar(外部)
マルウェアサンプルと情報を共有するための無料のコミュニティ主導プラットフォーム。
Palo Alto Networks(外部)
サイバーセキュリティソリューションを提供する企業。マルウェア対策情報を公開。
TrustInSoft(外部)
静的解析ツールを提供する企業。ソフトウェアの脆弱性を検出するための数学的保証を提供。
【参考動画】
【編集部後記】
みなさんは普段、どのプログラミング言語を使っていますか?今回の記事で紹介したように、マイナー言語がセキュリティの世界で新たな意味を持ち始めています。もしセキュリティに関わるお仕事をされている方は、HaskellやRustなどの言語を学んでみる価値があるかもしれません。また、一般ユーザーの方も、マルウェア対策は単一のセキュリティソフトだけでなく、多層的な防御が重要になってきていることを意識してみてはいかがでしょうか。