Bien que la réponse de Kyle Fennell soit très bonne, j'aimerais expliquer pourquoi il est recommandé de concevoir des applications internes en toute sécurité.
Un grand nombre de les attaques impliquent des acteurs internes
Il existe de nombreuses versions différentes de ce factoid. «50% de toutes les attaques réussies commencent en interne», «Les deux tiers de toutes les violations de données impliquent des acteurs internes», etc.
Une statistique que j'ai pu trouver était le DBIR 2019 de Verizon, en qu'ils affirment:
34% [des violations de données analysées] impliquaient des acteurs internes
Quel que soit le nombre exact, un nombre important d'attaques impliquent acteurs internes. Par conséquent, baser votre modèle de menace sur "il est interne, donc sûr" est une mauvaise idée .
Le développement de logiciels sécurisés n'empêche pas seulement les abus, mais aussi les abus
- Abus: L'utilisateur fait quelque chose de malveillant pour son propre profit
- Utilisation abusive: L'utilisateur fait quelque chose de malveillant parce qu'il ne le fait pas mieux connaître
La raison pour laquelle j'évoque une mauvaise utilisation est que tout ce qui nuit à l'entreprise n'est pas fait intentionnellement. Parfois, les gens font des erreurs, et si les gens font des erreurs, il est bon que les machines empêchent ces erreurs d'avoir des conséquences généralisées.
Imaginez une application où tous les utilisateurs sont autorisés à tout faire (car la configuration des autorisations prend beaucoup de temps , n'a pas été pensé pendant le développement, etc.). Un utilisateur fait une erreur et supprime tout. Cela met l'ensemble du service à l'arrêt, tandis que le service informatique subit une crise cardiaque et sprinte dans la salle des serveurs avec la sauvegarde de la semaine dernière.
Imaginez maintenant la même application, mais avec un système d'autorisation bien défini. L'utilisateur tente accidentellement de tout supprimer, mais ne supprime que ses propres tâches assignées. Leur propre travail s'arrête et le service informatique fusionne les données de la sauvegarde de la semaine dernière avec les données actuelles. Deux employés ne pourraient pas faire de travail productif aujourd'hui, au lieu de 30. C'est une victoire pour vous.
«Interne» ne veut pas dire exempt d'acteurs malveillants
Certaines entreprises sont techniquement une seule entreprise avec plusieurs équipes, mais elles sont fractionnées de telle sorte que les équipes se font concurrence, plutôt que de travailler ensemble. Vous pensez peut-être que cela ne se produit pas, mais Microsoft a été comme ça pendant longtemps.
Imaginez que vous écriviez une application à utiliser en interne par toutes les équipes. Pouvez-vous imaginer ce qui se passerait une fois qu'un employé comprendrait que vous pourriez verrouiller d'autres employés pendant 30 minutes en exécutant un script qu'il a créé? Les employés de «cette autre équipe» seraient constamment exclus de l'application. Le service d'assistance serait occupé pour la 5 e fois cette semaine à essayer de comprendre pourquoi parfois des personnes seraient exclues de l'application.
Vous pensez peut-être que c'est tiré par les cheveux , mais vous seriez surpris de voir jusqu'où certaines personnes iraient pour obtenir ce doux bonus à la fin de l'année pour avoir mieux performé que "l'autre équipe".
"Interne" ne reste pas "Interne"
Désormais, en 2020, votre application ne sera utilisée que par un petit groupe de personnes. En 2029, l'application sera utilisée par certaines personnes en interne, certains fournisseurs et certains entrepreneurs également. Et si l'un de vos fournisseurs découvrait une faille dans votre application? Et s'ils voyaient que l'un de leurs concurrents bénéficie de bien meilleures conditions?
C'est une situation dans laquelle vous ne voulez pas être, et une situation que vous auriez pu éviter.
Réutilisation du code depuis votre application "interne"
Vous écrivez une application interne qui effectue des tâches d'accès à la base de données. Cela fonctionne bien pendant des années et personne ne s'est jamais plaint. Vous devez maintenant écrire une application qui accède aux mêmes données, mais en externe. "Facile!", Pense le codeur novice. "Je vais simplement réutiliser le code qui existe déjà."
Et maintenant vous êtes coincé avec une application externe dans laquelle vous pouvez effectuer des injections SQL. Parce que tout d'un coup, le code qui a été créé "pour un usage interne uniquement", sans jeu de mots, est utilisé en externe. Évitez cela en améliorant le code interne en premier lieu.
Sera-ce suffisant de suivre OWASP?
La réponse à cette question est une autre question "Assez pour quoi?". Cela peut sembler difficile au début, mais cela illustre le problème. Que voulez-vous protéger exactement?
Définissez un modèle de menace pour votre application, qui inclut les personnes qui, selon vous, pourraient éventuellement constituer une menace pour votre application de quelle manière, puis trouvez des solutions pour ces menaces individuelles. OWASP Top 10 peut être suffisant pour vous, ou peut-être pas.