ローグウェーブソフトウェアのブログ

開発をシンプルに 安全で高品質のコードを 素早くお客様のもとへ

Windows GUI構築ライブラリ Stingray 12.2 リリース

ローグウェーブソフトウェアのStingrayが最新版12.2に更新されました。Stingrayを使用することで、Microsoft 製品のルックアンドフィールと操作感に合致した高度なアプリケーションをエンドユーザーに提供できるようになります。

今回の更新内容は最新の開発環境への対応です。

詳細は 英語ドキュメントページにあるリリースノートをご覧ください。

Stingrayのトライアルお申し込みバージョンアップリクエストもお待ちしております。

ローグウェーブソフトウェア セールスエンジニア 柄澤(からさわ)

最近のマルウェア事情: WannaCry、DoublePulsar、EternalRocks - CodeBuzzから

こんにちは、ローグウェーブの柄澤です。日本でもWannaCryなどのランサムウェアマルウェアが一般メディアでも話題になりました。おなじみOSSアーキテクトのAndrew Pomponioが最近のマルウェア事情をまとめましたのでご紹介します。

最近のマルウェア事情: WannaCry、DoublePulsar、EternalRocks

blog.klocwork.com

ソフトウェアセキュリティや脆弱性の世界ではニューストピックに事欠かず、先週もその状況は変わりません。今回のブログでは、数か月前に流出したNSAツールを利用した2つのマルウェアについて説明します。

WannaCryについては無数のブログが書かれています。この脆弱性は、昨年4月にShadow Brokersに記載された、流出したNSAツールのうちの2つを使用しています。流出した7つのツールのうち、WannaCryが必要としたのはEternalBlueとDoublePulsarだけでした。 EternalBlueは、Microsoftのサーバーメッセージブロック(SMB)プロトコルを利用(エクスプロイト)します。 WindowsのSMBv1は攻撃者から特別な細工をしたパケットを受け取り、ターゲットシステム上でコードを実行できるようにします。

DoublePulsarは一種のバックドアで、わずか数週間でWindowsマシンが20万台以上も感染しました。DoublePulsarはカーネルモードで動作し、攻撃者にシステムの高度な制御権を与えます。ping、kill、execが実行可能になり、このexecを使ってマルウェアをターゲットシステムにロードするために使用されます。

EternalRocksは進化したマルウェアの最新型です

WannaCryについてもっと知りたい場合は、ググることをお勧めします。ここではWannaCryからより新しいマルウェアに話題を進めます。WannaCryはShadow Brokersツールキットの2つを使用しましたが、EternalRocksは7つを使用しています。お分かりでしょうか、7つです!WannaCryは単にSMBv1をエクスプロイトしただけですが、EternalRocksはSMBv1から3までと、SMB偵察ツールSMBTouch、インターネット上で開いたSMBポートを狙うための有名なツールArchTouchをターゲットにしています。 DoublePulsarも同様に利用されています。 EternalRocksは専門家の目を欺くためにWannaCryとして偽装する方法を見つけました。使用しているツールの数の他に異なる点は、EternalRocksの場合侵入されたシステムの制御を取得し、将来の攻撃に備えて潜伏することです。

DoublePulsarはも、同じLAN上の他のシステムにワームを広めるために使用されます。 UpdateInstaller.exeとtaskhost.exeを実行することによりEternalRocksのインストールが開始されます。 24時間が経過すると、EternalRocksはコマンドと制御を担うサーバーに対して応答し、このサーバーは先述の7つのSMBエクスプロイトツールを送信します。svchost.exeプロセスを利用してTorをダウンロードし、ubgdgno5ewkhmpy.onionとともにインストールします。ひとたびエクスプロイトがインストールされると、EternalRocksはWANをスキャンして、SMBポートが開いているコンピュータを探します。

なぜマルウェアが発生し、どのように防ぐのか

壊れたレコードかと思われるでしょうが、再度繰り返します。私たちの結論は、

  1. システムを最新の状態に保つ
  2. デフォルトログインではなくパスワードを使用する、あるいは全くログインしないこと。

しかし、この結論では、私は資本主義的な視点を提起したいと思います。

このような醜悪なエクスプロイトが米政府に利用され、私たちの気づかないうちに悪用されていたこの時代に、製品やサービスの質について何を語ることができるでしょうか?私たちがどんなに品質保証に時間をかけても、こうした欠陥を見つけ出してしまうような高度な技術を、私たちの米政府は所有しているのでしょうか?

あるいは、これらの脆弱性は、単に締め切りに追われた複数の部門による不注意な見落としの結果であり、最終的には、株主を満足させるために不完全で不安定な製品が市場に押し出されるのでしょうか?私は常にこうした疑問を熟考していますが、企業の一部であるチームにとって実現不能で不快な作業であるようです。

これらの仮説は、私たちが品質よりも利益を重視する世界に住んでいる限り続くことになるでしょう。

編集後記

いかがだったでしょうか。末尾に突然意外な感情が吐露されてやや驚いた方もいるかもしれません。オープンソースやセキュリティの世界に長年親しんで来たエンジニアにとって、品質保証やコスト、利便性、政府による安全保障(監視)と市民の自由(暗号化)といった諸要素の間のバランスは常に関心事なのでしょう。

blog.roguewave.jp

blog.roguewave.jp

ローグウェーブのオープンソース関連のサービスは、Andrew Pをはじめ、すぐれたOSSアーキテクトたちが活躍しています。ご興味がおありの方はぜひご連絡ください

ローグウェーブ セールスエンジニア 柄澤(からさわ)

複雑なデバッグをシンプルに - TotalViewのTransformations機能 - CodeBuzzから

ローグウェーブのセールスエンジニア柄澤(からさわ)です。一般に物事はシンプルであるに越したことはないのですが、なかなか物事はそううまくは行きません。ますます複雑化する世の中から開発者の生産性と精神の健康を保つために、ローグウェーブのTotalViewデバッガは様々な機能を提供しています。今回はそうした中からTransformations機能を説明したローグウェーブ本社のブログCodeBuzzに投稿された記事をご紹介します。著者のDean Stewartはイギリスを中心にヨーロッパで活躍するセールスエンジニアです。

複雑なデバッグをシンプルに - TotalViewのTransformations機能

blog.klocwork.com

アプリケーションの機能はますます複雑化を続けていますが、利用できる開発期間やリソースがそれに伴って長くなるわけではありません。これに対処するために、プログラミング言語フレームワークには、ラムダ関数、STL、Boost、アプリケーションミドルウェアといった抽象レイヤーが追加されてきました。 しかしこれらの抽象化によって、開発者は、ポインタをたどって実際のデータを調べなければならなくなったり、glueコードが埋め込まれたスタックフレームの中で自分の居場所を見失うなど、デバッグが困難になります。

TotalViewは代表的なマルチスレッドデバッガで、データやコールスタックの抽象化を解決するのに役立つ型変換フレームワーク (TTF)とスタック変換フレームワーク (STF)という機能を持っています。

型変換フレームワーク (TTF、Type Transformation Framework)

TotalViewはクラスや構造体でコレクションデータをどのように表示するかを開発者が定義できるようにします。 デフォルトではTotalViewはTTFを使用して、STL文字列、vector、list、map、multimap、set、multiset、そして最近のg++コンパイラ用のunorderedなSTLの型を変換します。

TTFは、コンパイラによって提供される不必要な詳細に煩わされず、開発者が関心のあるデータ要素に集中することを可能にします。 TTFを使用することで、開発者はクラスや構造体の一部のみを表示し、残りの部分を非表示にするtransformationを作成できるため、デバッグのプロセスが簡単になります。 transformationはファイルからロードすることも、またすべてのTotalViewデバッグセッションに自動的に適用させることもできます。

以下の図では、TTFによって構造体のフィールドのうちyear、name、streetのみが表示されるようになりました。

http://blog.klocwork.com/wp-content/uploads/2017/05/transform_debug1-1024x487.png

スタック変換フレームワーク (STF、Stack Transformation Framework)

TotalView 2017.1は、コールスタックを変換する機能を追加します。 このスタック変換機能は表示されたスタックフレームを変更する一連のルールを管理します。このルールによってユーザーが関心のあるスタックフレームにのみ集中できるようにすることができ、複雑なアプリケーションのデバッグプロセスは大幅にシンプルかつ役立つものとなります。

TotalViewのSTFは新しい混合言語デバッグ(PythonC/C++)のサポートでglueコードを除去します。 混合言語サポートの詳細については、このホワイトペーパーを参照してください。

blog.roguewave.jp

簡単な一例として、以下に関数のスタックトレースから ‘_start'という名前の関数をフィルタするためのルールが追加されたコマンドラインでの実行例を示しました。

http://blog.klocwork.com/wp-content/uploads/2017/05/transform_debug2.png

このルールの追加の効果は、以下のGUIのCall Stackウィンドウでも同様で、「_start」という名前の関数がビューから削除されています。

以上のように、TTFとSTFを使用することで、開発者はデータと関数をどのように表示するのか、これまでにないレベルの制御を行うことができます。 これらTotalViewの強力な機能は、皆様のデバッグ体験を変え、複雑なタスクをシンプルにするのに役立ちます。

http://blog.klocwork.com/wp-content/uploads/2017/05/transform_debug3-4.png

編集後記

いかがだったでしょうか。TotalViewの機能というと、MemoryScapeやReplayEngineのような重量級で派手な機能に目を奪われがちですが、TTFやSTFのような機能もプログラムを活き活きと可視化し、開発者とコードの距離を縮めるTotalViewの役割をしっかりと担っています。

TTFに関しては以前エントリを起こしましたので、ご覧ください。

blog.roguewave.jp

blog.roguewave.jp

いつもながら、ご興味のある方はぜひ製品のトライアル窓口にご連絡ください。

ローグウェーブ セールスエンジニア 柄澤(からさわ)