Lehren aus vergangenen SaaS-Unternehmen
In einem typischen SaaS-Startup steht das Entwicklerteam unter großem Druck, neue Funktionen zu liefern. In der Regel gibt es Konkurrenten, die möglicherweise besser finanziert sind, das Vertriebsteam bittet um eine letzte Funktion, um das Geschäft abzuschließen, und das Kundensupportteam bittet um eine Fehlerbehebung. Es kann schwierig sein, der Sicherheit Priorität einzuräumen, es sei denn, ein größerer Unternehmenskunde verlangt dies oder Ihr Vorstand schreibt es von oben vor.
In den meisten Start-ups stehen Ihnen nicht alle technischen Profile zur Verfügung: Vielleicht haben Sie noch keinen Vollzeit-Produktmanager, wahrscheinlich haben Sie keinen Vollzeit-Sicherheitsbeauftragten in Ihrem Entwicklungsteam. Ein Entwicklungsteam, das unter Lieferdruck steht, wird gezwungen sein, viele Abstriche zu machen, selbst wenn es um die Sicherheit geht.
Ich war der CTO von 3 SaaS-Startups im Frühstadium. (Teamleader, Officient & Futureproofed) Im Folgenden habe ich meine Erfahrungen aus diesen SaaS-Unternehmen beschrieben.

Vermeiden Sie es, das Rad neu zu erfinden
Ein gutes Beispiel: Bauen Sie kein Anmeldesystem mit Passwörtern. Ja, Sie können es in ein paar Tagen aufbauen, aber die Kosten für die Wartung und das Hinzufügen von erweiterten Schutzfunktionen in der Zukunft werden sehr hoch sein. Ziehen Sie eine Anmeldung über Single-Sign-On wie Gmail in Betracht oder nutzen Sie einen Dienst wie Auth0.com. Sie werden nicht nur ein reibungsloseres, funktionsreicheres Anmeldeerlebnis haben, sondern müssen sich auch nicht um eine ganze Reihe von Sicherheitsaspekten im Zusammenhang mit der Anmeldung kümmern (Brute-Forcing, durchgesickerte Benutzerdaten in Diensten von Drittanbietern, Vermeidung und Erkennung von Kontoübernahmeangriffen, Validierung von E-Mail-Adressen, Protokollierung...).
Wenn Sie sich für den richtigen Anbieter entscheiden, reduzieren Sie nicht nur Ihre Angriffsfläche, sondern gewinnen auch Zeit, die Sie für wertvollere Funktionen nutzen können.
Andere gute Beispiele, die Ihnen Wochen oder Monate sparen können, sind:
- Speichern Sie keine Kreditkarten, verwenden Sie etwas wie Stripe oder Mollie oder Chargebee
- Betreiben Sie komplexe Software wie MySQL oder PostgreSQL oder ElasticSearch nicht selbst. Nutzen Sie verwaltete Cloud-Dienste wie RDS.
- Entwickeln Sie keine eigenen Protokollierungssysteme. Verwenden Sie Systeme wie Sentry oder Papertrail (und protokollieren Sie dort keine sensiblen Daten).
- Betreiben Sie keine eigenen E-Mail-Server (SMTP), sondern nutzen Sie einen verwalteten Dienst wie Sendgrid oder Mailgun.
- Bauen Sie keine Websocket-Server, sondern verwenden Sie verwaltete Dienste wie Pusher.com
- Entwickeln Sie kein eigenes System zur Kennzeichnung von Funktionen, sondern nutzen Sie einen Dienst wie Launchdarkly
- Entwickeln Sie keine eigene Kalenderintegration, sondern verwenden Sie ein Tool wie cronofy.com
- Bei der Erstellung von Integrationen im Allgemeinen sollten Sie nach einheitlichen APIs in diesem Bereich suchen, wie z. B. Apideck.
Investieren Sie etwas Zeit in eine Krisenkommunikationseinrichtung
Stellen Sie sicher, dass Sie Tools wie eine Chat-Anwendung eingerichtet haben, um mit Ihren Kunden zu sprechen, oder besser noch eine verwaltete Statusseite oder ein Twitter-Konto, auf dem Sie Probleme mitteilen können. Für den Fall, dass etwas Schlimmes passiert, ist es eine gute Praxis, den Rest Ihres Unternehmens in die Lage zu versetzen, mit Ihren Kunden zu kommunizieren, während Sie sich auf die Behebung des Problems während einer Krise konzentrieren.
Globale Leitplanken hinzufügen
Sie überprüfen wahrscheinlich Pull Requests von Ihren Entwicklern, großartig! Es ist eine ziemliche Aufgabe, sie auf Wartbarkeit, Leistung und Funktionalität zu prüfen. Haben Sie die Zeit, sie auch auf Sicherheit zu prüfen? Sicherlich können Sie einige Risiken abdecken, aber es ist schön, wenn Sie einige Risiken durch das Hinzufügen von Leitplanken und globaler Konfiguration ausschließen können.
Manchmal kann man Glück haben und es gibt globale Lösungen für bestimmte Probleme.
- Wenn Sie nodeJS verwenden und nicht gerne über die Verschmutzung von Prototypen nachdenken, sollten Sie den Prototyp einfrieren, um diese Klasse von Angriffen appweit zu deaktivieren. Aikido kann automatisch einen Pull Request erstellen, der dies für Sie erledigt.
- Wenn Sie SQL verwenden und Angst vor SQL-Injektionsangriffen haben (und das sollten Sie), können Sie eine WAF (wie AWS WAF) oder RASP (wie Datadogs App Security) für einen app-weiten Schutz verwenden.
- Wenn Sie viele XSS-Angriffe entdecken, können Sie wahrscheinlich einen großen Teil davon durch die Einführung einer sehr strengen CSP-Richtlinie im Browser beseitigen.
- Wenn Sie viele ausgehende Anfragen auf der Grundlage von Kundeneingaben durchführen, sind Sie möglicherweise anfällig für SSRF-Angriffe. Es ist zwar schwierig, diese vollständig zu blockieren, aber Sie können den Schaden begrenzen, indem Sie sicherstellen, dass sie nicht zu etwas Schlimmerem führen können (z. B. zu einem IMDSv1-Angriff auf IAM-Anmeldeinformationen in AWS). Aikido überwacht dies in Ihrer AWS-Cloud standardmäßig.
- Beim Umgang mit der Objektspeicherung kann die Vermeidung spezifischer Funktionstypen wie Pickle, XML, (un)serialize in Java und PHP,.. und stattdessen die Verwendung einfacher Speicheroptionen wie JSON viele typische Exploits im Zusammenhang mit unsicherer Unserialisierung vermeiden. Aikido überwacht diese Arten von Funktionen in Ihrer Codebasis standardmäßig.
- Wenn Sie ein CDN oder Caching-Mechanismen verwenden, verwenden Sie separate Domains für Ihre statischen Assets mit separaten CDN-Konfigurationen, um alle Arten von Cache-Poisoning-Angriffen zu vermeiden (ChatGPT ist kürzlich in diese Falle getappt)
Informieren Sie Ihre Entwickler mit diesem einfachen Trick
Es gibt einen einfachen Hack (Wortspiel beabsichtigt), den Sie in Ihre Prozesse einbauen können. Stellen Sie dem Entwicklungsteam während der Sprint-Planung eine kurze Frage:
Wie kann die Funktionalität, die wir aufbauen, gehackt werden (und wie können wir das verhindern)?
Auch wenn das Entwicklungsteam nicht jedes potenzielle Missbrauchsszenario vorhersehen kann, lässt sich diese Methodik ganz einfach skalieren. Es ist ein kleiner zusätzlicher Schritt, der die Entwickler dazu ermutigt, sich über Sicherheitsaspekte zu informieren, bevor sie mit der Entwicklung beginnen.

Zuweisung von Prioritäten an verschiedene Teile Ihrer Codebasis
Nicht alles ist ein so großes Ziel für Hacker. Die wichtigsten Komponenten, die sie gerne ins Visier nehmen, sind:
- Zahlungssysteme, Geldbörsen, Kreditsysteme
- Funktionen, die mit teuren APIs wie SMS und VoIP verbunden sind (z. B. Twilio)
- Passwort zurücksetzen, Anmeldesysteme, Benutzereinladungen
- Exportfunktionen wie PDF-, Excel-,... Exporte, die riskante Operationen durchführen können
- Alles, was mit dem Hochladen von Dateien und Bildern zu tun hat
- Funktionen, die von vornherein ausgehende Anfragen ausführen, wie z. B. Webhooks
- Jede Art von Funktion, die E-Mails versendet, insbesondere mit personalisierten Inhalten
PS: Aikido kann Ihnen helfen, sich nur auf die besten Repositories im Universum Ihres Startups zu konzentrieren, indem Sie jeder Codebasis Risikostufen zuweisen.
Vergessen Sie den menschlichen Aspekt nicht
Als CTO in einem kleinen Startup sind Sie in der Regel auch für die Betriebssicherheit zuständig. Geben Sie Ihrem Team die Mittel an die Hand, ihre Konten zu sichern. Stellen Sie sicher, dass sie Hardware-Yubikeys oder Software-Apps für 2FA verwenden, und wenn möglich, erzwingen Sie es. Mit Tools wie Gmail lässt sich dies erzwingen. Das ist eine gute erste Verteidigungslinie gegen Phishing-Angriffe.
Es ist schwer, bei den Sicherheitspraktiken auf dem Laufenden zu bleiben
Es ist schwer, sich über neue Arten von Angriffen auf Software zu informieren. Es ist schon schwer genug, Updates für die von Ihnen verwendeten Sprachen (Python, Node, Go,...) oder Betriebssystem-Patches oder beliebte Exploits in Open-Source-Paketen zu verfolgen. Bestimmte Angriffe werden mit der Zeit immer beliebter, so dass es sich lohnt, die Trends zu verfolgen. Nachdem Aikido beispielsweise im letzten Jahr einen Anstieg der Subdomain-Takeover-Angriffe festgestellt hatte, führte es ein Subdomain-Takeover-Überwachungstool ein, um dieses Risiko zu vermeiden und die Überwachung dieser DNS-Einträge zu automatisieren.
Weg automatisieren
In meinen früheren Unternehmen haben wir versucht, ein höheres Sicherheitsniveau zu erreichen, indem wir einen Sicherheitsbeauftragten einen Kalender mit wiederkehrenden Sicherheitsaufgaben erstellen ließen. Führen Sie vierteljährlich eine Zugangsprüfung für alle Anwendungen durch. Führen Sie alle paar Wochen eine Überprüfung des Codes auf durchgesickerte Geheimnisse durch, bereinigen Sie jeden Freitag die CVEs von Open-Source-Paketen, führen Sie hin und wieder eine SAST-Überprüfung durch, überprüfen Sie jeden Monat die DNS-Einträge auf Subdomain-Übernahmen, ... Die Ergebnisse dieser Aufgaben waren schwer zu sortieren und für die Entwickler nutzbar zu machen. Schlimmer noch, als diese Person das Unternehmen verließ, war es für jeden anderen schwer, diese Aufgaben zu übernehmen, da sie eine Menge spezifischer Kenntnisse erforderten.
An diesem Punkt begann die Idee von Aikido zu wachsen. Wir brauchten eine Lösung, um all das zu automatisieren, das Rauschen herauszufiltern und die Aufgaben in Slack oder Jira an die Entwickler weiterzuleiten.
Beginnen Sie noch heute mit dem Scannen Ihres Codes und Ihrer Cloud mit Aikido. Melden Sie sich hier an und beginnen Sie kostenlos zu scannen.