Obwohl Kyle Fennells Antwort sehr gut ist, möchte ich einen Grund nennen, warum es empfohlen wird, interne Anwendungen sicher zu gestalten.
Eine große Anzahl von Angriffe betreffen interne Akteure
Es gibt viele verschiedene Versionen dieses Faktoids. "50% aller erfolgreichen Angriffe beginnen intern", "Zwei Drittel aller Datenverletzungen betreffen interne Akteure" usw.
Eine Statistik, die ich finden konnte, war Verizons DBIR 2019 in was sie behaupten:
34% [der analysierten Datenverletzungen] betrafen interne Akteure
Unabhängig von der genauen Anzahl sind erhebliche Angriffe erforderlich interne Akteure. Daher ist es eine schlechte Idee , Ihr Bedrohungsmodell auf "es ist intern, daher ist es sicher" zu stützen.
Sichere Softwareentwicklung verhindert nicht nur Missbrauch, sondern auch Missbrauch
- Missbrauch: Der Benutzer tut etwas Bösartiges zu seinem eigenen Vorteil.
- Missbrauch: Der Benutzer tut etwas Bösartiges, weil er es nicht tut weiß es besser
Der Grund, warum ich Missbrauch anspreche, ist, dass nicht alles, was dem Unternehmen Schaden zufügt, absichtlich getan wird. Manchmal machen Menschen Fehler, und wenn Menschen Fehler machen, ist es gut, wenn Maschinen verhindern, dass diese Fehler weitreichende Konsequenzen haben.
Stellen Sie sich eine Anwendung vor, in der alle Benutzer alles tun dürfen (da das Einrichten von Berechtigungen lange dauert , wurde während der Entwicklung nicht gedacht, etc.). Ein Benutzer macht einen Fehler und löscht alles. Dies bringt die gesamte Abteilung zum Erliegen, während die IT einen Herzinfarkt bekommt und mit dem Backup der letzten Woche in den Serverraum sprintet.
Stellen Sie sich nun dieselbe Anwendung vor, jedoch mit einem genau definierten Berechtigungssystem. Der Benutzer versucht versehentlich, alles zu löschen, löscht jedoch nur die eigenen zugewiesenen Aufgaben. Ihre eigene Arbeit kommt zum Stillstand und die IT führt die Daten aus dem Backup der letzten Woche mit den aktuellen Daten zusammen. Zwei Mitarbeiter konnten heute keine produktive Arbeit leisten, anstatt 30. Das ist ein Gewinn für Sie.
"Intern" bedeutet nicht, frei von böswilligen Akteuren zu sein.
Einige Unternehmen sind technisch gesehen ein Unternehmen mit mehreren Teams, aber sie sind so zerbrochen, dass Teams miteinander konkurrieren, anstatt zusammenzuarbeiten. Sie denken vielleicht, dass dies nicht der Fall ist, aber Microsoft war lange Zeit so.
Stellen Sie sich vor, Sie schreiben eine Anwendung, die von allen Teams intern verwendet wird. Können Sie sich vorstellen, was passieren würde, wenn ein Mitarbeiter herausfindet, dass Sie andere Mitarbeiter für 30 Minuten aussperren könnten, indem Sie ein von ihm erstelltes Skript ausführen? Mitarbeiter von "diesem anderen Team" würden ständig von der Anwendung ausgeschlossen. Der Helpdesk war diese Woche zum fünften Mal beschäftigt, um herauszufinden, warum manchmal Leute von der Anwendung ausgeschlossen werden.
Sie denken vielleicht, dass dies weit hergeholt ist , aber Sie wären überrascht, wie weit einige Leute gehen würden, um diesen süßen Bonus am Ende des Jahres für eine bessere Leistung als "das andere Team" zu erhalten.
"Intern" bleibt nicht "Intern"
Jetzt, im Jahr 2020, wird Ihre Anwendung nur noch von einer kleinen Gruppe von Personen verwendet. Im Jahr 2029 wird die Anwendung von einigen internen Personen, einigen Anbietern und auch von Auftragnehmern verwendet. Was ist, wenn einer Ihrer Anbieter einen Fehler in Ihrer Anwendung entdeckt hat? Was wäre, wenn sie sehen könnten, dass einer ihrer Konkurrenten viel bessere Bedingungen hat?
Dies ist eine Situation, in der Sie nicht sein möchten und die Sie hätten verhindern können.
Wiederverwenden von Code aus Ihrer "internen" Anwendung
Sie schreiben eine interne Anwendung, die Datenbankzugriff erledigt. Es funktioniert seit Jahren gut und niemand hat sich jemals beschwert. Jetzt müssen Sie eine Anwendung schreiben, die auf dieselben Daten zugreift, jedoch extern. "Einfach!", Denkt der Anfänger. "Ich werde den bereits vorhandenen Code einfach wiederverwenden."
Und jetzt stecken Sie in einer externen Anwendung fest, in der Sie SQL-Injektionen durchführen können. Denn plötzlich wird der Code, der "nur für den internen Gebrauch" erstellt wurde und kein Wortspiel beabsichtigt ist, extern verwendet. Vermeiden Sie dies, indem Sie den internen Code zunächst in Ordnung bringen.
Wird es ausreichen, OWASP zu folgen?
Die Antwort auf diese Frage ist eine andere Frage "Genug für was?". Dies mag zunächst pingelig klingen, veranschaulicht jedoch das Problem. Was genau möchten Sie schützen?
Definieren Sie ein Bedrohungsmodell für Ihre Anwendung, das beinhaltet, wer Ihrer Meinung nach möglicherweise auf welche Weise eine Bedrohung für Ihre Anwendung darstellt, und finden Sie dann Lösungen für diese einzelnen Bedrohungen. OWASP Top 10 kann für Sie ausreichen oder auch nicht.