Question:
Est-il acceptable qu'un pentester professionnel qualifié supprime ou modifie des données sensibles en production sans le vouloir pendant un pentest?
kinunt
2013-07-18 00:08:20 UTC
view on stackexchange narkive permalink

Aujourd'hui, j'ai vécu une situation où une personne responsable de la sécurité d'une entreprise a demandé à une entreprise de pentest de retirer une clause dans le contrat qui dit que:

"pendant le pentest il existe le possibilité de supprimer ou de modifier des données sensibles dans l'environnement de production sans le vouloir en raison de l'exécution de certains outils, exploits, techniques, etc. "

Le client dit qu'il n'acceptera pas cette clause et qu'il pense qu'aucune entreprise n'accepterait cette clause. Il pense que lors d'un pentest, des informations pourraient être consultées mais jamais supprimées ou modifiées.

Nous savons que l'exécution de certains outils comme les robots d'exploration ou les araignées peut supprimer des données si l'application Web est très mal programmée, donc le la possibilité existe toujours si ces types d'outils doivent être utilisés.

Je sais que ce sont les conditions du client, et devraient être acceptées, mais:

Peut un pentester qualifié et professionnel garantit toujours qu'aucune donnée ne sera supprimée ou modifiée en production pendant un pentest?

Un pentest peut-il vraiment être fait si l'équipe de pentest a la limitation de ces données ne peut pas être créé ni modifié?

L'entreprise de test doit-elle toujours inclure la clause de non-responsabilité au cas où?

Cela me rappelle une histoire wtf où Google a indexé une page contenant un lien qui réinitialisait toute la base de données lors d'un clic. Google est allé aveuglément et a indexé la page, a suivi le lien et a effacé la base de données. Il n'y a aucun moyen de garantir qu'un pentester pourrait ne pas faire la même chose par accident.
Qui sait sur quel type de bombe logique vous pourriez tomber. C'est CYA contre les pièges malveillants et les horribles erreurs de configuration qui étaient un désastre caché attendant de retirer des données la première fois que quelqu'un a déclenché la chaîne de dominos. En gros, une clause "Désolé, vous n'avez pas de sauvegardes fonctionnelles, mais ce problème est antérieur à ma respiration sur votre système".
@MarkHenderson J'adorerais voir un site avec des détails sur ce cas ... :)
@woliveirajr - http://thedailywtf.com/Articles/The_Spider_of_Doom.aspx et http://thedailywtf.com/Articles/WellIntentioned-Destruction.aspx - ma mémoire n'était pas tout à fait parfaite, mais assez proche
Il est certain qu'un client insistant pour que cette clause soit supprimée n'est pas déraisonnable, mais plutôt ** ne comprend pas pourquoi cette clause est là **. Ils pensent que * vous * ferez quelque chose pour briser leur système pendant les tests. Expliquez-leur simplement que si * leur * code contient un terrible bogue qui supprime la base de données lorsque vous cliquez sur «enregistrer», vous ne pouvez évidemment pas en être tenu responsable. Comme cela arrive souvent, cela ressemble à un échec de communication humaine, pas à une question technique.
Si le client a une procédure de sauvegarde / restauration qui fonctionne (testée) (avec un mécanisme de vérification de l'intégrité des fichiers), alors il n'a rien à craindre, non?
@tom-oconnor Encore plus, mieux vaut perdre des données de manière contrôlée et préparée avec des sauvegardes récentes qu'à un moment aléatoire avec un pirate qui se fraye un chemin. Si la perte de données lors du pentesting est même un problème, c'est probablement le moindre des soucis de l'entreprise. Et dans cette optique, je partage la remarque selon laquelle c'est aussi plus un problème de communication qu'un problème technique.
Voici une autre façon de voir les choses. La * supposition * d'un test de pénétration est que si l'attaquant réussit alors le système est * cassé *; si c'était * correct * alors l'attaque n'aurait pas réussi. Si l'attaque réussit, le système est * cassé *; si le système est cassé alors * son comportement lorsqu'il est donné une entrée n'est pas nécessairement celui prédit par sa spécification *, et si son comportement n'est pas prédit par sa spécification alors * qui sait ce qui va se passer *?
Est-il professionnel que votre entreprise n'ait pas cloné les systèmes que vous prévoyez de tester au stylo - ne serait-ce pas seulement pour le fait qu'ils pourraient affecter votre système, mais aussi où mettez-vous en place vos changements de développement?
diriger votre client vers cette page
@RyanMcDonough Ce n'est vraiment pratique qu'avec de petites cibles. Pour un test général sur l'infrastructure de XYZ Co quand ils sont assez grands pour avoir de nombreux racks de serveurs, non seulement serait un coût prohibitif à cloner; mais la probabilité de ne pas avoir tout configuré de manière identique dans la copie augmentera en réduisant la validité des résultats.
@DanNeely Même si vous clonez le système, ce que vous avez cloné ne pourrait-il pas atteindre sur le réseau une boîte du système d'origine via une adresse réseau codée en dur que vous avez clonée avec le reste? Oui, vous pouvez isoler le système, mais à ce stade, vous avez changé l'environnement si radicalement que vos tests ne testent pas ce que vous testez.
Huit réponses:
Rory McCune
2013-07-18 00:20:53 UTC
view on stackexchange narkive permalink

Il est impossible qu'un pentester puisse garantir à 100% que les données ne seront pas modifiées ou supprimées, de la même manière qu'il ne peut pas garantir que la disponibilité du système ne sera pas affectée (j'ai renversé des systèmes avec un port scan ou un seul caractère). comme vous le dites, un robot d'exploration peut supprimer des données d'un système s'il a été mal configuré.

Je dirais que ce qui devrait être dit est quelque chose comme "tout sera pris pour s'assurer que les tests n'affecte pas négativement les systèmes examinés et aucune tentative délibérée ne sera faite pour modifier ou supprimer les données de production ou pour affecter négativement la disponibilité des systèmes concernés. Cependant, avec tous les tests de sécurité, il existe un risque que les systèmes soient affectés et le client doit veiller à ce que des sauvegardes de toutes les données et de tous les systèmes soient en place avant le début de l'examen "

J'ai renversé un serveur en mettant un caractère Unicode dans un champ de l'application Web du client. Vous ne pouvez jamais être sûr à 100% que vos actions n'affecteront pas la disponibilité - des vecteurs d'échec inattendus sont partout.
J'ai eu des membres d'équipes testant des comptes fournis par le client comme des comptes «test» effectuant accidentellement des paiements internationaux :-) Cela arrive. Gardez la clause!
Je ne connais pas grand-chose à la sécurité mais j'ai rencontré beaucoup de bases de code en désordre et j'approuve ce message.
Ceci et le commentaire d'@MGOwen, essayez de lui expliquer le raisonnement au client. S'ils ne l'acceptent toujours pas, il vaut probablement mieux ne pas accepter le poste. Ce n'est pas que je sache grand-chose sur le pentesting, mais vous pouvez essayer de faire une injection SQL pour accéder au système et cette migration ravage les données, si ce n'est assez prudent.
En tant que testeur d'intrusion, vous allez essentiellement et finalement passer beaucoup de temps à fouiller des éléments du système avec la question "que se passe-t-il lorsque j'entre * ces * données inattendues * ici *?", Et à moins que vous ' Vous êtes autorisé à analyser le code lui-même en même temps, il n'y a aucun moyen de * garantir absolument * que la réponse * ne * se révélera pas être «le système se chie, efface sa base de données principale et corrompt les sauvegardes avant de s'échapper à travers la frontière à Tijuana avec le budget de l'entreprise ".
Tom Leek
2013-07-18 00:46:26 UTC
view on stackexchange narkive permalink

Un pentester qui prétend qu'il ne modifiera jamais les données de production est soit un sale menteur , soit se pense beaucoup plus compétent qu'il ne l'est en réalité, soit fortement a l'intention de ne rien faire du tout (c'est le seul moyen infaillible de ne jamais rien casser). Dans tous les cas, vous ne voulez pas travailler avec ce type.

Un client potentiel qui croit que les pentesters qualifiés n'endommageront jamais les systèmes testés, et qui refuse de travailler avec des pentesters à moins de promettre exactement cela, est un client qui 1. vit dans le pays des rêves des licornes féeriques, et 2. est presque assuré de ne jamais faire affaire qu'avec de sales menteurs. Il est dans une certaine désillusion à un moment donné, probablement d'une manière assez spectaculaire.

C'est un impératif moral et aussi une auto-protection de base pentesters d'inclure des clauses de rupture éventuelle dans leurs contrats. Le risque de dommages collatéraux est réel, même si le pentester est très bon dans ce qu'il fait (car les dommages ne viennent pas de la qualité du pentester mais de la mauvaise conception du système testé et mis en œuvre ). Un pentester pourrait être poursuivi pour ne pas avoir averti le client.

Un client qui refuse un contrat avec une telle clause porte un autre nom: "trouble". Il est généralement préférable d'ignorer complètement ces clients.

+1 client sent drôle, recule. Il s'agit d'un langage 100% standard inclus dans tous les engagements pentest.
Il me semble qu'il l'a lu comme "Nous pouvons faire ce que nous voulons pour votre système, et réclamer un" accident "quand nous nous trompons", plutôt que "Nous ne voulons pas être poursuivis en raison d'une situation imprévisible". Mais oui, ÉVITEZ.
@deworde Toute clarification de la condition telle que "nous prendrons toutes les mesures raisonnables pour éviter de briser le système" peut ultérieurement être poursuivie au motif que leurs mesures ne sont pas suffisamment raisonnables. En fonction de l'impact des dommages qu'ils causent, cela pourrait facilement dépasser ce qui serait autrement leur facture, et nécessiter une augmentation significative de leurs frais (par exemple: "Pourquoi le test du stylo coûte-t-il 1 million de dollars?" "Parce que c'est ce que nous attendons de vous pourrait nous poursuivre, il y a une réduction de 900k si vous acceptez de ne pas poursuivre ").
@Matt Je suis d'accord. C'est un échec à comprendre, pas un échec à transmettre. Si c'est la langue standard, le contrat ne peut vraiment * rien dire d'autre sans risque énorme avec aucun avantage. Au pire, vous finirez par envoyer le message que vous êtes prêt à négocier votre culpabilité.
user2213
2013-07-18 00:34:22 UTC
view on stackexchange narkive permalink

Attention: je ne suis pas un pentester professionnel. Et je travaille dans un logiciel de sauvegarde.

Un pentester qualifié et professionnel peut-il toujours garantir qu'aucune donnée ne sera supprimée ou modifiée en production lors d'un pentest?

Je dirais non, il n'y a aucune garantie absolue que quelque chose ne sera pas accidentellement supprimé lorsque vous essayez de casser des choses. Cependant, cela dit, un pentester devrait généralement essayer d'exploiter les systèmes d'une manière qui n'implique pas la suppression de données. Par exemple, alors que l'instruction SQL préférée de tout le monde est:

  select * from users where userid = 'dave'; DROP ALL TABLES;  

Une approche plus responsable consisterait simplement à lister toutes les données:

  sélectionnez * parmi les utilisateurs où userid = '2' OU 1 = 1;  

En général, j'imagine que la plupart des testeurs de stylos ont développé une série d'exploits de type non destructif comme ce dernier.

L'injection de Javascript sous ses différentes formes peut utilisez un simple code de preuve de concept tel que alert ("vous a exploité"); plutôt qu'un véritable code d'exploitation.

Un pentest peut-il vraiment être fait si l'équipe du pentest a la limitation que les données ne peuvent pas être créées ni modifiées?

Je dirais non. Comment montriez-vous une preuve de concept de XSS stocké sans pouvoir stocker votre XSS dans la base de données? Cela créera invariablement de nouvelles données.

Il existe de nombreux exemples où un exploit nécessite l'écriture de données, même si ce n'est que temporairement.

L'entreprise de pentesting devrait-elle toujours inclure la clause de non-responsabilité au cas où?

Encore une fois, j'étends mes connaissances personnelles ici, mais je vais dire oui.

Cela revient à tout l'intérêt d'embaucher une entreprise de test de stylos en premier lieu, cependant. Le but d'un test de stylo est d'identifier les risques qui pourraient nécessiter une évaluation et de les corriger avant que les méchants ne les trouvent.

J'espère aussi que tout bon pentester demanderait, et toute bonne entreprise aurait pensé, une reprise après sinistre à une certaine échelle. Vous devriez sûrement avoir une sauvegarde d'une certaine forme sur vos systèmes afin de pouvoir restaurer si nécessaire. Vous en avez besoin non seulement au cas où le pentest détruirait vos données, mais au cas où vous seriez vraiment violé par les méchants, auquel cas vous voudrez peut-être une sauvegarde non contaminée sur laquelle revenir.

Tout ce que je pense ici, c'est que même `alert (" vous a exploité ");` pourrait faire tomber des choses s'il y a un script "utile" qui utilise le système d'alerte et agit sur des chaînes commençant par ex. `` 'e' '
@medivh probablement, oui. Vous espérez que l'entreprise en question fournira aux pentesters de la documentation sur leur système afin que les gars sachent comment exécuter quelque chose qui ne le casse pas ...
@medivh Cela n'a même pas besoin d'être si compliqué.La plupart des outils de test d'interface utilisateur automatisés échoueront s'ils ne peuvent pas gérer les alertes inattendues.
Relaxing In Cyprus
2013-07-18 12:36:19 UTC
view on stackexchange narkive permalink

Je lance des tests d'intrusion assez régulièrement sur mes sites.

La première fois que j'en ai exécuté un, j'ai mis le site à l'arrêt et inondé leur serveur de messagerie de spam.

J'ai alors tweeked quelques formulaires, pour se débarrasser du spam et cela a permis d'identifier et de réparer tous les autres trous connus, sans arrêter le serveur.

J'ai été franchement étonné de la sournoiserie des exploiteurs , J'ai dû boucher des trous que je n'avais pas envisagés.

Mais le problème, c'est qu'avant d'exécuter les tests, je pensais que mes sites étaient sécurisés. J'avais suivi les meilleures pratiques, dans la mesure où elles allaient, pour la conception de sites Web, mais il y avait encore des problèmes.

Maintenant, avec le recul, j'apprécie que les tests peuvent affecter mon site de production.

Je prévois donc à l'avance.

Je m'assure que tout est d'abord sauvegardé.

Si le site est vraiment, vraiment critique, je créerai un clone complet, alors testez d'abord ce clone.

J'ai appris par expérience que si vous créez le clone, créez-le sur un serveur différent. Sinon, lorsque le clone s'arrête, le serveur affectera toujours votre environnement de production.

Mais je continue à faire mes tests. Comment pensez-vous que les pirates ont accès aux sites? Ils exécutent vraisemblablement des tests comme ceux-ci eux-mêmes, de manière non autorisée. Ainsi, tant que votre site n'est pas protégé, il sera toujours vulnérable. Il vaut bien mieux faire les tests en premier, avec les précautions (sauvegarde, etc.) en place, plutôt que de ramasser les pièces quand on s'y attend le moins.

Donc, oui, c'est acceptable, mais c'est est également prévisible et doit être gérée en conséquence.

vous pouvez placer le clone de test dans une VM étranglée si le matériel est serré. de cette façon, quand il s'arrête, il ne broie qu'avec 25% du processeur et la production en a encore 75 pour jouer
vous ne devriez jamais (stylo) test sur un serveur de production (virtualisés ou non) l'application vm peut avoir des bugs (ex: fuite de mémoire dans l'espace du noyau)
Si vous créez le clone sur un serveur distinct à l'aide de la sauvegarde que vous avez effectuée, vous testez également vos compétences en reprise après sinistre.
jmoreno
2013-07-21 07:30:00 UTC
view on stackexchange narkive permalink

La réponse à votre titre est "Oui", et le client doit le savoir!

Cette clause de non-responsabilité n'est pas un cas de CYA, c'est plutôt des informations vitales dont le client a besoin pour se préparer le pentest. Je ne suis pas un testeur de stylo, mais l'OMI cela ne devrait pas être enterré sur la dernière page des petits caractères, mais devrait être sur la page 1 du contrat, au centre et au centre et dans une grande police en gras. L'entreprise cliente doit se préparer à ce que les choses tournent mal - des sauvegardes doivent être effectuées, des plans de récupération créés et mis en place, etc. Laisser le client croire qu'un test du stylet est sans risque est irresponsable. Vous essayez par définition de déclencher un comportement incorrect, sans aucun contrôle sur la portée ou l'étendue de ce comportement brisé.

Les réponses aux 3 questions dans le corps de votre message sont: (1) non, vous ne peut faire aucune garantie sur le code des autres (2) une forme limitée de test de stylet pourrait être effectuée sans modifier ou créer INTENTIONNELLEMENT des données (si vous excluez toute journalisation que l'application peut faire) mais les résultats ne seraient pas complets, et enfin ( 3) vous devez TOUJOURS inclure cette clause de non-responsabilité - autant pour le bénéfice du client que pour le vôtre.

Le testeur recherche essentiellement une faille à exploiter et ne peut en aucun cas garantir qu'il ne trouvera pas de faille cela fait des dégâts. Considérez une clause de non-responsabilité de logiciel typique pour quelque chose qui n'est PAS destiné à rencontrer ou créer des failles, puis considérez que vous n'avez probablement pas écrit le code que vous testez ...

Donc, la réponse devrait être "Oui", n'est-ce pas? Parce qu'il est acceptable (et attendu) de modifier les données de production lors d'un pentest.
Il serait inhabituel, mais pas irresponsable, d'avoir un contrat dans lequel vous ne devez pas modifier intentionnellement les données de production d'une manière non standard. Il est techniquement impossible de garantir qu'une base de code inconnue ne causera pas de dommages lors d'une utilisation NORMALE, sans parler du type d'utilisation inhabituelle impliquée dans les tests de stylet. Je vois que je devrais développer un peu ma réponse.
Francesco Manzoni
2013-07-19 14:40:35 UTC
view on stackexchange narkive permalink

Vous ne pouvez probablement vous assurer que sous certaines conditions. De toute évidence, Pentest est un compromis entre de nombreux facteurs, certains facteurs sont directement antagonistes à la disponibilité du système et l'un d'entre eux est la profondeur de votre analyse. Certains pourraient soutenir qu'un pentest sans exploitation n'est pas un pentest.

Dans le passé, j'ai dû tester certains systèmes SCADA qui sont assez connus pour leur fragilité et je peux vous assurer qu'il est possible de régler la plupart des outils pour être assez doux. Par exemple, la désactivation de l'empreinte digitale NMAP et le délai croissant entre les paquets ont beaucoup aidé.

Cependant, pour répondre personnellement à votre question, je n'accepterai JAMAIS de mettre une clause pour garantir cela à un de mes clients. Je vais lui donner ma parole, mais sur le plan commercial, vous ne pouvez pas être responsable si leur candidature se rompt d'elle-même pendant votre pentest.

+1 pour l'idée qu'un pentest sans exploitation n'est pas un pentest
la direction considère simplement le test de pénétration comme «coûteux» et l'évaluation de la vulnérabilité comme «bon marché». S'ils vous paient assez, c'est ** TOUJOURS ** un pentest.
user29367
2013-08-11 01:16:33 UTC
view on stackexchange narkive permalink

"Un pentester qualifié et professionnel peut-il toujours garantir qu'aucune donnée ne sera supprimée ou modifiée en production pendant un pentest?"

Non.

"Un pentest peut-il vraiment être fait si l'équipe du pentest a la limitation que les données ne peuvent pas être créées ni modifiées?"

Je ne pense pas. .

"La société de test doit-elle toujours inclure la clause de non-responsabilité au cas où?"

Un accord interne sera très différent de celui d'un tiers accord. Je ne connais aucune entreprise de test de stylo qui n'ait pas de limitation d'assurance responsabilité civile, entre autres protections ...

atdre
2015-04-19 12:20:23 UTC
view on stackexchange narkive permalink

Les tests de pénétration doivent suivre une méthodologie où les tests qui peuvent causer des dommages ne sont effectués que dans des scénarios hors production, comme un environnement de test ou de laboratoire.

Le vrai problème n'est pas la suppression ou la modification des données car les testeurs peuvent laisser ces cas de test à des systèmes hors production. Le vrai problème est de laisser de nouvelles données, telles que des journaux d'erreurs ou des fichiers erronés superflus qui révèlent des informations confidentielles, ou même l'existence du pentest lui-même, y compris les données côté client du testeur de pénétration.

Un autre problème La révélation d’autres données de clientèle, d’e-mails professionnels ou de signets de navigateur lors de démonstrations ou de screencasts est courante dans les tests de pénétration.

Les tests de pénétration sont souvent effectués en production et vous ne pouvez pas garantir qu'un test qui semble inoffensif supprime quelque chose en raison du comportement d'un site Web par exemple.
Je peux; peut-être que tu ne peux pas
Je pense que vous n'avez pas lu le reste des réponses ni la réponse valable. Comment pouvez-vous prédire qu'un bouton qui dit «Rechercher» supprime des informations dans la base de données si un programmeur a programmé cette fonctionnalité et que vous n'avez pas accès au code source?
La différence entre certaines personnes sur ce forum qui suivent la lettre de la loi, et moi, qui suit l'esprit de la loi - est que je peux réinterpréter le sens à partir des questions et «remettre en question la question». C'est bon de débattre. C'est normal d'avoir des perspectives différentes. C'est le monde dans lequel je veux vivre. Tous mes tests de stylo sont des connaissances complètes. Je reçois toujours le code source en premier.
Les programmeurs sont infiniment inventifs pour trouver des moyens de fragiliser leurs programmes. Par exemple, un logiciel avec lequel je travaille (un système de base de données) peut être bloqué par une simple analyse de ports semi-ouverte, avec un risque de perte de données.
Je ne pense vraiment pas que les personnes qui ont commenté en réponse à mon message ou qui m'ont critiqué comprennent les problèmes ici. Ils n'ont pas l'expérience. Les tests doivent avoir lieu. Les tests font avancer les choses. Tester certains éléments en prod et d'autres en développement ou en test est la voie à suivre. Comprendre ce qui ne va pas dans les deux est le zen des tests de sécurité et des tests de stylet.


Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...