過去のSaaS企業から学んだこと
典型的なSaaSスタートアップでは、開発チームは新機能を提供しなければならないという重圧にさらされている。通常、資金力のある競合他社が存在し、営業チームは契約をまとめるために最後の機能を要求し、カスタマーサポートチームはバグ修正を要求する。大企業の顧客から要求されるか、役員会から押し付けられない限り、セキュリティを優先するのは難しいかもしれない。
たいていのスタートアップ企業では、自由に使える技術者のプロフィールをすべて揃えているわけではないかもしれない。専任のプロダクトマネージャーがまだいないかもしれないし、開発チームに専任のセキュリティ責任者がいるわけでもないだろう。納期を迫られている開発チームは、セキュリティに関しても、多くの手抜きを余儀なくされるだろう。
私はこれまで3つのアーリーステージのSaaSスタートアップでCTOを務めてきました。(Teamleader、Officient、Futureproofed)以下に、これらの過去のSaaS企業の経験から学んだことをまとめました。

車輪の再発明を避ける
パスワードによるログインシステムは作らないことだ。確かに数日で構築することはできますが、それを維持し、将来的に高度な保護機能を追加するためのコストは非常に高くなります。Gmailのようなシングルサインオンによるログインを使うか、Auth0.comのようなサービスを使うことを検討してください。 よりスムーズで機能豊富なログイン体験ができるだけでなく、ログイン関連のセキュリティ面(ブルートフォース、サードパーティサービスでのユーザー認証情報の流出、アカウント乗っ取り攻撃の回避と検出、メールアドレスの検証、ロギング...)で悩む必要もなくなる。
結局のところ、適切なベンダーを選べば、攻撃対象を減らすだけでなく、より価値のある機能に費やせる時間も獲得できるのだ。
数週間から数カ月を節約できる他の素晴らしい例もある:
- クレジットカードを保存せず、StripeやMollie、Chargebeeなどを利用する。
- MySQLやPostgreSQL、ElasticSearchのような複雑なソフトウェアを自分で動かすのはやめましょう。RDSのようなマネージドクラウドサービスを利用しましょう。
- 独自のログシステムを構築しないこと。SentryやPapertrailのようなシステムを使うこと(そして、機密データをそこに記録しないこと)。
- 自社でメール(SMTP)サーバーを運営せず、SendgridやMailgunのようなマネージドサービスを利用する。
- ウェブソケット・サーバーを構築せず、Pusher.comのようなマネージド・サービスを利用する。
- フィーチャーフラグシステムは自前で構築せず、Launchdarklyのようなサービスを利用する。
- カレンダーの統合は自分で作らず、cronofy.comのようなツールを使う。
- 一般的なインテグレーションを構築する際は、Apideckのようなその分野の統一APIをチェックしてください。
危機管理コミュニケーションの準備に時間をかける
顧客と会話するためのチャットアプリケーションや、問題を伝えるための管理されたステータスページやTwitterアカウントなどのツールが設定されていることを確認してください。何か悪いことが起こった場合に備えて、危機の際にあなたが問題の解決に専念している間に、会社の他のメンバーが顧客にコミュニケーションできるようにするのは素晴らしい習慣です。
グローバル・ガードレールの追加
あなたはおそらく、開発者からのPull Requestをレビューしているだろう!保守性、パフォーマンス、機能性をレビューするのは大変な作業です。セキュリティについてもレビューする時間がありますか?確かに、いくつかのリスクはカバーできるでしょう。しかし、いくつかのガードレールやグローバルな設定を追加することで、いくつかのリスクを回避することができるのはいいことです。
運が良ければ、特定の問題に対してグローバルな修正が存在することもある。
- nodeJSを使用していてプロトタイプ汚染を考慮したくない場合、アプリ全体でこの種の攻撃を無効化するためにプロトタイプを凍結すべきです。Aikido これを自動的に行うプルリクエストをAikido 。
- SQLを使用し、SQLインジェクション攻撃を恐れている場合(そうすべき)、アプリ全体の保護のためにWAF(AWS WAFのような)やRASP(Datadogのアプリセキュリティのような)を使用することができます。
- 多くのXSS攻撃を発見しているなら、ブラウザに非常に厳格なCSPポリシーを導入することで、その大部分を取り除くことができるだろう。
- 顧客の入力に基づいて多くのアウトバウンドリクエストを実行している場合、SSRF攻撃の脆弱性がある可能性があります。これを完全に遮断するのは難しいかもしれませんが、より深刻な事態(例えばAWSのIAM認証情報に対するIMDSv1攻撃など)に発展しないよう対策を講じることで被害を軽減できます。Aikido デフォルトでAWSクラウド内においてこれをAikido 。
- オブジェクトストレージを扱う際、JavaやPHPにおけるPickle、XML、シリアライズ/デシリアライズといった特定の関数タイプを避け、代わりにJSONのようなシンプルな保存オプションを選択することで、安全でないデシリアライズに関連する典型的な脆弱性を多く回避できます。Aikido デフォルトでコードベース内のこうした関数をAikido 。
- CDNやキャッシュ機構を使用する場合、キャッシュポイズニング攻撃のあらゆる種類を避けるために、別々のCDN設定で静的資産に別々のドメインを使用してください(ChatGPTは最近この罠にはまりました)。
この簡単なトリックで開発者を教育しよう
あなたのプロセスに導入できる簡単なハック(ダジャレ)がある。スプリントプランニング中に開発チームに尋ねる簡単な質問だ:
私たちが構築している機能がハッキングされる可能性は?
開発チームは、悪用される可能性のあるシナリオをすべて予期しているわけではな いかもしれないが、この方法論は、スケールアップするのは至って簡単である。これは、開発者が開発作業を行う前に、セキュリティの考慮事項をチェックすることを促す小さな追加ステップである。

コードベースのさまざまな部分に優先順位を割り当てる
すべてがハッカーの大きな標的になるわけではない。彼らが好んで狙う主なコンポーネントは以下の通りだ:
- 決済システム、ウォレット、クレジットシステム
- SMSやvoipのような高価なAPIに接続する機能(Twilioを考える)
- パスワードリセット、ログインシステム、ユーザー招待
- PDF、Excelなど、危険な操作を行う可能性のあるエクスポート機能
- ファイルや画像のアップロードに関するもの
- ウェブフックなど、設計上アウトバウンドリクエストを行う機能
- 電子メールを送信するあらゆる種類の機能、特にパーソナライズされたコンテンツ
追記:Aikido 、各コードベースにリスクレベルを割り当てることで、スタートアップの世界における上位リポジトリのみに集中する手助けAikido 。
人間的な側面も忘れずに
小規模スタートアップのCTOとして、あなたは通常、運用セキュリティの責任者でもある。チームのアカウントを保護する手段を提供しましょう。2FAのためにハードウェアのユビキーやソフトウェアアプリを使うようにし、可能であればそれを強制する。Gmailのようなツールでは、これを強制することができる。フィッシング攻撃に対する最初の防御線として最適だ。
セキュリティー対策を常に最新に保つのは難しい
ソフトウェアに対する新たな攻撃手法を学ぶのは難しい。使用している言語(Python、Node、Goなど)の更新情報やOSのパッチ適用、オープンソースパッケージの一般的な脆弱性追跡だけでも十分負担が大きい。特定の攻撃手法は時間とともに普及するため、トレンドを追うことは有益だ。 例えば、昨年サブドメイン乗っ取り攻撃の増加を確認した後、Aikido はこのリスクを防止し、これらのDNSレコードの監視を自動化するため、サブドメイン乗っ取り監視ツAikido 。
自動化する
私が以前勤めていた会社では、セキュリティ担当者が定期的なセキュリティタスクをカレンダーに書き込むことで、セキュリティの次のレベルを目指していました。四半期ごとに全アプリのアクセスレビューを行う。毎週2、3週間ごとにコードの漏洩スキャンを行い、毎週金曜日にオープンソースパッケージのCVEをクリーンアップし、頻繁にSASTスキャンを行い、毎月サブドメインの乗っ取りに対するDNSレコードを検証する...。これらのタスクのアウトプットをトリアージして、開発者が実行できるようにするのは大変だった。さらに悪いことに、この担当者が会社を辞めたとき、他の誰かがこれらのタスクを引き継ぐことは困難だった。
Aikido アイデアがAikido 。私たちは、上記のすべてを自動化し、ノイズを排除し、開発者の目の前にタスクをSlackやJiraで提示する解決策を必要としていたのです。
Aikido でコードとクラウドのスキャンを始めましょう。こちらから登録して、無料でスキャンを開始してください。
今すぐソフトウェアを保護しましょう


.jpg)
.avif)
