Il y a eu n article sur Niebezpiecznik.pl , un blog InfoSec populaire, décrivant une situation intéressante.
Une entreprise a accordé par erreur l'accès à leur référentiel BitBucket à un programmeur aléatoire. Ce programmeur a par la suite alerté divers employés de l'entreprise, les exhortant à révoquer l'accès dès que possible. Il a trouvé ces employés paresseux (par exemple, l'un a dit qu'il ne révoquerait l'accès qu'à son retour de vacances), a donc alerté le blog Niebezpiecznik, qui a ensuite contacté l'entreprise. Ce n'est qu'alors que l'accès a été révoqué.
Il est clair que le programmeur a considéré que le manque de révocation rapide de l'accès était une erreur très grave au nom de la politique de sécurité de l'entreprise. Et c'est là que je suis surpris.
Alors, considérons cela du point de vue de l'entreprise. Quelqu'un les a contactés, affirmant qu'il avait faussement obtenu l'accès à leur dépôt privé et les exhortant à retirer cet accès. Maintenant, cette personne est ou n'est pas intéressée par le contenu de ce dépôt; il a aussi ou n'a pas des valeurs morales assez fortes pour s'abstenir de le télécharger. S'il est disposé à inspecter le contenu du dépôt, il a déjà eu amplement le temps de le faire; et s'il ne l'a pas encore fait, il ne l'aura probablement pas encore fait lorsque l'employé sera de retour de vacances. En d'autres termes, le lait a déjà coulé et rien de pire que ce qui s'est déjà produit ne risque de se produire à l'avenir.
En conséquence, je pense que la situation n'est plus urgente et peut profondément attendre que l'employé revienne de ses vacances.
Où ai-je tort?
Il y a plusieurs raisons:
Il y a de très bons points dans les commentaires et cette réponse que tout pourrait bien se passer dans certaines circonstances (par exemple, accès en lecture seule, aucun secret dans le code, etc.). C'est exact, mais je dirais quand même que cela devrait être pris plus au sérieux. Êtes-vous vraiment sûr à 100% qu'il n'y a pas de secret dans un vieux commit de votre repo? Le fait même que quelqu'un qui ne devrait pas avoir accès à vos systèmes l’ait de toute façon est en soi un mauvais présage.
Bien qu'il soit impossible de lire dans les pensées des personnes en jeu - je pense que le programmeur indépendant
A) Ne veut pas être accusé d'irrégularité - Il est beaucoup plus difficile d'être accusé de vol de propriété intellectuelle si vous criez et criez pour que votre accès soit révoqué après la hâte.
B) Est consterné par la posture de sécurité de l'entreprise qui contrôle le référentiel privé et sait que s'il était responsable, il voudrait être informé.
Une chose à noter est que donner à un utilisateur supplémentaire un accès à un référentiel ouvre un tout nouveau vecteur d'attaque possible. Si quelqu'un d'autre avec des intentions malveillantes a accès au compte auquel le repo a été accordé sans que le titulaire du compte d'origine ne le sache, cette personne pourrait facilement télécharger l'intégralité de votre code source.
Pour fournir un point de vue différent de la majorité, cela ne devrait vraiment pas être un risque pour la sécurité iff le projet est bien géré.
Il y a fondamentalement deux choses qui doivent être remplies. Tout d'abord,
et deuxièmement
Si les deux sont vrais, je ne vois vraiment aucun mal du point de vue de la sécurité. La question de savoir s'il existe de précieux secrets commerciaux dans le code qui pourraient être divulgués à un concurrent est un sujet différent.
Ou une autre façon de penser: la situation ici n'a rien de spécial. Vous devez faire face aux mêmes problèmes, chaque fois qu'un employé quitte! Si votre référentiel contenait des secrets, une personne externe les connaît tous maintenant.
Si des trucs sont volés, regardez d'abord quelles personnes ont la clé du coffre-fort.
J'ai donné des coups de pied et des cris dans le passé, pour ne pas avoir que clé, donc si (quand) quelque chose était volé, ils ne me regarderaient pas comme un auteur potentiel.
Donc, cela pourrait avoir été le même pour ce programmeur. Il ne voulait pas avoir la clé that.
Vous avez raison de dire que la situation pourrait ne pas être urgente du tout et que la réaction laxiste des employés pourrait être justifiée. Peut-être que l'employé ne s'est pas soucié du problème parce que le code en question n'était plus utilisé ou qu'il n'avait aucun secret.
J'ai déjà travaillé pour une startup où tout le monde utilisait les mêmes clés SSH parce que quelqu'un pensait qu'il serait plus facile de supprimer/remplacer une clé si quelqu'un fait quelque chose de stupide.
Il y a aussi la possibilité que le développeur ait sa clé stockée dans une machine accessible au public comme un ordinateur à l'université. Cela peut sembler très peu sûr, mais convient pour "Hello World" et "Practice Papers".
Dans ce cas, comme vous l'avez dit, l'entreprise peut être relativement sûre que la personne qui a signalé l'incident n'essaiera pas de lui faire du mal. Mais vous ne pouvez jamais être sûr de qui a accès au compte/clés de la personne qui a signalé l'incident.
Je ne lis pas le polonais, alors pardonnez tout ce qui a déjà été abordé:
Bitbucket héberge les dépôts git et Mercurial - les deux sont distribués CVS; ceux-ci sont généralement incompatibles avec les contrôles technologiques pour protéger la propriété intellectuelle/empêcher la sortie de la propriété intellectuelle; tout clone/fork existant pourrait être cloné sans visibilité de piste d'audit centrale.
Des contrôles de sécurité appropriés doivent être en place pour modifier tout référentiel, par exemple.
Ainsi, tout dommage possible est déjà fait.
Si les informations d'identification ne sont pas exposées, qui s'en soucie? D'après mon expérience en tant que codeur, administrateur de systèmes Linux et gars de nettoyage/réparation de sécurité, le plus gros problème avec le code être exposé dans un repo est simplement le risque que les informations d'identification soient exposées. La réalité est la plupart les codeurs sensés savent coder sans coder en dur les informations d'identification dans leur code. Mais la plupart des codeurs sont simplement paresseux et savent pourquoi - ou comment - quelqu'un peut concevoir un système avec des informations d'identification séparées du code principal.
Donc, si ce système était géré par des codeurs sensés et que le dépôt n'expose pas les informations d'identification, vous savez quoi? On s'en fout. Mais - comme beaucoup d’entre nous le savent déjà - il existe des codeurs de niveau "flic de centre commercial" minables qui ne font qu’introduire des informations d’identification dans le code de base et c’est tout. Vous devez le jouer à l'oreille.
L'exposition au secret commercial est un risque. Cela dépend de l'industrie et des exigences sous lesquelles le code a été créé. Si le code est pour un blog ou un simple site Web? Peu importe. Même s'il s'agit d'un site de commerce électronique, s'il s'agissait d'une copie localisée de quelque chose comme Magneto, ce n'est pas vraiment un risque puisqu'il s'agit d'un logiciel open source. Mais si ce logiciel était quelque chose de propriétaire et risqué à exposer - comme quelque chose qui pourrait exposer des dossiers financiers et peut-être même du nouveau code à un jeu - alors c'est un risque.
Mais à la fin de la journée, le travail d'un pirate "chapeau blanc" est d'informer les autres sur les problèmes. S'ils vont prendre un "Qui s'en soucie?" attitude envers l'exposition, c'est leur problème. Peut-être qu'ils ne voient vraiment aucun risque? Peut-être qu'ils ne s'en soucient vraiment pas et que l'exposition nuira aux autres? Ce sont peut-être des idiots? Peut-être qu'ils sont si intelligents que l'exposition au code ne signifierait que - peut-être - quelques jours de refactorisation pour limiter les risques? Mais à la fin de la journée, il y a tellement de choses à faire pour empêcher quelqu'un de se faire du mal.