MS15-034 – 緊急 / HTTP.sys の脆弱性により、リモートでコードが実行される (3042553)

HTTP.sysでカーネルキャッシュが有効な場合、特別に細工されたHTTP要求を受信するとHTTPS.sysでリモートコードが実行できてしまう脆弱性があるようです。(システムアカウントなコンテキストで任意のコードが実行できてしまう)

HTTP.sysが対象なのでIIS7以降でクライアントOSも含むので注意が必要です。クライアントOSの場合、HTTP.sysを使うような人はだいたい開発者で通常localhostからしかリクエストを許可していないだろうと思いますが2段階で脆弱性を突くような攻撃を踏まないとも言い切れませんので、さっさとパッチを適用しましょう。

暫定的な回避策としてはカーネルキャッシュを無効にすればよいようです。
※攻撃の詳細よくわかってないのでパッチ適用するほうが望ましいかと。

Azureで言えばIaaSなVirtual Machinesは自己責任なのでさっさとパッチ適用しましょう。
Cloud Servicesの場合はパッチ適用されたGuest OSが出るまでの間、スタートアップタスクなどでパッチをあてるか一時的にIISのカーネルキャッシュを無効化する必要があります。
(2015.04.18 Update) 対策済みGuest OSでました。(Guest OS versions: 4.19, 3.26, 2.38 ) ドキュメントはもうすぐ更新されるみたいです → Azure Guest OS Releases and SDK Compatibility Matrix 

Web Apps(Websites)の場合、IISマネージャーでサイトに接続してカーネルキャッシュをオフにする手段がとれそうです。(抜本対策されるまでの間)

Web Apps (Websites)はすでに対策済みだそうです。さすが安心と信頼のWeb Apps!みんなWeb Apps使おう

Windows Azure WebサイトのWeb Jobs (Preview)

Windows Azure Webサイトを裏で動かしているKuduにはWeb Jobsという機能があります。そのまんま、Webアプリケーションとは別に指定されたジョブを実行することができる機能なのですが、この間までこの機能は直接KuduのAPIを叩いて設定する必要がありました。

面倒ですね。でも大丈夫。今日のUpdateでAzureの管理ポータル上から設定することができるようになりました。

image

続きを読む

Windows Azure Web Sitesの魅力を120%引き出す

このPostはWindows Azure Advent Calendar 2013の22日目です。

皆様はWindows Azure Webサイトを活用してますか? Windows Azure Webサイトはとってもステキなプラットフォームです。とりあえず先日の帝国兵さんのPostしばやん先生のBlogでも見て魅了されるべきです。ただ、普通に使っていてはその魅力は100%どまりです。

んふふふ・・・へただなぁカイジくん。へたっぴさ! Webサイトの解放のさせ方が下手!

カイジくんが本当に欲しいのは、これ・・・!

Kudu!

これを使ってHackしてさ、さらにクールなWebサイトをやりたい、、、だろ…?

とかなんとか、そういうわけでWindows Azure Webサイトをもっともっと面白おかしく使うためのエッセンスとして、今回はKuduを丸裸にしたいと思います。

「ヌーディスト・クードゥーゥゥゥゥ!!!」 みそ先生から圧力もとい電波を受けました。

続きを読む

Windows Azure Web Sites のローカルストレージ

焼土下座ーな感じでこんにちは。

Windows Azure Web Sitesのローカルストレージについて勘違いしていたので懺悔の意味も込めてまとめてみました。

|←樹海|     ┗(^o^ )┓三

もっと素晴らしいのはきっと、しばやん大先生が纏めてくださると思います。

結論から言うと、Windows Azure Web Sitesのローカルストレージは永続化されるし、複数インスタンスで共有(というより同一のものを見ている)されてるので超COOL、ということです。

実際にどういうことか見てみたいと思います。

続きを読む

Windows Azure Cache Service (Preview)を使ってみる

どうも、この間のJAZUGイベントのLTで圧倒的多数ッ! の (´・ω・`)ショボーン をゲットした@kamebuchiです。

あれか、ストアアプリ動かなかったからか!そうなのか!

あ、しばやん大先生、アプリ作成ありがとうございました。( ´∀`)bグッ! 
うまい棒贈呈します。

というのは置いといて、この間リリースされたばかりのWindows Azure Cache Service(Preview)をさっそく使ってみたいと思います。

※一応、【祝】Azure日本DC前夜祭!★Japan Windows Azure User Group 3周年のLTフォローアップ的な何かです。
※あ、Cache ServiceはPreviewなので申請が必要です。(すぐにActiveになりますが)

続きを読む

Windows AzureのCloud ServicesでVirtual Network

移行とかでDBはやむを得ずそのままでフロントは頑張った系の構成つくろう、つまり Windows Azureのクラウドサービス(Web RoleとかWorker Role)をVirtual Networkに参加させちゃおうという話です。

ついでに同じVirtual NetworkにWindows Azure 仮想マシンも参加させてサービス間通信もしちゃいましょう。

今回想定しているのはざっくり以下のような構成です。

バックエンドのVMはDBとかまぁそういうのを想定。通信の方向性としては双方向で通信できますが、今回はフロントのWebRoleからVMへのアクセスを想定します。

といっても対してすることは無く。Web RoleなどのCloud ServicesでのVirtual Networkへの参加方法と、VMのVirutla Networkへの参加方法、名前解決についてあたりを書こうと思います。

続きを読む

インスタンスのInputEndpointを取得できない

Windows Azure上でインスタンス間通信する場合、相手のIPアドレスがわからないと何もできません。通常IPアドレスはインスタンス起動時に適当に振られるので、RoleEnvironmentを使ってインスタンスのIPEndpointを取得するのですが、どうもInputEndpointから取れなくなったっぽい。

※インスタンスを列挙してそのインスタンスのIPEndpointを取得してIPアドレスをゲットする、という方法ですが他のインスタンスのInputEndpointが取れない。

ぽい、というのは昔とれた気がするんですけど、SDK1.8だと取れないんですよね。いつからか不明だけどVPNが来たりしたSpring Waveのときかなぁ?

というわけでSDK1.8時代のロール間通信はInternalEndpointを明示的に指定して、そいつのIPEndpointを参照しましょう、という感じになります。

取得するコード的にはこんな感じです。

var role = Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.CurrentRoleInstance.Role;
foreach (var instance in role.Instances)
{
	foreach (var s in instance.InstanceEndpoints.Values)
	{
		if (s != null)
		{
			Console.WriteLine("{0} = {1}:{2}", s.RoleInstance.Id, s.IPEndpoint.Address.ToString(),
								  s.IPEndpoint.Port);
		}
	}
}

 

サービス定義ファイル(CSDEF)はこんな感じ。

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="WindowsAzure18_45" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2012-10.1.8">
  <WebRole name="MvcWebRole1" vmsize="ExtraSmall">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
          <Binding name="Endpoint2" endpointName="Endpoint2" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
      <InternalEndpoint name="Endpoint2" protocol="http" port="8002" />
    </Endpoints>
    <Imports>
      <Import moduleName="RemoteAccess" />
      <Import moduleName="RemoteForwarder" />
    </Imports>
    <Runtime executionContext="elevated">
    </Runtime>
  </WebRole>
</ServiceDefinition>

 

テストなので適当にInputEndpointとInternalEndpointを定義してみました。

で、結果はこう。

image

インスタンス0上で実行しました。他のインスタンスのInputEndpointは取れてないですね。でもInternalEndponitは取れてます。

ということで、何かインスタンス間通信したい場合はInternalEndpointをちゃんと定義しましょう、ということで。

ちなみにコンソールアプリとかで

Unhandled Exception: System.TypeInitializationException: The type initializer fo
r ‘Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment’ threw an exception. —
-> System.IO.FileLoadException: Could not load file or assembly ‘msshrtmi.dll’ o
r one of its dependencies.
A dynamic link library (DLL) initialization routine f
ailed. (Exception from HRESULT: 0x8007045A)
   at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeEnvironmen
t()
   at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment..cctor()
   — End of inner exception stack trace —
   at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.get_CurrentRoleInsta
nce()

とか出る場合は以下のようにuseLegacyV2RuntimeActivationPolicyをTrueにすればいいですよ。(結構悩んだ)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
	</startup>
</configuration>

 

まぁByDesignという感じみたいです。はい。(外部からの受付用のInputEndpointで内部用のIPアドレスが取れちゃうってのも変な話といえば変ですのでいいんですけどね。)

Windows Azure Web Sitesを有効利用しよう! NuGetサーバー編

今日は Windows Azure Advent Calendar jp: 2012 の9日目のネタをお送りします。

 

今日のお題というか今年のお題はですね、みなさんご存知、Windows Azure Web Sitesに関するちょっとイイ話です。

Windows Azure Web Sites はお手軽にWebサイトを立ち上げることができる、Windows Azureのサービスの1つです。なんと今ならリージョンあたり10個まで無料で作ることができます!(つまり今だと最大50サイト!)

これは有効利用するっきゃないですね!

というわけで、なんとなくあったら便利そうだなっていうWebアプリをWindows Azure Web Sitesでホストしちゃいましょう~!というのが今年の趣旨でございますー。

続きを読む