🍵

30分でセキュリティを解決!?とりまセキュリティ対策を実現するTorimaとは

2023/11/12に公開

はじめに

こんにちは!学生団体 おちゃのこセキュリティkino-ma (牧野青希) です。

おちゃのこセキュリティは、 Web アプリケーションを攻撃から守るシステム Torima を開発しました。
Torima は、アプリケーションに とりま 設置するだけで、悪意あるアクセスを防いでセキュリティを向上することができます。

https://github.com/ochanoco/torima

この記事では、以下の観点から Torima についてご紹介させていただきます。

  • おちゃのこセキュリティが着目した問題
  • 問題を Torima がどう解くか
  • Torima の使い方

また、 別記事 でもさらに詳細なセットアップ方法を公開しています!

https://zenn.dev/ochanoco/articles/11f13b4319c54e

ぜひ最後まで読んでいってください!! 🙇

Web アプリケーションは攻撃者にさらされている

🤔 みなさん、 Web アプリのセキュリティ対策してますか? 🤔

Web アプリケーション開発者がサービスを公開する上で、セキュリティの問題は避けることができません。
インターネットには悪意ある攻撃者や bot であふれており、残念ながら公開サービスへの攻撃が耐えることはないのです。

実際、我々が実験的に公開した Web アプリケーションでは、二週間余りで 400件近く の悪意あるアクセスが観測されました 😱

こんな世界では、サービスを守るためにセキュリティを向上せざるをえません。

しかし我々は、 開発者自身がセキュリティを万全に保ち続けることは現実的ではない と考えています。

それは何故でしょうか? 🤔

開発者自身のセキュリティ対策にも限度がある

Web アプリケーションを開発しようとする人 全員がせキュリティに精通している とは限りません。
対策をしたくても、実際にどんな攻撃があり得るのか想像するのは難しいでしょう。

そしてその問題は、 学生等の個人開発 でより顕著になります。

プログラミングを勉強中の身であれば、 まだセキュリティを学んでいない 可能性があります。
あるいは、セキュリティ向上に手間を割かず、楽しい機能開発を優先したくもなるでしょう。
(筆者もそうです! 😱)

セキュリティを向上するためにもコストがかかる

セキュリティを考慮しながら開発すると、どうしてもコストがかかってしまいます。

セキュリティ上の問題を回避するために追加の手間が生まれたり、診断ツール・サービスにお金が必要だったりもするでしょう。

仮に脆弱性に気づいていても、全てに対策することは現実的ではありません 😢

セキュリティサービスにも漏れがある

そういった問題なしに簡単にセキュリティを向上するシステムとして、 WAF が有名です。

しかし、それにもやはり限界があり、すべての攻撃を防ぐことはできません。

たとえば AWS WAF では、リクエストをブロックする ルールは開発者が指定する ようになっています。

すると、サービスによっては不十分なルールとなってしまったり、逆に過剰にブロックしすぎてしまう可能性もあります。
そして、先述した通り開発者によってセキュリティ知識が異なるために、必ずしも適切なルールを指定できるとは限らないでしょう 😢

Torima が実現する世界

このように、 Web アプリケーション開発では 攻撃を防ぐ のは難しいことです。

そこで我々 おちゃのこセキュリティ が開発したのが、 Torima です。

Torima は、 ユーザに LINE Login を要求する ことで、 Web アプリケーションのセキュリティを向上させます。

Torima の動作フロー
Torima の動作フロー

Torima は、簡単にセキュリティを向上させるために、たくさんの特徴を備えています 💪

特徴1: サービスへの適用が簡単

Torima は、 Docker で動作するリバースプロキシです。

詳しい使い方は後述しますが、 Docker コンテナを立てるだけで みなさんも 簡単に設定することができます!

特徴2: 簡単にユーザを認証できる

Torima にプロキシされたリクエストは、 LINE Login で認証された状態で送られてきます。

開発者は、その LINE ID を使うことで簡単にユーザ認証を実現できます。

認証機能を自前実装をする手間が省ける上に、セキュリティ向上も期待できます! 💪

Torima のユーザ認証機能
サービスはヘッダ内の LINE ID を読むだけでユーザを認証できる

特徴 3: bot による無差別な攻撃を防げる

実は、インターネット上の悪意あるアクセスのほとんどは、 bot による無差別なスキャン です。
既知の脆弱性を不特定多数のサービスに対して試すことで、実際に攻撃するサービスを選ぼうとしているのです。

おちゃのこセキュリティが行なった実験では、悪意あるアクセスの ほぼ 100% が自動化されたスキャンでした 😱

こうしたアクセスは LINE Login を行わないため、 Torima によりブロックされます
したがって不正なリクエストはサービスまで到達しません。
仮にサービスに実在する脆弱性を突かれていても、攻撃に至ることはないのです。

LINE Login により bot がブロックされる様子
LINE Login を求めるだけで bot はアクセスできない

特徴 4: 攻撃者のリスク・コスト向上、攻撃を抑止

サービスに送られたリクエストには、攻撃者の LINE アカウント情報が結びつくようになります。
この LINE アカウントには電話番号が紐づいているため、正当な手続きを踏めば攻撃者の個人情報を開示できる可能性があります。

このことは、単に攻撃元の特定が可能になるだけにとどまらず、 攻撃がバレた時のリスク が肥大化することも意味します 💀

個人が特定されると 訴訟等の莫大なデメリット が発生します。
攻撃者視点では、このリスクを避けるために攻撃を控えざるを得ません。

攻撃者が LINE アカウントを元に追跡される様子
正当な手続きを経て攻撃者を特定できる可能性がある

そして、一度攻撃してきたユーザは、 LINE アカウントごとブロックされることになります。

攻撃を繰り返すためには新しい LINE アカウントが必要となるわけですが、それには 新しい日本の電話番号が必要 です。
電話番号を用意するための多大な手間も、 攻撃の抑止 につながります 🚫

攻撃者が攻撃を繰り返す手間を示した図
大量に電話番号を用意するのは困難です

Torima を使うためには

ここまでで Torima に興味を持っていただけた方、 ご安心ください
Torima の使い方は 🎉 とても簡単かつシンプル 🎉 です!

以下の三つをご用意いただければ、 Torima を使ったサービスは簡単にデプロイできます。

  • Docker Compose
  • Torima 設定ファイル
  • Docker 化されたあなたのサービス

また、既存のサービスに適用することもシンプルな方法で可能です! 👍

詳細なセットアップ方法は Torima リポジトリ をご覧ください。

https://github.com/ochanoco/torima

また、 デモ実装公開 しています
具体的な動作イメージを掴んでいただけると思います! 🙌

https://github.com/ochanoco/torima-demo

そして、デモ実装を使ってローカルに Torima を立ち上げる方法も、以下記事で解説しています!
Torima の簡単さが伝わる記事になっていると思いますので、是非あわせてご覧ください 🙌

https://zenn.dev/ochanoco/articles/11f13b4319c54e

おわりに

Web アプリケーションのセキュリティ を簡単に向上させるために我々 おちゃのこセキュリティ が開発した、 Torima についてご紹介しました。

その 特徴は主に3点 あります。

  • 簡単にサービスに適用可能 👍
  • LINE Login により攻撃を抑止&ブロック 👍
  • サービスに認証機能を提供 👍

これらの特徴により、新規・既存の Web アプリケーションを保護し、 誰でも セキュリティを向上させることができます! 🎉

興味を持っていただけた方は、是非まずは使ってみてください!!

また、 Torima のソースコードも公開しています!
スター ⭐️ 押して頂けますと大変励みになるので、是非よろしくお願いします 🙇

https://github.com/ochanoco/torima

また、 別記事 で Torima の詳しい使い方もご紹介していますので、興味のある方は是非ご覧ください!

https://zenn.dev/ochanoco/articles/11f13b4319c54e

最後まで読んでいただき、ありがとうございました 😊

Discussion