Quantcast
Channel: ウィリアムのいたずらの、まちあるき、たべあるき
Viewing all articles
Browse latest Browse all 7267

さよならパスワード!とか、iosセキュアコーディングとか

$
0
0
3月23日JSSEC セキュアコーディングデイに行ってきた!その内容をメモメモ

ちなみに会場では、

Android アプリのセキュア設計・セキュアコーディングガイド
https://www.jssec.org/dl/android_securecoding.pdf

の本が配られた



■あいさつ
・内容紹介



■Windows10MobileのセキュリティとAzure連携アプリにおけるセキュリティ
・自己紹介
・アジェンダ
  マイクロソフトのミッションと日本市場におけるコミットメント
 Mobile
 Azure

・マイクロソフトのミッションと日本市場におけるコミットメント
 ビルゲイツが掲げたミッション家庭にコンピューターはもう達成した
   クラウド
   Windows10
 日本マイクロソフト
   喜んで→Wordpressを使ってもらうハンズオンセミナー

 プロダクティビティ
 機械学習
 Windows10
 →あとで公開

・Windows10+モバイル
 プラットフォームでセキュリティを確保する
 Windows10強化ポイント4つ
  1.Windows as a Service(10分の1くらい)
    XP,7,8,10いままでは1つのOSを時間をかけて
    Windowsもクラウドのように:メジャーを1回、マイナー2回バージョンアップ
    WaaSと呼んでいる
   Windows10・・・ワンコア

  2.3.セキュリティとマネジメント
    ポイント:Azure Active Directory

  4.UWP
     あらゆるデバイス、1つの開発プラットフォーム

セキュリティ
 さよならパスワード!持ち出し禁止はもう古い!
   次世代型認証
    Hello,passport
   盗まれたデータも安心
    レッドストーンの中にエンタープライズデータプロテクション
   マルウェアの侵入を許さない 

Microsoft Passport
 Azure Active Directory:Office365の認証基盤
   →TPM
 Windows Hello:生体認証
   顔認証によるモバイル
 乱数による本人確認
 虹彩、指紋も

エンタープライズデータ保護
 EDPで暗号化
 端末から出て行ったデータも

モバイル&クラウドのデバイス管理が充実
 MDMの機構
 Azure Active Directoryに参加するとオンプレミスと併合して管理できる

ストアで配信
 →企業内で配布:Business Store
   要件が2つあるらしい(ごめん、メモれなかった)

ユニバーサル ウィンドウズ プラットフォーム(UWP)
・すべてのクライアントOSを共通化
  ほろれんず、XBOXも
・Windows One Core
・ほろれんず 3000ドルとかするが、エミュレーターが出る
・れすぽんしぶる、あだぷてぃぶ、てーらーど
  れすぽんしぶる:変わる
  あだぷてぃぶ:IF文で切り替える→UWPはこれXAMLも
  てーらーど:デバイスにかすたまいず
・こんてぃにゅー(Continuum)

Microsoft Azureとの連携におけるセキュリティ
・世界最大のインフラ
・コンピューティング Webサービス、PHP
・IaaS:Linux30%
 基盤として使える
・Mobile Apps:MBaaS
・Azureのポータルサイト
  →アクセスすると、電話かかってくるってこともできる

・データセキュリティ
 ソーシャルID,Active Directory

Microsoft Azure Active Directoryとの連携

・UWPプッシュ通知アーキテクチャ

まとめ
・Windows10モバイルはプラットフォームでセキュリティ確保
・アプリのコーディングはシンプルにセキュア可が可能

ホワイトペーパー



■Androidアプリと鍵管理―これからの鍵管理の話をしよう
・自己紹介
・あじゃんだ
  鍵管理のおさらい
  Android6.0の鍵管理
  そのさき
・鍵管理のおさらい
 暗号技術って何のために必要
 暗号技術使ってますか?

・使い際には、どんなことに気をつける
  正しいアルゴリズムを使用する
  鍵を安全に扱う

・参考:正しいアルゴリズムを使用する
 →政府機関;推奨するアルゴリズムのリストを出している

・鍵を安全に扱う
  ライフサイクル:各フェーズで安全に

・どこで使用するか(暗号処理)
  ソフトウェア耐タンパ
  ハードウェア耐たんぱ:TEE,TPM

・誰が使用するか(使用制限)
  アプリ単位
  機能単位
  ユーザー単位

・どこに保存するか
  記憶による保護(ユーザーさんに覚えてもらう)
  APKファイルに埋め込み
  ファイルに保存:アクセス権
  ハードウェアによる保護

・暗号処理、保存
  費用もきになる
 使用制限
  やっぱパスワード?実装大丈夫

・こんなニュースも
 ルート化マルウェアのリスクもゼロではない!!

・安心してください
  Android Key Storeがありますよ!

・Android Key Store
  鍵の管理
  対応アルゴリズムの拡張

 ライフサイクルにあてはめると・・

・特徴
 鍵ごとの使用方法期限制限
 暗号ライブラリとして使用可能
 鍵使用時のユーザー認証
 ハードウェアによる保護:注意必要

・鍵ごとの使用方法・制限・期限
 keyProtection/KeyGenParameterSpec

・暗号ライブラリとして使用可能
  AES,HMAC、RSA(強度高い)
 →アルゴリズムの充実

・鍵使用時のユーザー認証
 鍵を使用する毎に毎回認証する
 一定時間

・指紋認証による鍵の使用制限
 ログインに使用

 前提条件
  指紋認証機能が付いている
  画面ロックが設定されている
  指紋が登録されている
 処理の流れ
  準備
   さいふぁーおぶいぇくとにキー
  認証の開始
  暗号処理

・FingerPrint Architecture
 プロセス3段階

・注意事項
  鍵の無効化 結びついたものにあらたに追加、むすびつき0
   →考慮して実装
  指紋認証の弱い点を考慮する
   指紋認証だけに頼らない

・画面ロックによる鍵の使用制限

 プログラム 指紋認証との違い
  前提
   有効時間指定
  認証処理との開始

GateKeeper Architecture

AndroidKeyStoreにおける鍵のハードウェア保護
・ハードウェア保護TEE
・可用性は

Android Nの追加機能
・Key Attestation
 生成した鍵がハードウェアで守られていることを、第三者が検証できる仕組み
   証明書で検証
   ふぁいど

・On-body detectiom
 ユーザーが端末を携帯している間は、鍵の仕様を有効に保つ

・鍵の有効性の制限(指紋認証)

・おわりに
 鍵管理、暗号処理はAndroidKeyStoreで行うことが一般的になるかもしれません。



■iosアプリのセキュアコーディング入門
・自己紹介(SRAのひと)

・iosの安全神話
 ほん:ほとんど見当たらない。セキュア開発の話題も
 背景
  iosは安全というイメージ
   Androidが悪目立ちしていた(している)
   →「Androidは危ない」というニュース
   Androidのシェア多い→攻撃ターゲットになること多い
  →Appleが審査してるから安全なんでしょ?
  →AppStoreの審査は脆弱性診断ではない

・AppStoreの審査は脆弱性診断ではない
 迷惑アプリ、既知のウィルスは積極的に排除
 App Store Review Guideline
  脆弱性についての記載はない

・iosの脆弱性報告数は増加傾向
 プラットフォーム別でMacOSとiosでわんつーふにっしゅ

 Charlie Miller事件
  わざと脆弱性を持つアプリを作って提出したら審査通った
 XcodeGhost
  改造版Xcodeがいきわたった。コアサービスの一部がバックドア
 →iosは安全というイメージは捨てたほうがいい

・アプリの安全性は開発者の責任
 appleおセキュアコーディングガイド
 appleのSecure Cording Guide
  iosだけではないが。日本語版もある

 →iosのAPには落とし穴がたくさんある
  iosアプリのぜい弱性の多くは
   APIの適切でない選択
   APIの危険な使い方
  に原因
  →APIの特性を理解したうえで、安全を意識した開発が不可欠

・iosアプリのセキュアコーディング
 本日のトピックス
  アプリ間連携
  HTTPS通信のサーバ証明書検証

・アプリ間連携
 iosでのアプリ間連携
  Custom URL Scheme
  Pasteboard
  の2つを今日は取り上げる(ほかもある)

・Custom URL Scheme
 URLの文字列を相手方アプリに渡す
  URLスキームをOSに登録
  URLを書いてコールする

 注意点1:
  どんなアプリから呼び出される可能性もある
   →わるいやつからも!
  呼び出した人チェック
  引数チェック→場合によれば無効化
  handleOpenURLは使わないほうがよい→自分を呼び出した人が分からないから

 注意点2:
  URLスキームハイジャッキング
  同じ名前で登録された時、なにを呼び出すかわからない(定義されていない)
  →他のアプリが横取り!

・Pasteboard
 コピー&ペーストで使われる、あれ!
 System PasteBoardとApp pasteboard
  うっかり、systempasteboardのインスタンスを作って。みんなで共有してしまう
 自作のアプリ間でデータ共有するときはAppPasteboardを使うべき
 →ただし、7より前では仕様違う
 他人のアプリとの共有はpasteboard以外を使うこと考える

 ユーザーにコピー、切り通りされたくない箇所では、コンテキストメニューから項目を消してしまおう

HTTPS通信時のサーバー証明書検証
・中間者攻撃(Man-in-the-middle attack)
  Wifiルーターが乗っ取られた場合

・ios sdkで用意されている代表的な通信系
 NSURLConnection
NSURLSession
Webview
 →バイパスするコードがある
 
 チャレンジを呼ぶ前に、バイパスするようによんでしまう
 リクエストにYES
 →非公開なので使わない(ググると見つかるけど)

 NSURLSession
  通信を確立:ちゃれんじ:くれでんしゃるを自分で作る→送られたの無視

 webView
  おなじものとおる

 wkwebview
  やはりおなじことできる

・なぜバイパスコードを書いてしまうのか
  デバッグにおれおれ証明書を使うこと多い
  →回避のため
 →検証用のコードがリリース版に入らないように
  この際、買ってしまう。無料の証明書など

・しかし、こんなケースも
 サードパーティ製広告モジュールの脆弱性

・iosセキュリティ関連書籍の紹介
 Hacking and securing iOS Applications
  マニアック?ペネトレーションテスト
 ios Application Security
  せんげつでた。9まで対応



■事例で学ぶセキュアコーディング
・自己紹介

・脆弱性診断とは
  セキュリティ上の問題個所があるかどうかを調べること

・スマートフォンアプリの診断
  Androidアプリ
  iosアプリ
  ゲームチート診断
 →ゲームアプリ多い
  最近のゲーム:ネットワーク使う→チートされると、金銭的影響、DOS攻撃
  →チート診断重要
 Android
  WebView
   クロスサイト、ローカルファイル、jS
 SSL
  デバッグログ
  SDカード
  データ共有機能アクセス制御
 
 iosも基本はAndroidと同じ
  SDカードは対象外だけど

 ゲームチート
  ゲームを優位に進めたりバランスを崩してしまう問題
   課金回避
   レアアイテムの取得
   ステータス、スコア、データ改ざん
   制約の回避
   なりすまし

・診断環境
 プロキシ
  Burp Suite
  端末とサーバー感の通信内容を確認するために使用
  root化した端末
   iptables等を使用して端末の通信をburpに飛ばす

 JEB Androidアプリ でこんぱいら
  apkファイルの静的解析のために使用
  APIが公開されている
  Javaやpythonでextension作成可能

  dec2jar

  にこらすさんが作ってる

apktool
 apkファイルをでコードしたり再ビルドするために使用

IDA(あいだ)デバッガ
 androidアプリの動的解析をするために使用

ILSpy(あいえるすぱい)
 .netアプリでこんぱいら
 unityアプリ→最近のゲーム

情報漏えい
事例1:恋愛ゲーム
  悪意あるアプリにより情報漏えい
    webViewを使用
    intentで受け取ったURLをWebViewに読み込ませる機能
    intentを受け取るアクティビティは公開されている
  →ローカルファイルにアクセスできないようにした・・・

SSLサーバー証明書検証不備
事例2:
 Unityで作られている
 API通信でサーバーとデータやり取り
 通信部分は.NETで実装
 どんなサーバー証明書でもtrueという実装

 ショッピング系アプリ
 一部の通信でサーバー証明書の検証無視
   →サードパーティ製のライブラリの中で
   →Githubで公開:先週確認したら、まだそのまま(無視)
 他の部分では、検証をちゃんとしている

パラメータ改ざん
事例3:
 ゲーム優位に
  スコア変更など→リクエストを改ざん
  アイテム使用時の処理の流れ→レスポンスのOK,NGを変える

改ざんチェックのバイパス
事例:
 リクエストにハッシュを付加して改ざん防止
 ハッシュはsha256
 簡単にロジックが判明(ヒント存在)

root化検知のバイパス
事例:
 root化した端末では起動できないように制限をかけているが
  分かりやすいクラス名、メソッド名
  →これらクラス、メソッドをバイパスするだけで制限を無効化

addJavascriptinterface
サーバー証明書検証不備とおないくらい

まとめ
・いまだに作りこむことが多い英訳性
 サーバー証明書検証不備
 セキュアコーディングガイドを熟読しよう!

Viewing all articles
Browse latest Browse all 7267

Trending Articles