アプリケーションセキュリティ

アプリケーションセキュリティの対策を考える時に防御するべき攻撃として、どのようなものがあるかについて、考えますと、まずOWASP Topがあると思います。また、IPAの情報セキュリティ10大脅威なども参考になります。

ただし、これらの攻撃の手法は、ボットを活用したり、攻撃者がレベルアップして、従来の対処をくぐりぬけてくることもしばしば発生します。

最近では、以下のような攻撃があります。

 

・クレデンシャルスタッフィング

流出したクレデンシャル情報(ID,PW等)をもとに、ボットやプロキシサーバーを経由して、他のサイトへ不正アクセスを実施。クレデンシャル情報は、ダークウェブ(ブラックマーケット)で売買。

正しいボットかどうかの判別やプロキシ経由であるため攻撃元の特定が極めて難しい。

 

ブルートフォース

総当たり攻撃。昔からある手法だが、考えられる組み合わせをすべて力技で実行する。最も原始的だが、最も確実であり、いまもなお利用されている。

 

・ユーザ列挙

ユーザ名が対象のサイトのデータベースのなかに登録されてるかを確認する攻撃。パスワードリセットのためにユーザIDやメールアドレスを入力し確認。

 

CAPTCHAバイバス
AIで突破する方法や他のサイトから人を誘導して突破させる等の方法があり、既にフリーメールの世界ではCAPTCHAを突破する事例がある。

 

・パスワードスクレイピング

パスワード情報をスクレイピングによって奪取する

 

スクレイピング

各種重要情報をスクレイピングによって違法に奪取する

 

・ギフトカードクラッキング

ギフトカードの不正利用

 

・スパムボット

スパムメールを送信することを目的として、ウェブ上から大量のメールアドレスを自動取得するボット。

 

以上のように攻撃内容が高度化され、セキュリティ会社とハッカーの競争もは劇しいため、昔ながらのWAFではなく先進的なWAFやセキュリティソリューションが求められている。

Active Directoryについて(その3)

フェデレーションとシングルサインオンについて

 

Active Directoryについて(その1)で認証、認可についてお話しましたが、クライアントは、ID,パスワードで認証に成功したら、リソースにアクセスするためのチケットをドメインコントローラーから取得します。そのチケットを使用して認可された範囲でリソースを使用することができます。

このときの一連のプロトコルをKerberosといいます・

 

しかし、Kerberosは、あくまでもADのドメインの範囲内であり、クラウドサービス(SaaS)を利用する際には、別のプロトコルが必要で、昨今では、SAML(Security Assertion Markup Languageの略)が最も有力といってよいでしょう。


SAMLの主要コンポーネントは、IdP(ID Provider)とSP(Service Provider)があります。IdPから、Assertion(ユーザ情報などが入ったセキュリティトークン)をSPに受け渡し、SPは、ユーザに応じてコンテンツを表示します。

例えば、ADとOffice365のSSOを考えます。

ADFSが、IdPになり、Offive365がSPになります。
クライアントがSP ( Office365 ) で認証を行おうとした場合、http リダイレクトにより自組織の IdP (ADFSサーバ) へ飛ばされ、そこでログインを行います。

ログインが成功した場合、IdP はクライアントに Assertion(アサーション) を発行し、クライアントは再度 http リダイレクトにより SP へ戻され、その際に Assertion を提示することでそのサーバへログインできます。

SAMLを使用することで、Office365とのフェデレーションを実現し、ユーザーからみて、シングルサインオンとなります。

 

 

 

 

Active Directoryについて(その2)

前回、複数のADのドメインで信頼関係を締結することによって、1回のログインでアクセスすることが可能になる旨説明しました。
ただ、昨今のクラウド化の流れもあり、さまざまな業務がSaaSとして提供されはじめました。

SaaSごとにID、パスワードを入力するのはユーザにとっては面倒であるため、
1回ログオンした後に、再度認証せずに、SaaSも含めて利用できる方法として、フェデレーション(ID連携)という技術があります。

ADには、ADFS(Active Directoryフェデレーションサービス)があり、これを使うことで、ADで認証した後に、SAMLクラウドで利用可能なチケット(トークン)を生成し、それを受け渡すことにより、クラウドサービスを利用することができます。

 

Active Directoryについて(その1)

Active Directoryは、WindowsServerに標準で導入されたもので、ディレクトリサービスを提供するマイクロソフト社のブランド名の1つ。ユーザ管理やアクセス制御なども可能に。


ディレクトリサービスはネットワーク上のリソースを収集管理して、ユーザやアプリケーションからのアクセスを制御します。Active Directory以外にもOSSのOpen LDAPがある。Active DirectoryとAzure Active Directoryは異なり、ここでは、オンプレミス型のActive Directotyを単にADとして記載します。


なお、リソースは、PC、共有プリンターやファイル共有サーバーやさまざまなシステムなどで、これらのオフィス環境ではWindowsの導入企業が多数であるため、それにともなってADを導入構築運用されているケースは多いです。

ドメイン
ADによって許可されたユーザが1回のログオンでアクセスできる範囲。
aaaa.comは、ドメイン名の例です。

ドメインコントローラー
認証と認可に必要な情報をActive Directoryデータベースで一元的に管理しているコンピュータ。

フォレストとドメインツリー
複数のドメインの信頼関係を結びためのもの。
具体的には、A社がaaaa.comというドメイン管理し、X社がxxxx.comでドメイン管理しているときにA社とB社が合併した時に、aaaa.comとxxxx.comをフォレストで信頼関係を結ぶことで、aaaa.comからxxxx.comにアクセスすることが可能となります。
上記のような大きな話でなくても、例えば、ab.aaaa.comのように継承してサブドメイン(子ドメイン)を作ってドメインツリーを形成することでも、1回のログオンで信頼関係があるドメインにアクセスすることが可能になります。

認証と認可について

コロナウィルスの話もあり、リモートアクセス環境の整備が進んでいます。

一方で、高度で複雑なサイバー攻撃対策も必要とされています。

アクセス制御関連は、セキュリティの高度化やクラウドを利用する際に関係してくるため、基本的な言葉については理解しておくとよいと思います(私は全然詳しくなく勉強中です)

よく、認証と認可という言葉を聞きます。

 

認証

認証とは、コンピューターやシステムにログインできるユーザーを識別することです。一般的には、IDとパスワードで認証してPCにログインしたり、スマートフォンでは、指紋認証してログインすることもあります。
万一、ID、パスワードが悪意のある第3者に盗まれた場合の対策の一環として、例えば、ID、パスワードの認証後に、ワンタイムパスワード(One Time Password:OTP)を利用することもあります。

OTPの仕組みはいろいろありますが、ID,PWで1回目の認証に成功した後に、ユーザに
メールやショートメッセージで1回だけ使用できるパスワードを送ったり、スマートフォンに専用アプリを入れて、そこからパスワードを発行したり、スマートフォン上でアクセスを承認するような仕組みもあります。
スマートフォンを無くすと大変なことに。

 

認可

認可とは、システム管理者がある特定の条件を満たしたユーザに対して、特定のシステムやサービスの利用を許可することです。
誰がどこにアクセスしてよいか、ACLAccess Control List)で設定します。

例えば、新入社員が社内ポータルにログインできても、そこから先の経費精算システムを利用できるかは、ACLでアクセス権限を付与されていなければなりません。

 

監査

認証と認可をあわせて認証基盤を構築しても、その後アクセス状況を確認したり、誰がどこにアクセスしたか、ログとして記録として残すしておくことにより、不正アクセスユーザの有無について調査検証(=監査)することができます。

 

これらを具体的にシステム化するための基本的なインフラとして、アクティブディレクトリが普及しております。

 

次回は、アクティブディレクトリについて。

機械学習:パラメーターと変数について

IT業界で機械学習プロジェクトなどで、インフラ系エンジニアと会話すると、普通に正しく理解せずに、パラメーターという言葉を使う人が多いように感じます。機械学習で、パラメーターと説明変数、目的変数がごっちゃにつかわれて、すべてをパラメーターとして表現する人をみかけます。

 

たとえば、野球場でビールが何本売れるかを予測することを考えます。

例えば、

ビールの販売本数= A × 観客数 + B x 気温 + C

というシンプルな重回帰モデルを仮定します。

 

この時に、A,B,Cがパラメータで、分析者が計算・推定するもので、

観客数や気温は、説明変数としてインプットするデータ、ビールの販売本数は目的変数としてインプットするデータです。

インプットデータをもとに学習して、パラメータであるA,B,Cを推定する(数学的なアプローチで算出する)わけですが、すべてをいっしょくたにして、インプットデータである、観客数や気温をパラメーターと呼ぶ人がいますので注意が必要です。

 

ちなみに、ディープラーニングで学習する際に、各変数へのインプットデータ以外に、内部で使うアルゴリズムの仕様を決める値を事前に決める必要があり、それらをハイパーバラメーターと呼びます。一般に、これの最適値を数学的に求めることは困難で分析者が決める必要がありますが、トライ&エラーの繰り返しとなります。