Slide 1

Slide 1 text

©MIXI 増え続ける公開アプリケーション への悪意あるアクセス。 多層防御を取り入れるSRE活動。 2023/09/29 開発本部CTO室SREグループ 吉井 亮

Slide 2

Slide 2 text

©MIXI 2 自己紹介 吉井 亮 (YOSHII RYO) ● 経歴 HWエンジニア → 中小SIer → ERPコンサル → AWS パートナー → 株式会社MIXI ● Community OpsJAWS (AWS Community Builder) ● 好きな言葉 No human labor is no human error. Follow Me https://my.prairie.cards/u/YoshiiRyo1

Slide 3

Slide 3 text

©MIXI 3 ご参加いただきありがとうございます ❏ 話すこと ❏ 公開 Web アプリケーションのセキュリティ対策 ❏ 担当者として備えておくべきこと ❏ 話さないこと ❏ 具体的な設定や手順 ❏ 特定製品の紹介や宣伝 ※ 本セッションで紹介するシステムは架空のものです。 発表者の実体験に基づいていますが、実在はしません。

Slide 4

Slide 4 text

©MIXI 4 サイバー攻撃の脅威 株式会社サイバーセキュリティクラウド社のレポートによると、 サイバー攻撃は年々大幅な増加傾向にあると記されています。 • 1秒間に17回もの攻撃を検知。 • 攻撃元IPは1位がアメリカで49%、2位は日本国内からで20%に。 • 攻撃種別として最も多かったのは、Webサーバを構成するソフトウェアの脆弱性に対して無差別に 行われる単純攻撃の“Web attack”が全体のおよそ44%。引き続き“SQL injection”も顕在してお り増加傾向。 https://prtimes.jp/main/html/rd/p/000000316.000009107.html

Slide 5

Slide 5 text

©MIXI 5 Top 10 Web Application Security Risks OWASP TOP 10 https://owasp.org/www-project-top-ten/ Broken Access Control アクセス制御ポリシー設定のミス Cryptographic-Failures 暗号化の欠落、不適切な使用 Injection データ入力検証、受け取り方式の不備 Insecure Desgin 設計やアーキテクチャの欠陥 Security Misconfigration アプリケーションの設定ミス、古いバージョン Vulnerable and Outdated Components 脆弱なコンポーネント、依存関係も含む Identification and Authentication Failures 弱い認証認可 Software and Data Integrity Failures 意図しないソースからコード/データ取得 Security Logging and Monitoring Failures 攻撃を検知できない Server-Side Request Forgery リモートソース取得の際の検証不備

Slide 6

Slide 6 text

©MIXI 6 NIST Cybersecurity Framework Ver. 1.1 IDENTIFY サイバーセキュリティリスクの管理に必要な理解を深める PROTECT 適切な保護対策を検討し、実施する DETECT サイバーセキュリティイベントのタイムリーな発見 RESPOND 対処するための適切な対策を検討し、実施する RECOVER 機能やサービスを元に戻すための適切な対策を検討し、実施する https://www.nist.gov/cyberframework

Slide 7

Slide 7 text

©MIXI 7 S Security R Reliability E Engineering

Slide 8

Slide 8 text

©MIXI 本題

Slide 9

Slide 9 text

©MIXI 9 今日の合言葉 城の中の王様を守る

Slide 10

Slide 10 text

©MIXI 10 多層防御 城の中の王様を守る 一つセキュリティ対策だけで満足せずに全てのレイヤーで防御策を講じることをお勧めします。 • アプセトネデブ • エッジ (L7、L4) • サーバー (サービスを提供するものの意味、物理、仮想、サーバーレス、コンテナ問わず) • DB、キャッシュストア • コード、CI/CD パイプライン • CSPM(Cloud Security Posture Management) • 管理アクセス • 物理的

Slide 11

Slide 11 text

©MIXI 11 多層防御 城の中の王様を守る 全てのドメインで対策を講じることをお勧めします。 • サービス ドメイン • クラウドアカウント、IAM パーミッション、リソースメタデータ、ビリング、その他 • インフラストラクチャ ドメイン • コンピュート上のプロセスやデータ • ネットワーク関連のアクティビティ • アプリケーション ドメイン • アプリケーションまたはコード

Slide 12

Slide 12 text

©MIXI 12 多層防御 Registry DB Apps LB WAF WAF CDN Static Contents CSPM VCS Deploy Build CI/CD Pipeline 監視通知 Backup 善良なユーザー 悪意のある アタック Administrator Developer

Slide 13

Slide 13 text

©MIXI 13 エッジ Registry DB Apps LB WAF WAF CDN Static Contents CSPM Deploy Build CI/CD Pipeline 監視通知 Backup 善良なユーザー 悪意のある アタック Administrator Developer VCS

Slide 14

Slide 14 text

©MIXI 14 エッジ Distributed Denial of Service Attack 対策 (DDoS、分散型サービス拒否攻撃) ● L3/L4 ○ クラウドベンダーが標準機能でブロック ● L7 ○ WAF ○ CDN ● WAF ○ Rate-based ○ IP reputation list, Deny list ○ Rules, Intelligent threat mitigation ○ 有償の高機能サービス

Slide 15

Slide 15 text

©MIXI 15 エッジ Distributed Denial of Service Attack 対策 (DDoS、分散型サービス拒否攻撃) ● CDN ○ 一般的に POP が多く DDoS の悪影響を分散できる ○ TCP 接続を開いたままにしたり、極端に遅い接続を自動的に遮断 ○ 地理的制限 ● 負荷分散、オートスケール ○ 想定していないアクセス増を捌くアーキテクチャ ○ エッジというよりオリジンの話

Slide 16

Slide 16 text

©MIXI 16 エッジ Exploits 対策 ● WAF の利用 ○ ベンダー提供のマネージドルール、自身で管理するカスタムルール ○ ログを保管 ○ 最初は検出モードでスタート ■ ログを確認しながら過検知誤検知が無いことを確認する ■ 過検知誤検知が無ければ防御モードへ変更 ■ 過検知誤検知があれば除外設定やカスタムルールを駆使してそれらを減らしながら防御モードへ ○ ログの確認、除外設定、カスタムルールのアップデートは定期的に実施する

Slide 17

Slide 17 text

©MIXI 17 エッジ 一般的なセキュリティ対策 ● HTTPS 強制 ○ かつ、古い TLS バージョンは許可しない ● セキュリティヘッダーの追加 ○ Strict-Transport-Security, Content-Security-Policy, X-Content-Security-Policy, X-Frame-Options, X-XSS-Protection ● オリジンの秘匿 ○ 直接オリジンへアクセスさせない

Slide 18

Slide 18 text

©MIXI 18 エッジ 悪意のある攻撃に対して 403 を返すことが大切です。 1. 無作為攻撃で穴を探してくる 2. 穴が見つかったらその穴に対して様々な攻撃をしかけてくる 3. その穴に対して複数 IP アドレスから攻撃がくる a. 弱いサイトを共有してる? b. ツールを使って複数の拠点から攻撃してる? 一方で、403 を返すと攻撃が減ります。 毎日毎時毎分のように仕掛けられていたサイトを対策したら、パタっと攻撃が止まったことがあります。

Slide 19

Slide 19 text

©MIXI 19 Apps Registry DB Apps LB WAF WAF CDN Static Contents CSPM Deploy Build CI/CD Pipeline 監視通知 Backup 善良なユーザー 悪意のある アタック Administrator Developer VCS

Slide 20

Slide 20 text

©MIXI 20 アプリケーションをホストから分離 ● VM ○ 不要なミドルウェアのアンインストール ○ 不要なサービス、デーモン、プロセスの停止 ○ ハードニングしたマシンイメージの使用 ● コンテナ ○ H/W、OS 層をサンドボックス化 ○ 非特権モードで稼働 ○ ReadOnly Root-Filesystem ● サーバーレス、FaaS ○ コード以外のセキュリティ対策をクラウドベンダーへオフロード

Slide 21

Slide 21 text

©MIXI 21 DB は最重要 ● 機密情報は DB に保管 ○ ログに出力しない ● アクセス権を限定 ○ アプリの DB ユーザー → アプリで必要なテーブルのみ ○ 管理者アクセス → 接続元の限定、GUI 便利ツールの利用は避ける ● バックアップ・リストア ○ DB ダンプやスナップショットのアクセス権を厳格に ● クレデンシャルは強度の高いパラメータストアへ ○ コードに書くのはもってのほか ○ ini ファイルもありえない

Slide 22

Slide 22 text

©MIXI 22 WAF があれば大丈夫? WAF を前段に設置していても、アプリケーションの根本的な脆弱性対策はすべき。 ● WAF が攻撃の100%を防ぐことはできない ○ 難読化 ■ ${jndi:ldap://hogehoge} ■ ${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:l}da${lower:p}}://hogehoge} ○ ゼロデイ ● WAF の誤検知・過検知はある ○ アプリケーションから見ると正当なリクエストでも WAF ルールで検出されてしまう ■ 除外ルールで回避、しかしここを突かれる ○ マネージドルールの良い面でもあるし悪い面でもある

Slide 23

Slide 23 text

©MIXI 23 最新バージョンの利用 OS、ミドルウェアは常に最新バージョンを利用します。 ここでもコンテナ、サーバーレスの優位性が発揮されます。 ● 前提としてミドルウェアの特定バージョンに縛られないコード ● Dockerfile FROM ○ セキュリティパッチが適用されたイメージを使用 ● サーバーレス、FaaS ○ ランタイムバージョンの最新化

Slide 24

Slide 24 text

©MIXI 24 パイプライン Registry DB Apps LB WAF WAF CDN Static Contents CSPM Deploy Build CI/CD Pipeline 監視通知 Backup 善良なユーザー 悪意のある アタック Administrator Developer VCS

Slide 25

Slide 25 text

©MIXI 25 Shift Left, Security by Design ソフトウェア開発ライフサイクルの早い段階でセキュリティ問題に対処。 • Sec チームのレビュー • 自動的な SAST、DAST • 定期的なペネトレーションテスト、セキュリティテスト • 開発者を含めた勉強会 設計 開発 テスト リリース 従来

Slide 26

Slide 26 text

©MIXI 26 その他 Registry DB Apps LB WAF WAF CDN Static Contents CSPM Deploy Build CI/CD Pipeline 監視通知 Backup 善良なユーザー 悪意のある アタック Administrator Developer VCS

Slide 27

Slide 27 text

©MIXI 27 人的ミス 実際にあった(かもしれない)怖い話 • DocumentRoot で git clone • wp-config.php が野晒し • Public Repo に認証情報 • Self-host Git 系サーバーの古いバージョンを使い続けて脆弱性を突かれる • RDP/SSH ポートは全世界公開 • メンバー交代が年1回あるから ID/パスワードは共用 • 「いつか使うかもしれない Admin ユーザー」が2年以上未ログイン • P@ssw0rd

Slide 28

Slide 28 text

©MIXI 28 CSPM (Cloud Security Posture Management) クラウドサービスの各種設定がセキュアであることの管理。 セキュリティリスクとなりうる設定を早期に発見し修正します。 ● クラウドベンダーが提供するもの ● セキュリティベンダーが提供するもの ● 自身で独自ルールを作り運用することも可能 ● NIST、CIS、PCI-DSS などのフレームワークに準拠していると良い ● 自動復旧までセットで導入したい ○ 例)特定のポートを開けてしまった → セキュリティグループ閉じる

Slide 29

Slide 29 text

©MIXI 29 モニタリング 攻撃されていることに気が付かないような事態は避けたいところです。 異変を察知し迅速な対応がとれるよう恒常的なモニタリングを行います。 ● 利用料金の異常な増加 ○ 乗っ取られて高価なインスタンス使われていないか? ● Cloud API 利用の異常な増加 ● パブリックな設定変更 ● 大量のログイン試行

Slide 30

Slide 30 text

©MIXI 30 ロギング フォレンジック調査のためにセキュリティイベントは悪意あるなしにロギングします。 ● アプリケーションアクセスログ ● エッジアクセスログ ● WAF ログ ● DB 監査ログ ● Cloud API 監査ログ

Slide 31

Slide 31 text

©MIXI 31 正常な状態にすぐ戻せる もし万が一、悪意のある攻撃を受けてしまい、リソースが乗っ取り/侵害された場合、 即時の復旧を達成するためにバックアップを定期的かつ高頻度で取得しておきます。 一度侵害されたリソースはその原因と思わしきプロセス/ファイル/データを取り除いたとしても 使い続けるべきではありません。 侵害される前にリストアし対策を施してから運用に戻します。

Slide 32

Slide 32 text

©MIXI