Aikido

SaaSスタートアップのCTOは、開発スピードとセキュリティのバランスをどうとるか?

ウィレム・デルベールウィレム・デルベール
|
アイテムが見つかりませんでした。

過去のSaaS企業からの学び

一般的なSaaSスタートアップでは、開発チームが新機能の提供に大きなプレッシャーを受けていることがよくあります。通常、資金力のある競合他社がいたり、契約を締結するために最後の機能を要求する営業チームがいたり、バグ修正を要求するカスタマーサポートチームがいたりします。より大規模なエンタープライズ顧客が要求するか、取締役会が上層部から課さない限り、セキュリティを優先することは難しい場合があります。

ほとんどのスタートアップでは、あらゆる技術プロファイルが揃っているわけではないかもしれません。まだ専任のプロダクトマネージャーがいないかもしれませんし、開発チームに専任のセキュリティ責任者がいない可能性が高いです。提供にプレッシャーを受けている開発チームは、セキュリティに関しても多くの手抜きをせざるを得なくなるでしょう。

私は3つのアーリーステージSaaSスタートアップ(Teamleader、Officient、Futureproofed)のCTOを務めてきました。以下に、過去のSaaS企業での経験から得た学びをまとめました。

車輪の再発明を避ける

良い例として、パスワードによるログインシステムを構築しないことです。確かに数日で構築できますが、将来的にそれを維持し、高度な保護機能を追加するためのコストは非常に高くなります。Gmailのようなシングルサインオン経由でのログインを利用するか、Auth0.comのようなサービスを利用することを検討してください。これにより、よりスムーズで機能豊富なログイン体験が得られるだけでなく、ログインに関連するあらゆる種類のセキュリティ側面(ブルートフォース攻撃、サードパーティサービスでのユーザー認証情報の漏洩、アカウント乗っ取り攻撃の回避と検出、メールアドレスの検証、ログ記録など)について心配する必要がなくなります。

最終的に適切なベンダーを選択すれば、攻撃対象領域を削減するだけでなく、より価値のある機能に費やす時間を確保できます。

数週間または数ヶ月の時間を節約できる他の優れた例としては、以下が挙げられます。

  • クレジットカード情報を保存せず、Stripe、Mollie、Chargebeeのようなサービスを利用する
  • MySQL、PostgreSQL、ElasticSearchのような複雑なソフトウェアを自分で運用せず、RDSのようなマネージドクラウドサービスを利用する。
  • 独自のロギングシステムを構築せず、SentryやPapertrailのようなシステムを利用する(ただし、機密データをそこにログ記録しない)。
  • 独自のメール(SMTP)サーバーを運用せず、SendgridやMailgunのようなマネージドサービスを利用する
  • WebSocketサーバーを構築せず、Pusher.comのようなマネージドサービスを利用する
  • 独自のフィーチャーフラグシステムを構築せず、Launchdarklyのようなサービスを利用する
  • 独自のカレンダー連携を構築せず、cronofy.comのようなツールを利用する
  • 一般的に連携を構築する際は、Apideckのようなその分野のUnified APIを確認してください。

危機コミュニケーション体制に時間を投資する

顧客と話すためのチャットアプリケーション、あるいはより良い方法として、問題を伝えることができるマネージドステータスページやTwitterアカウントなどのツールをセットアップしておくようにしてください。何か問題が発生した場合、危機時に問題解決に集中する間、会社の他のメンバーが顧客とコミュニケーションできるようにすることは良い習慣です。

グローバルなガードレールを追加する

開発者からのプルリクエストをレビューされていることでしょう。素晴らしいです!保守性、パフォーマンス、機能性についてレビューするだけでもかなりの作業です。セキュリティについてもレビューする時間はありますか?もちろん、いくつかのリスクはカバーできるでしょうが、ガードレールとグローバルな設定を追加することで、一部のリスクを回避できるのは良いことです。

時には幸運にも、特定の問題に対するグローバルな修正が存在することもあります。

  • nodeJSを使用しており、プロトタイプ汚染について考えるのが好きではない場合、この種の攻撃をアプリケーション全体で無効にするためにプロトタイプをフリーズすべきです。Aikidoは、これを実行するプルリクエストを自動的に作成できます。
  • SQLを使用しており、SQLインジェクション攻撃を懸念している場合(懸念すべきです)、アプリケーション全体を保護するためにWAF(AWS WAFなど)やRASP(Datadogのアプリセキュリティなど)を使用できます。
  • 多くのXSS攻撃を発見している場合、ブラウザに非常に厳格なCSPポリシーを導入することで、それらの大部分を排除できる可能性があります。
  • 顧客からの入力に基づいて多数の外部リクエストを行っている場合、SSRF攻撃に対して脆弱である可能性があります。これを完全にブロックすることは難しいかもしれませんが、IMDSv1攻撃によるAWSのIAM認証情報へのアクセスなど、より深刻な事態に発展しないようにすることで、損害を軽減できる可能性があります。Aikidoは、デフォルトでAWSクラウド内のこれを監視します。
  • オブジェクトストレージを扱う際、Pickle、XML、JavaやPHPにおける(デ)シリアライズなどの特定の種類の関数を避け、JSONのようなシンプルなストレージオプションを選択することで、安全でないデシリアライゼーションに関連する多くの典型的なエクスプロイトを回避できます。Aikidoは、デフォルトでコードベース内のこれらの種類の関数を監視します。
  • CDNまたはキャッシュメカニズムを使用している場合、あらゆる種類のキャッシュポイズニング攻撃を回避するために、静的アセットには個別のCDN設定を持つ別々のドメインを使用してください(ChatGPTも最近この問題に遭遇しました)。

この簡単なトリックで開発者を教育する

プロセスに実装できる簡単なハック(しゃれですが)があります。スプリント計画中に開発チームに尋ねるべき簡単な質問が1つあります。

構築している機能はどのようにハッキングされる可能性がありますか?(そして、それをどのように防ぐことができますか?)

開発チームがすべての潜在的な悪用シナリオを予測できるわけではありませんが、この方法は非常に簡単にスケールできます。これは、開発者が開発作業に着手する前にセキュリティ上の考慮事項を確認するよう促す、小さな追加ステップです。

コードベースの異なる部分に優先順位を割り当てる

すべてがハッカーにとって大きな標的となるわけではありません。ハッカーが好んで標的とする主要なコンポーネントは次のとおりです。

  • 支払いシステム、ウォレット、クレジットシステム
  • SMSやVoIP(Twilioなど)のような高価なAPIに接続する機能
  • パスワードリセット、ログインシステム、ユーザー招待
  • PDF、Excelなどのエクスポート機能、および危険な操作を実行する可能性のあるエクスポート
  • ファイルや画像のアップロードに関連するもの
  • Webhookなど、設計上アウトバウンドリクエストを行う機能
  • メールを送信するあらゆる種類の機能、特にパーソナライズされたコンテンツを含むもの

PS: Aikidoは、各コードベースにリスクレベルを割り当てることで、スタートアップの環境における主要なリポジトリにのみ焦点を当てるのに役立ちます。

人的側面も忘れないでください。

小規模スタートアップのCTOとして、通常、運用セキュリティも担当します。チームがアカウントを保護するための手段を提供してください。2FAにはハードウェアYubikeyまたはソフトウェアアプリを使用するよう徹底し、可能であれば強制してください。Gmailのようなツールでは、これを強制できます。これはフィッシング攻撃に対する優れた第一線の防御策となります。

セキュリティ対策の最新状態を維持することは困難です。

ソフトウェアへの新たな攻撃について学ぶことは困難です。使用している言語(Python、Node、Goなど)の更新やOSのパッチ適用、オープンソースパッケージにおける一般的なエクスプロイトを追跡するだけでも大変です。特定の攻撃は時間とともに普及するため、トレンドを追うことは重要です。例えば、昨年サブドメイン乗っ取り攻撃の増加に気づいた後、Aikidoはそのリスクを防止し、これらのDNSレコードの監視を自動化するためにサブドメイン乗っ取り監視ツールを導入しました。

自動化しましょう。

以前の会社では、セキュリティ担当者が定期的なセキュリティタスクを含むカレンダーを作成することで、次のレベルのセキュリティを目指していました。四半期ごとにすべてのアプリケーションのアクセスレビューを実施し、数週間ごとにコードの漏洩したシークレットのスキャンを行い、毎週金曜日にオープンソースパッケージのCVEをクリーンアップし、定期的にSASTスキャンを実行し、毎月サブドメイン乗っ取りのDNSレコードを確認するなどです。これらのタスクの出力は、トリアージして開発者にとって実行可能にするのが困難でした。さらに悪いことに、この担当者が会社を辞めた際、多くの専門知識が必要だったため、他の誰もこれらのタスクを引き継ぐのが困難でした。

ここからAikidoのアイデアが生まれました。私たちは、上記のすべてを自動化し、ノイズを除去し、開発者の皆様にSlackやJiraでタスクを提示するソリューションが必要でした。

今すぐAikidoでコードとクラウドのスキャンを開始しましょう。こちらからサインアップして、無料でスキャンを開始してください。

4.7/5

今すぐソフトウェアを保護します。

無料で始める
CC不要
デモを予約する
データは共有されない - 読み取り専用アクセス - CC不要

脅威に関するニュースを購読する。

今すぐ安全な状態を実現します

コード、クラウド、ランタイムを1つの中央システムでセキュアに。
脆弱性を迅速に発見し、自動的に修正。

クレジットカードは不要です | スキャン結果は32秒で表示されます。
アイテムが見つかりませんでした。