Approche moderne de la sécurité de
l'information J'adore la sécurité de l'information. D'une part, une entreprise nécessite souvent de déployer des prototypes à moitié cuits, déployés une fois par heure. D'autre part, c'est le bastion dur et inaccessible des agents de sécurité de l'information. Tout dépend d'eux. Et même les développements dans le domaine de l'IoT, où S est la sécurité, deviennent encore plus fiables sous leur supervision.
Le problème clé dans l'estimation du diamètre de
Et une liste. Tout le monde aime les listes. Je vais donner mon petit ensemble de logiciels nécessaires, ce qui illumine grandement ma vie quotidienne.
Si quelque chose est ennuyeux, vous devez automatiser
La pyramide de test classique. Quelque part en bas, il y a de nombreux tests unitaires qui couvrent toutes sortes de petites choses, comme s'assurer que l'application ne plante pas si l'utilisateur saisit son mot de passe en hindi. Ou envoyé quelque chose d'autre étrange. Et puis il y avait des précédents avec "لُلُصّبُلُلصّبُررً ॣ ॣ h ॣ ॣ 冗" sur l'iPhone, si vous vous en souvenez. Ce type de test est idéal pour son automatisation, mais ne couvre que les cas étroits, qui souvent ne donnent pas une image complète et la confiance que l'application ne coulera pas dans un endroit inattendu.
Tout en haut, c'est déjà un test entièrement manuel. En plus de vérifier les cas standard, il peut prévoir une "créativité libre", lorsqu'un spécialiste se voit confier la tâche de casser quelque chose d'une manière exotique à son goût. Comme toujours, ce type d'approche créative conduit au fait que ce type de test est aussi le plus cher. Non seulement en termes d'argent, mais aussi en termes de délai de mise sur le marché notoire, lorsque vous devez déployer de nouvelles fonctionnalités juste-hier-à-une-réunion-déjà-promise.
Un problème traditionnel auquel sont confrontées de nombreuses entreprises est la longue et triste coordination avec la sécurité de l'information sur chaque élément. Pas parce qu'ils sont tellement en colère et hostiles. C'est juste que leur tâche est de minimiser les risques. Ainsi, ils minimisent autant qu'ils le peuvent, arrêtant simultanément la moitié des processus dans le goulot d'étranglement de leurs contrôles. En fait, à l'époque pré-prison, lorsque vous pouviez lentement peaufiner votre code, cela fonctionnait. Et maintenant, 47 prototypes à moitié cuits de concurrents avec des codeurs de singe seront déjà publiés dans votre solution raffinée de la première version. Et c'est tout. Vous avez déjà perdu le marché, tous les utilisateurs sont coincés dans un autre Tick-Tock.
Pipeline pour tout
En fait, le plus souvent, le problème est une mauvaise intégration des processus de sécurité de l'information dans des pipelines déjà familiers aux développeurs. Pour une raison quelconque, chaque push est accompagné de nombreux contrôles du même flake8 et mypy, il est assemblé dans un package lui-même, téléchargé dans le conteneur du runner GitLab et s'envole joyeusement testé dans Artifactory. Ou échoue à une étape et revient pour révision.
Et seule la sécurité de l'information est souvent sous une loupe avec ses mains à chaque sortie, feuilletant le code et enfonçant un bâton dans les ports ouverts de l'application. Il me semble que l'une des meilleures solutions est de faire passer l'essentiel des contrôles de sécurité dans un processus automatique et de limiter les tests manuels dans le temps. IB conserve le droit de veto s'il trouve une vulnérabilité critique, mais par défaut, l'application passe en production s'il n'y a pas d'objection de sa part. Cela semble effrayant à première vue, mais une telle structure de processus incite à automatiser autant que possible toutes les procédures de routine et à ne consacrer du temps qu'à des choses vraiment complexes.
Ces abréviations comme DevSecOps et autres TriCeraTops me font un peu peur, mais c'est exactement ce qu'il faut le plus souvent organiser pour réduire les coûts de temps. Jetons un œil à un exemple python. Cela vaut la peine de commencer par les linters. Je pense que presque tout le monde a vissé sur certaines variantes de linters de base comme flake8 et mypy. Je recommanderais toujours la version étendue de flake8 - wemake-python-styleguide.
Il est installé et démarré traditionnellement:
pip install wemake-python-styleguide
flake8 your_module.py
Le principal problème avec ce linter est qu'il peut vous donner envie de casser le moniteur avec le clavier dans un premier temps. Surtout dans les anciens projets hérités, il est plus facile de graver que de réparer. Néanmoins, si vous excluez les vérifications inutiles, vous obtiendrez un contrôle assez strict sur la qualité du code sous-jacent.
Après avoir vérifié le code lui-même pour des constructions tordues, une mauvaise lisibilité et une complexité cyclomatique élevée, il vaut la peine d'exécuter le linter de sécurité statique. Oui, dans les langages faiblement typés, ces linters ne sont pas très bons, mais ils vous permettent d'identifier des problèmes typiques comme password = 'qwerty123' dans le code. Vous pouvez utiliser le même bandit ici .
Tout cela fonctionne très bien, mais le problème avec les solutions gratuites est le plus souvent dans les bases de données de vulnérabilité moins actuelles. Le plus souvent, il est judicieux d'ajouter quelque chose d'autre commesécurité .
Source
Les options de paiement similaires s'intègrent généralement parfaitement avec le même GitLab d'entreprise.
Cela étant dit, il y a généralement une belle sortie informative vers la console:
safety check --full-report
Idéalement, après toutes les manipulations, vous devriez avoir un pipeline complet, où vous vérifiez étape par étape toutes les exigences de sécurité de votre application.
Source Vérifications
typiques:
git secret check - vérifiez l'absence de secrets ouverts dans le code
SCA - vérifiez que les dépendances externes et les bibliothèques sont exemptes de vulnérabilités. Il est important si vous gelez l'ancienne version de la bibliothèque
SAST - analyse de code statique pour les vulnérabilités
Audit du conteneur - audit de l'image du conteneur qui sera utilisée pour le déploiement. Eux aussi sont souvent pleins de trous. Surtout si vous utilisez des sandwichs exotiques de nombreuses couches variées.
DAST - déploiement d'application, enregistrement, connexion en tant qu'utilisateur légitime et exécution d'attaques typiques sur le front-end
Ce qui reste pour la sécurité de l'information
Maintenant que nous avons déchargé les
Il y aura le même arsenal intemporel d'outils d'analyse, de test de réseau et de devinettes de mot de passe. Wireshark, hashcat, Hydra et d'autres utilitaires n'ont jamais été retirés.
Mais même parmi les outils familiers, quelque chose de nouveau et parfois très utile apparaît. Je suggérerai de prêter attention à certains d'entre eux.
Nikto2
github.com/sullo/nikto
Nikto est un scanner de serveur Web open source. Il n'est pas du tout silencieux. Sérieusement, si vous l'avez lancé depuis votre lieu de travail et que dans les 15 minutes vous n'êtes pas encore couché face contre terre, entouré d'un personnel de sécurité, vous avez des problèmes de détection d'intrusion.
Le logiciel effectue des tests complexes sur des serveurs Web pour de nombreux éléments, y compris plus de 6700 fichiers / programmes potentiellement dangereux. Il vérifie également les éléments de configuration du serveur tels que les paramètres du serveur HTTP et tente d'identifier les serveurs Web et les logiciels installés. Les éléments d'analyse et les plug-ins sont fréquemment mis à jour et peuvent se mettre à jour automatiquement.
Fuzzdb
C'est également un outil très cool pour une attaque automatisée sur des applications Web en utilisant des modèles et des vulnérabilités typiques. Il se fera un plaisir de bombarder votre application avec un tas d'attaques standard et en même temps vérifier si vous avez oublié de couvrir l'accès au panneau d'administration et aux fichiers journaux avec des droits réduits. Permet de soulager de nombreux maux de tête et contrôles de routine.
Nmap + Vulners
Vulners est un agrégateur de toutes sortes de CVE, de bulletins de sécurité des fournisseurs, d'exploits dans Metasploit et simplement le résultat de la détection manuelle de vulnérabilités dans des forums thématiques. Fondamentalement, ils fournissent une API pour interroger leur base de données. J'ai simplement été captivé par leur plugin pour le bien connu nmap, qui donne immédiatement à un fan de vecteurs d'attaque prêts à l'emploi pour un service Web. Je recommande vivement de regarder de plus près.
Quelque chose comme la sortie
Mort aux humains - gloire aux robots!
Mais sérieusement, essayez de minimiser la routine et de la transmettre à celui qui devrait vraiment le faire - des scripts et des pipelines sans âme. Et laissez les gens s'engager dans la créativité. C'est plus correct.