Le pire trou de sécurité que vous ayez vu? [fermé]

413

Quel est le pire trou de sécurité que vous ayez jamais vu? C'est probablement une bonne idée de limiter les détails pour protéger les coupables.

Pour ce que ça vaut, voici une question sur ce qu'il faut faire si vous trouvez un trou de sécurité, et un autre avec des réponses utiles si une entreprise ne (semble pas) répondre.

si618
la source
47
Devrait être le wiki de la communauté imo ...
ChristopheD
Excellent fil! J'espère qu'il peut être lié à DailyWTF.com
Dale
Pourquoi fermé? C'est une question parfaitement raisonnable? !!
johnc
15
les 60 réponses et 28 votes positifs sembleraient l'emporter sur les 5 votes à clôturer (qui ont mis toute la journée à s'accumuler, AFAIK). mais je m'abstiendrai de voter pour la réouverture jusqu'à ce que cela ait été discuté.
rmeador
7
Même si votre question est sur le wiki de la communauté depuis des heures, le commentaire est toujours un bon commentaire à voter, car il rappelle aux gens que les questions similaires à celle-ci doivent être le wiki de la communauté . C'est ce que je pense.
Joren

Réponses:

646

Depuis les débuts des boutiques en ligne:

Bénéficiez d'une remise de 90% en saisissant 0,1 dans le champ Quantité du panier. Le logiciel a correctement calculé le coût total comme .1 * coût, et l'homme emballant la commande a simplement glissé sur les "." devant la quantité à emballer :)

John Stauffer
la source
75
C'est certainement un argument en faveur de l'utilisation d'un système fortement typé.
Powerlord le
54
Quel est le site? Je veux une remise de 90% !!!
amischiefr
58
Peut-être auriez-vous dû demander une quantité de 0,10% à la place. ;)
MiffTheFox
81
Jeff Bezos a mentionné qu'au tout début d'Amazon, vous pouviez avoir une quantité négative de livres et qu'Amazon créditerait votre compte (et attendrait probablement que vous le lui expédiez). Voir 0:47 sur youtube.com/watch?v=-hxX_Q5CnaA
Jeff Moser
10
J'aurais adoré voir le visage du client qui s'est fait livrer les disques durs .1 qu'il a payés.
relancer le
575

Le trou de sécurité le moins pardonnable, et malheureusement très courant et facile à trouver, est le piratage de Google . Exemple concret:

http://www.google.com/search?q=inurl%3Aselect+inurl%3A%2520+inurl%3Afrom+inurl%3Awhere

C'est incroyable le nombre de pages sur Internet, les sites gouvernementaux en particulier, qui passent une requête SQL à travers la chaîne de requête. C'est la pire forme d'injection SQL, et il ne faut aucun effort pour trouver des sites vulnérables.

Avec des ajustements mineurs, j'ai pu trouver des installations non protégées de phpMyAdmin, des installations non protégées de MySQL, des chaînes de requête contenant des noms d'utilisateur et des mots de passe, etc.

Juliette
la source
6
Oh mon Dieu, comme c'est stupidement inconcevable. Ce serait moi que j'emmène ce développeur aux RH avec une boîte à la main.
squillman
95
les petites tables de Bobby frappent à nouveau ... xkcd.com/327
gbjbaanb
86
OMFG ... la prochaine fois que j'ai une mauvaise journée, je vais déposer quelques tables
Michael Niemand
11
Ce que j'aime vraiment dans cet exemple, c'est que le premier résultat provient d'un blog Oracle.
Ravi Wallau
400

Ingénierie sociale:

<Cthon98> hey, if you type in your pw, it will show as stars
<Cthon98> ********* see!
<AzureDiamond> hunter2
<AzureDiamond> doesnt look like stars to me
<Cthon98> <AzureDiamond> *******
<Cthon98> thats what I see
<AzureDiamond> oh, really?
<Cthon98> Absolutely
<AzureDiamond> you can go hunter2 my hunter2-ing hunter2
<AzureDiamond> haha, does that look funny to you?
<Cthon98> lol, yes. See, when YOU type hunter2, it shows to us as *******
<AzureDiamond> thats neat, I didnt know IRC did that
<Cthon98> yep, no matter how many times you type hunter2, it will show to us as *******
<AzureDiamond> awesome!
<AzureDiamond> wait, how do you know my pw?
<Cthon98> er, I just copy pasted YOUR ******'s and it appears to YOU as hunter2 cause its your pw
<AzureDiamond> oh, ok.

De bash.org

Bob Aman
la source
2
Cela arrivait tout le temps sur Runescape.
EvilTeach
7
Cet échange particulier a peu de chances de se produire (qui tapera "euh" quand ils essaient de couvrir quelque chose?), Mais drôle quand même.
Michael Myers
1
mmyers: il est également très improbable que quelqu'un soit assez stupide pour se faire rm, mais cela se produit définitivement. Je l'ai vu moi-même :)
Matthew Iselin
25
Il n'y a rien de plus dangereux que le cerveau des idiots
Earlz
1
@EvilTeach, ils l'ont effectivement implémenté sur RuneScape. Je ne plaisante même pas!
corsiKa
339

Histoire vraie de mes débuts chez Microsoft.

Vous n'avez pas connu la peur jusqu'au jour où vous vous réveillez et voyez le titre sur ZDNet.com ce matin-là " pire trou de sécurité d'Internet Explorer a jamais été découvert dans" Blah " " où "Blah" est le code que vous vous avez écrit six mois auparavant .

Immédiatement après mon arrivée au travail, j'ai vérifié les journaux des modifications et découvert que quelqu'un dans une autre équipe - quelqu'un en qui nous avions confiance pour apporter des modifications au produit - avait extrait mon code, changé un tas de paramètres de clé de registre de sécurité sans raison valable, Je l'ai réintégré, et je n'ai jamais eu d'examen du code ni en parler à personne. À ce jour, je n'ai aucune idée de ce qu'il pensait qu'il faisait; il a quitté l'entreprise peu après. (De son propre gré.)

(MISE À JOUR: Quelques réponses aux questions soulevées dans les commentaires:

Tout d'abord, notez que je choisis de prendre la position caritative que les changements de clé de sécurité étaient involontaires et basés sur la négligence ou la méconnaissance, plutôt que sur la malveillance. Je n'ai aucune preuve dans un sens ou dans l'autre, et je pense qu'il est sage d'attribuer des erreurs à la faillibilité humaine.

Deuxièmement, nos systèmes d'enregistrement sont beaucoup, beaucoup plus solides maintenant qu'ils ne l'étaient il y a douze ans. Par exemple, il n'est désormais plus possible d'enregistrer le code sans que le système d'enregistrement envoie la liste des modifications par e-mail aux parties intéressées. En particulier, les changements apportés à la fin du cycle d'expédition ont beaucoup de «processus» autour d'eux, ce qui garantit que les bons changements sont apportés pour assurer la stabilité et la sécurité du produit.)

Quoi qu'il en soit, le bogue était qu'un objet qui n'était PAS sûr d'être utilisé à partir d'Internet Explorer avait été accidentellement publié comme étant marqué comme "sûr pour les scripts". L'objet était capable d'écrire des fichiers binaires - des bibliothèques de type OLE Automation, en fait - dans des emplacements de disque arbitraires. Cela signifiait qu'un attaquant pouvait créer une bibliothèque de types qui contenait certaines chaînes de code hostile, l'enregistrer dans un chemin qui était un emplacement exécutable connu, lui donner l'extension de quelque chose qui provoquerait l'exécution d'un script et espérer que l'utilisateur exécuterait accidentellement le code. Je ne connais aucune attaque réussie "du monde réel" qui a utilisé cette vulnérabilité, mais il a été possible de créer un exploit fonctionnel avec elle.

Nous avons expédié un patch assez rapidement pour celui-là, laissez-moi vous dire.

J'ai causé et corrigé par la suite de nombreuses autres failles de sécurité dans JScript, mais aucune d'entre elles n'a jamais été aussi proche de la publicité que celle-ci.

Eric Lippert
la source
81
Sans doute, il s'agit en fait de 2 exploits de sécurité; l'autre étant comment obtenir du code sur un serveur de build de production sans que personne ne remarque / approuve le changement ;-p
Marc Gravell
8
"avait vérifié mon code, changé un tas de paramètres de clé de registre de sécurité sans raison valable, l'avait archivé à nouveau et n'avait jamais obtenu de révision du code ou n'en avait parlé à personne" - cela ne me semble pas incompétent, cela sonne comme une intention malveillante de quelqu'un savait exactement ce qu'il faisait.
Juliet
80
"N'attribuez jamais à la malveillance ce qui peut être expliqué de manière adéquate par la stupidité." - Hanlon's Razor
David R Tribble
15
Il n'y a pas de système de contrôle de source unique dont l'utilisation est obligatoire dans Microsoft. De nos jours, la plupart des équipes utilisent Source Depot ou Team Foundation. Sans surprise, les équipes de produits Visual Studio utilisent généralement Team Foundation. Mangez votre propre nourriture pour chien, vous savez.
Eric Lippert
40
Qui vérifie ZDNet avant d'aller travailler?
Neil N
274

J'espère que vous pouvez repérer ce qui ne va pas ici. (Terriblement mal, en fait):

String emailBody = "";

for (int i = 0; i < subscribers.Count; i++)
{
    emailBody += "Hello " + subscribers[i].FirstName + ",";
    emailBody += "this is a reminder with your account information: \n\n:";
    emailBody += "Your username: " + subscribers[i].Username + "\n";
    emailBody += "Your password: " + subscribers[i].Password + "\n";
    emailBody += "Have a great day!";

    emailDispatcher.Send(subscribers[i].EmailAddress, emailBody);
}

Le dernier récipiendaire était le plus heureux;)

Alex
la source
226
Parlez-vous du fait que vous stockez des mots de passe en texte brut ou du fait que l'emailBody n'est jamais effacé? Je ne sais même pas ce qui est pire.
Kristof Provost, le
208
Vous voulez dire que vous n'utilisez pas StringBuilder? : D (Je plaisante.)
ShdNx
58
@Kristof - Je suppose qu'il veut dire que le dernier utilisateur obtient une liste de TOUS les utilisateurs et mots de passe. :)
Don Branson
141
Je déteste absolument les systèmes qui me renvoient mon mot de passe dans le cadre du processus d'inscription. Cela a deux défauts: 1. Ils stockent mon mot de passe en clair quelque part dans leur système. Si ce n'est pas leur base de données d'utilisateurs permanente, certainement leur système de traitement d'inscription. 2. Il a été envoyé via EMAIL, soit en texte brut ou en HTML, en passant par SMTP via des relais de messagerie sur Internet. Il y a un certain nombre d'hommes au milieu qui pourraient intercepter cela. À tout le moins, si vous ressentez le besoin de m'envoyer des e-mails contenant des informations sécurisées, laissez-moi vous spécifier ma clé PGP publique pour la crypter!
Jesse C. Slicer
16
J'ai utilisé une fois les hachages MD5 pour protéger les mots de passe dans une base de données. Mais après avoir exécuté les résultats sur une table arc-en-ciel et correspondant à environ 50% des mots de passe ... je me suis dit que c'était le bon moment pour ajouter un sel.
Matthew Whited, le
206

Les anciens terminaux dumb IBM System 36 avaient une combinaison de clavier qui a commencé l'enregistrement d'une macro. Ainsi, lorsqu'un terminal n'est pas connecté, vous pouvez démarrer l'enregistrement d'une macro et la laisser dans cette position. La prochaine fois que quelqu'un se connectera, les frappes seront enregistrées dans la macro et l'enregistrement se terminera automatiquement lorsque le nombre maximum de touches autorisées sera enregistré. Revenez plus tard et relisez la macro pour vous connecter automatiquement.

texte alternatif

Stefan
la source
204

Le pire trou de sécurité que j'ai jamais vu a été réellement codé par le vôtre et a provoqué la suppression de toute la base de données par Google Bot.

À l'époque où j'apprenais l'ASP Classic, j'ai codé ma propre application de blog de base. Le répertoire avec tous les scripts d'administration a été protégé par NTLM sur IIS. Un jour, j'ai déménagé sur un nouveau serveur et j'ai oublié de re-protéger le répertoire dans IIS (oups).

La page d'accueil du blog avait un lien vers l'écran d'administration principal, et l'écran d'administration principal avait un LIEN SUPPRIMER pour chaque enregistrement (sans confirmation).

Un jour, j'ai trouvé tous les enregistrements de la base de données supprimés (des centaines d'entrées personnelles). Je pensais qu'un lecteur avait fait irruption sur le site et avait supprimé par malveillance chaque enregistrement.

Je suis venu pour découvrir à partir des journaux: le Google Bot avait exploré le site, suivi le lien d'administration, et a continué à suivre tous les liens de suppression, supprimant ainsi chaque enregistrement de la base de données. Je sentais que je méritais le prix Dumbass of the Year compromis par inadvertance par le Google Bot.

Heureusement, j'ai eu des sauvegardes.

Matias Nino
la source
13
Je suppose que cela montre à quel point c'est une erreur.
si618
96
C'est pourquoi vous devriez toujours POSTER pour changer les actions.
récursif le
7
@recursive: true, mais si le répertoire n'est pas protégé par mot de passe, il n'empêche pas un humain de tout supprimer.
DisgruntledGoat
2
J'ai eu ce problème avec des plugins de navigateur qui prélecture des liens. J'ai déjà travaillé pour un site de blogs, et nous avons été perplexes pendant des jours lorsqu'un utilisateur a signalé que tous les commentaires sur son blog disparaîtraient mystérieusement.
Matthew
7
Non, tu ne méritais pas ce prix. Vous l'auriez mérité si cela s'était produit et que vous n'aviez pas de sauvegarde.
Ryan Lundy
187

Le pire trou que j'ai jamais vu était un bug dans une application Web où donner un nom d'utilisateur et un mot de passe vides vous connectait en tant qu'administrateur :)

Kaitsu
la source
144
Un bug ou une fonctionnalité pour les développeurs paresseux? :)
si618
9
J'ai vu un tel code. C'est généralement parce que la recherche d'utilisateur utilise un LIKE, comme dans "SELECT * FROM [User] Où UserName LIKE '%" + userName + "%'". Et puisque l'administrateur est généralement le premier utilisateur de la base de données, il renvoie cet utilisateur.
Pierre-Alain Vigeant le
11
pourquoi voudriez-vous faire un LIKE avec un nom d'utilisateur? ... afin que je puisse être administrateur en tapant adm quand je ment pour taper Adam
Matthew Whited
20
La plupart des entreprises vous proposent trois tentatives de connexion sous un ID utilisateur donné avant de verrouiller le compte. Il est donc très facile de verrouiller le compte d'une autre personne avec trois mauvais mots de passe.
David R Tribble,
3
J'ai vu cela dans de nombreuses applications Web d'entreprise qui s'authentifient auprès d'un annuaire LDAP. Dans LDAP, un mot de passe vide entraîne une connexion anonyme réussie . L'utilisateur anonyme ne peut pas faire grand chose, mais les webapps utilisant ce mécanisme ne vont pas jusqu'à vérifier - elles supposent juste "succès = mot de passe correct"!
SimonJ
174

Une fois remarqué cela sur l'URL d'un site Web.

http://www.somewebsite.com/mypage.asp?param1=x&param2=y&admin=0

Changer le dernier paramètre en admin = 1 m'a donné des privilèges d'administrateur. Si vous voulez faire confiance aveuglément aux entrées des utilisateurs, au moins ne télégraphiez pas que vous le faites!

JohnFx
la source
19
C'est une fonctionnalité pratique;) Vous n'avez pas vu WarGames? Quelque chose comme "tout bon développeur ajoute une porte dérobée à son système" hehe.
alex
38
Alors peut-être qu'ils auraient dû utiliser & admin = JOSHUA
JohnFx
165

J'ai vu celui-ci dans The Daily WTF .

<script language="javascript">
<!--//
/*This Script allows people to enter by using a form that asks for a
UserID and Password*/
function pasuser(form) {
    if (form.id.value=="buyers") { 
        if (form.pass.value=="gov1996") {              
            location="http://officers.federalsuppliers.com/agents.html" 
        } else {
            alert("Invalid Password")
        }
    } else {  
        alert("Invalid UserID")
    }
}
//-->
</script>

Rien ne peut battre cette IMHO.

Konamiman
la source
21
Je pense que ce n'est peut-être pas aussi stupide que vous le pensez. Ce mot de passe trivial pourrait fonctionner comme le bouton "oui, je suis du gouvernement fédéral", à la différence qu'une personne qui essaie de l'utiliser à mauvais escient, si elle est capturée, peut également être poursuivie pour "fourniture de fausses informations d'identification" (ou comment ils l'appellent? )
ilya n.
29
ilya: C'est Javascript, donc il est visible pour l'utilisateur. Après avoir vu cela, vous pouvez simplement aller sur officiers.federalsuppliers.com/agents.html , en contournant tout type de contrôle.
Alsciende
68
Ne vous inquiétez pas, tant que le site Web est protégé par des droits d'auteur, le DMCA offre une protection à 100%. Vous n'êtes pas autorisé à "contourner" le Javascript.
Steve Hanov le
13
@Steve Hanov: Vous avez une définition intéressante de "contourner" Si je tape cette URL dans mon navigateur ... ou même la copie / colle ... Je ne contourne rien, j'utilise simplement mon navigateur pour aller à une adresse que j'ai mise dans ma barre d'adresse. C'est l'un des objectifs visés d'un navigateur Web.
Powerlord
46
félicitations, vous êtes innocent, dommage qu'il en coûte 300k pour convaincre un jury que
Dustin Getz
141

Dans une université non moins, qui restera sans nom, ils ont fait passer toutes leurs requêtes d'action via l'URL au lieu du formulaire.

La chose a fonctionné jusqu'à ce que Google Bot arrive, parcoure toutes leurs URL et efface sa base de données.

Evernoob
la source
18
Bonne vieille injection SQL par conception. J'ai travaillé avec une fonctionnalité de génération de rapports qui a intégré cette "fonctionnalité".
ICodeForCoffee
18
@ICodeForCoffee: où est l'injection SQL ici? C'est juste confondre les objectifs de GET vs POST. C'est une erreur assez courante des développeurs Web novices. Je me souviens d'avoir lu un article du Daily WTF sur ce problème précis.
rmeador le
N'y avait-il pas une version très précoce si Wikipédia avait ce problème? Ils avaient des liens qui annuleraient les modifications ou quelque chose.
DisgruntledGoat
14
Le vrai problème ici est que Googlebot pourrait effacer la base de données sans jamais s'authentifier.
MiffTheFox
34
J'espère qu'ils ont pu les récupérer dans le cache Google.
fastcodejava
137

Surpris, personne n'a évoqué l'ingénierie sociale, mais j'ai eu un coup de pied hors de cet article .

Résumé: les utilisateurs malveillants peuvent acheter quelques dizaines de lecteurs flash, les charger avec un virus à exécution automatique ou un cheval de Troie, puis saupoudrer lesdits lecteurs flash dans le parking d'une entreprise tard dans la nuit. Le lendemain, tout le monde se présente au travail, bute sur le matériel brillant, en forme de bonbon, irrésistible et se dit "oh wow, lecteur flash gratuit, je me demande ce qu'il y a!" - 20 minutes plus tard, l'ensemble du réseau de l'entreprise est arrosé.

Juliette
la source
69
Autorun est mauvais.
Mark Ransom
22
@mmyers: interdire les lecteurs flash n'est pas la bonne approche. Arrêtez l'exécution automatique / automatique.
Jay le
10
Lire il y a quelque temps, une autre approche (du temps des disquettes). Vivez une disquette infectée au démarrage intitulée "Données comptables - confidentielles" dans un couloir du bureau et attendez 5 minutes. Irrésistible!
Rodrigo
13
Heureusement, je peux toujours démarrer à partir d'un CD Linux Live et examiner le lecteur flash à partir de là.
David Thornley
6
@Jay - Malheureusement, combien de personnes regarderaient les fichiers et double-cliqueraient sur eux "pour voir ce qu'ils font"? L'interdiction est une nécessité plusieurs fois parce que les gens ne pensent pas.
JasCav
131

"Pedo mellon a minno" , "Parle ami et entre", aux portes de la Moria.

Adriano Varoli Piazza
la source
13
Comme si on ne pouvait pas faire confiance à quelqu'un qui parle elfique!
Artelius
6
xkcd.com/424
Lily Chung
103

Microsoft Bob
(Crédit: Dan's 20th Century Abandonware )

Si vous entrez votre mot de passe une troisième fois de manière incorrecte, il vous sera demandé si vous avez oublié votre mot de passe.

http://img132.yfrog.com/img132/8397/msbob10asignin15.gif

Mais au lieu d'avoir la sécurité, comme continuer à demander le mot de passe correct jusqu'à ce qu'il soit entré ou vous bloquer après un certain nombre de tentatives incorrectes, vous pouvez entrer n'importe quel nouveau mot de passe et il remplacera l'original! Tout le monde peut le faire avec n'importe quel compte Microsoft Bob «protégé» par mot de passe.

Aucune authentification préalable n'est requise. Cela signifie que l'utilisateur 1 pourrait changer son propre mot de passe simplement en tapant trois fois son mot de passe puis en entrant un nouveau mot de passe la quatrième fois - sans jamais avoir à utiliser "changer le mot de passe".

Cela signifie également que User1 pourrait changer les mots de passe de User2, User3 ... exactement de la même manière. Tout utilisateur peut modifier le mot de passe de n'importe quel autre utilisateur simplement en le tapant trois fois, puis en entrant un nouveau mot de passe à l'invite - et il peut alors accéder au compte.

http://img132.yfrog.com/img132/9851/msbob10asignin16.gif

JohnFx
la source
7
Il s'agit du même comportement que Windows lui-même lorsqu'un ordinateur n'est pas administré par un domaine. Même sur Windows Vista Ultimate, vous pouvez réinitialiser un mot de passe à tout moment. Je suppose que le déni de service est considéré comme une menace plus importante que l'accès non autorisé; d'autant plus que vous pouvez obtenir la plupart des choses simplement en remontant le disque ailleurs de toute façon. Je crois que le but du mot de passe dans ce cas est la détection d' intrusion plutôt que la prévention.
Jeffrey L Whitledge
1
@Jeffrey: Le fait est qu'une fois que le chapeau noir a un accès physique, c'est à peu près "game over". Si vous souhaitez vous protéger contre cela, vous avez besoin d'un chiffrement sérieux (ainsi que des moyens de rechercher les enregistreurs de frappe matériels et logiciels, etc.).
David Thornley
8
Quelqu'un plus sage que moi a fait remarquer qu'il ne s'agit que d'une bonne modélisation des menaces. `` Bob '' était destiné à un usage domestique à une époque sans réseau et vous étiez beaucoup plus susceptible de subir une tentative de DOS de la part de votre petite sœur ou d'une gueule de bois que d'un cambrioleur. Bob vous a fait savoir que votre compte avait été accédé (car votre ancien mot de passe ne fonctionnait plus) mais n'a pas essayé d'en faire plus.
bgiles
20
Ma femme vient de me voir regarder ça ... Elle: "Oh mon Dieu! Quel programme est-ce?!" Moi: "... Microsoft Bob?" Elle: "J'ai adoré Microsoft Bob!" Soupir ...
Tim Goodman
10
@ChristianWimmer - Cela ressemble un peu à donner aux gens un sac à dos marqué "Parachute" afin qu'ils s'habituent à la sensation d'un sur leur dos, mais sans leur dire qu'il n'y a pas de parachute là-dedans.
JohnFx
102

J'avais l'ancienne adresse personnelle de Joe X et j'avais besoin de connaître sa nouvelle adresse actuelle dans la même ville, mais je n'avais aucun moyen de le contacter. Je pensais qu'il recevait la pile quotidienne habituelle de catalogues de vente par correspondance, alors j'ai appelé arbitrairement le numéro 800 de See's Candies (par opposition à Victoria's Secret, ou Swiss Colony, ou tout autre gros expéditeur):

Moi: "Bonjour, je suis Joe X. Je pense que vous m'avez inscrit deux fois sur votre liste de diffusion, à la fois à mon ancienne adresse et à ma nouvelle adresse. Est-ce que votre ordinateur me montre à [ancienne adresse] ou à [fausse adresse] ? "

Opérateur: "Non, nous vous montrons à [nouvelle adresse]."

joe snyder
la source
36
Ah, je dois aimer l'ingénierie sociale. L'aspect humain de la sécurité est généralement le plus faible.
EMP
95

Donner 1 = 1 dans une zone de texte répertorie tous les utilisateurs du système.

rahul
la source
325
Salutations de Bobby Tables.
Gumbo
4
Comment le commentaire de @ Gumbo peut-il être voté 4 fois plus que la réponse?
Lie Ryan
12
Simplement, 4 fois le nombre de personnes qui ont voté pour la question avait voté son commentaire: /
RobertPitt
4
L'un des 221 votants des Bobby Tables pourrait-il dire au reste d'entre nous ce qu'est l'enfer des Bobby Tables?
kirk.burleson du
15
@ kirk.burleson: xkcd.com/327
gspr
76

En tant que consultant en sécurité des applications dans la vie, il y a beaucoup de problèmes communs qui vous permettent d'obtenir un administrateur sur un site Web via quelque chose. Mais la partie vraiment cool, c'est quand vous pouvez acheter pour un million de dollars de chaussettes.

C'était un ami à moi qui travaillait sur ce concert, mais l'essentiel était que les prix des articles dans une certaine boutique de livres en ligne (et tout le reste) maintenant très populaire étaient stockés dans le HTML lui-même en tant que champ caché. Au début, ce bogue a touché beaucoup de magasins en ligne, ils commençaient tout juste à comprendre le Web. Très peu de sensibilisation à la sécurité, je veux dire vraiment qui va télécharger le code HTML, modifier le champ caché et soumettre à nouveau la commande?

Naturellement, nous avons changé le prix à 0 et commandé 1 million de paires de chaussettes. Vous pouvez également changer le prix en négatif, mais cela a fait en sorte qu'une partie du dépassement de la mémoire tampon du logiciel de facturation du backend a mis fin à la transaction.

Si je pouvais en choisir un autre, ce serait des problèmes de canonisation de chemin dans les applications Web. C'est merveilleux de pouvoir faire foo.com?file=../../../../etc/passwd

Collin
la source
9
Génial, vous n'auriez plus jamais de chaussette gauche manquante!
si618
75
Avez-vous déjà obtenu les chaussettes?
Alex Barrett, le
32
La commande a été exécutée et le système de traitement des commandes a alerté l'entrepôt. Nous avons réalisé que cela fonctionnait probablement et avons dit à notre point de contact qu'ils devaient arrêter la commande. Apparemment, un peu plus tard, un responsable d'entrepôt a appelé pour demander si la commande était réelle. Il était sagement d'avis que c'était une erreur logicielle.
Collin
27
@StuperUser, Sur vos pieds, bien sûr.
strager
12
Pas de problème de stockage, il suffit de pirater le site Web d'Ikea ​​pour commander 100 000 jeux de tiroirs pour les installer,
Neil Aitken
64

Validation accidentelle du mot de passe root de la base de données dans le contrôle de code source. C'était assez mauvais, car c'était le contrôle de code source sur Sourceforge.

Inutile de dire que le mot de passe a été changé très rapidement.

Matthew Iselin
la source
144
OK, le mot de passe a été changé très rapidement ... mais par qui ?
Eamon Nerbonne le
1
Été sur cette route. De nombreux systèmes (comme django, par exemple) encouragent pratiquement cela, car ils vous demandent de mettre votre mot de passe de base de données dans le fichier de paramètres, ce qui, naturellement, est très facile à archiver.
mlissner
56

Ne pas changer les mots de passe administrateur lorsque les principaux employés des TI quittent l'entreprise.

Max
la source
1
ou quitter les valeurs par défaut comme admin / admin (aussi bien ou surtout dans le matériel) ...
Gnark
47
J'ai un pire - je suis parti d' une université après avoir été enfilées le long, avec le répertoire me disant qu'ils créent un emploi de grade supérieur pour moi après avoir obtenu leur diplôme, mais j'appris plus tard , il a dit à mon directeur , ils étaient pas à me promouvoir. Inutile de dire que je n'en étais pas content. J'ai spécifiquement dit à mon manager de changer chaque mot de passe auquel j'avais accès. La semaine après mon départ, je reçois un e-mail de mon manager avec le mot de passe root, "juste au cas où j'en aurais besoin". J'ai contacté le sysadmin pour m'assurer qu'il a été changé à nouveau, car je ne voulais pas prendre la chute en cas de problème.
Joe
10
@Sophomore: Je me souviens dans la biographie de Feynman qu'il a commenté que de nombreux coffres-forts géants ultra-sécurisés abritant les secrets du projet Manhattan étaient laissés dans les combinaisons par défaut.
Brian
12
Je peux juste imaginer un espion de l'URSS arriver dans le coffre-fort et essayer tout ce à quoi il peut penser pour casser le coffre-fort. pour la mère Russie!"
Eric
3
Je ne peux pas sourire en lisant ceci, je travaillais comme technicien informatique un été dans une entreprise suédoise très connue, et quand je suis revenu plusieurs années plus tard pour travailler en tant qu'ingénieur, j'ai eu des problèmes pour installer certains logiciels. À l'improviste, je me suis souvenu de l'ancien mot de passe administrateur, et le tour est joué! cela a fonctionné =)
Viktor Sehr
50

Bien que ce ne soit pas le pire trou de sécurité que j'aie jamais vu. Mais c'est au moins le pire que j'ai découvert moi-même:

Une boutique en ligne assez réussie pour les livres audio a utilisé un cookie pour stocker les informations d'identification de l'utilisateur actuel après une authentification réussie. Mais vous pouvez facilement changer l'ID utilisateur dans le cookie et accéder à d'autres comptes et acheter sur eux.

Gumbo
la source
Wow ... J'ai eu la chose exacte qui m'est arrivée sur un code ASP dont j'ai hérité.
Radu094
Je maintiens une application qui a exactement ce problème. Il est en haut de la liste des correctifs, bien sûr. Heureusement, ce n'est pas un site de commerce électronique.
quentin-star du
12
Cela se produit plus souvent que la plupart des gens ne le pensent.
NotMe
47

Dès le début de l'ère .com, je travaillais pour un grand détaillant à l'étranger. Nous avons regardé avec grand intérêt nos concurrents lancer une boutique en ligne des mois avant nous. Bien sûr, nous sommes allés l'essayer ... et nous nous sommes vite rendu compte que nos paniers se mélangeaient. Après avoir joué un peu avec la chaîne de requête, nous avons réalisé que nous pouvions nous pirater les sessions les uns des autres. Avec un bon timing, vous pouvez changer l'adresse de livraison mais laisser le mode de paiement seul ... tout cela après avoir rempli le panier avec vos articles préférés.

Eric J.
la source
Bien sûr, cela signifie que vous avez malicieusement fait quelque chose pour leur faire envoyer des marchandises frauduleusement si vous le faites réellement, et leur avez dit votre adresse.
David Thornley
6
Oui, c'est ce qui en fait un trou de sécurité majeur. Nous n'avons pas vraiment appuyé sur le bouton d'achat, mais nous aurions pu. Et, sur la base de reportages, certaines personnes l'ont fait.
Eric
45

Lorsque j'ai rejoint l'entreprise dans laquelle je travaille actuellement, mon patron consultait le site Web de commerce électronique existant d'un nouveau client potentiel. C'était au tout début de l'IIS et du commerce électronique, et la sécurité était, disons, moins rigoureuse.

Pour abréger une longue histoire, il a modifié une URL (juste par curiosité), et s'est rendu compte que la navigation dans les répertoires n'était pas désactivée, vous pouvez donc couper le nom de la page à la fin de l'URL et voir tous les fichiers sur le serveur Web.

Nous avons fini par parcourir un dossier contenant une base de données Access, que nous avons téléchargée. Il s'agissait de l'intégralité de la base de données des clients / commandes de commerce électronique, remplie de plusieurs milliers de numéros de carte de crédit non cryptés.

Mark Bell
la source
1
C'était il y a près de douze ans, lorsque les sites Web axés sur les données étaient une nouveauté de pointe; de nombreux sites fonctionnaient contre Access ou similaire, car personne ne voulait investir dans une licence SQL Server pour quelque chose qui était considéré comme un «côté» de leur cœur de métier. Comme les choses ont changé!
Mark Bell
44

Quand j'avais 13 ans, mon école a ouvert un réseau social pour les élèves. Malheureusement pour eux, j'ai trouvé un bogue de sécurité où vous pouviez changer l'URI en un autre ID utilisateur comme "? UserID = 123" et vous connecter à cet utilisateur. Évidemment, j'en ai parlé à mes amis, et à la fin le réseau social de l'école était rempli de porno.

Je ne le recommanderais pas cependant.

Hannson
la source
3
pourquoi ne recommanderiez-vous pas cela? Qu'est-il arrivé?
Simon_Weaver
55
@Simon_Weaver: Je suppose que les jeunes de 13 ans n'ont généralement pas un bon goût pour le porno.
Slacker
@slacker +1 pour vous mettre à 1000 rep! sauf que je ne pense pas que les commentaires de notation vous donnent une représentation :-(
Simon_Weaver
2
"bon goût pour le porno" - il y a un oxymore.
Zann Anderson
43

Je pense que le champ vide du nom d'utilisateur / mot de passe pour l'accès superutilisateur est de loin le pire. Mais celui que je me suis vu était

if (password.equals(requestpassword) || username.equals(requestusername))
{
    login = true;
}

Dommage qu'un opérateur fasse une si grande différence.

Stefan Ernst
la source
10
wow, j'ai naturellement une contrainte pour le réparer
wag2639
Le fait qu'un vrai mot de passe soit utilisé au lieu d'un hachage est en fait plutôt mauvais ...
Peter Kriens
D'abord j'étais "qu'est-ce qui ne va pas?", Et ensuite j'étais "AAAAaaaaaaaAAAA! OMG"
Bojan Kogoj
42

Le mien serait pour une banque dont j'étais client. Je n'ai pas pu me connecter, j'ai donc appelé le service client. Ils m'ont demandé mon nom d'utilisateur et rien d'autre - n'ont pas posé de questions de sécurité ni essayé de vérifier mon identité. Puis, au lieu d'envoyer une réinitialisation du mot de passe à l'adresse e-mail qu'ils avaient dans le dossier, ils m'ont demandé à quelle adresse e-mail l'envoyer. Je leur ai donné une adresse différente de celle que j'avais dans le dossier et j'ai pu réinitialiser mon mot de passe.

Donc, essentiellement, tout pirate aurait besoin est mon nom d'utilisateur, et il pourrait alors accéder à mon compte. C'était pour une grande banque dont au moins 90% des Américains auraient entendu parler. Cela s'est produit il y a environ deux ans. Je ne sais pas s'il s'agissait d'un représentant du service client mal formé ou s'il s'agissait d'une procédure standard.

Sean
la source
22
et de quelle banque s'agit-il, s'il vous plaît?
TigerTiger
5
@Si: il est écrit "J'ÉTAIS UN CLIENT DE ...". Je pense que cela répond à la question. :)
ShdNx
8
C'était Washington Mutual, qui a été saisi par la FDIC et vendu à Chase au début de cette année. Ils avaient également d'étranges messages d'erreur. Lorsque j'ai essayé de définir mon mot de passe à partir de celui temporaire, j'ai continué à obtenir une erreur "Les mots de passe ne correspondent pas", même s'ils étaient les mêmes et j'ai même copié / collé. J'ai réalisé que si je mettais des "caractères invalides" comme une barre oblique, au lieu de dire des caractères invalides, cela me donnerait cet autre message.
Sean
11
@Elizabeth: Uhm ... vous vous rendez compte que c'est pour empêcher le phishing non? Si quelqu'un essaie de copier ou d'imiter le site Web de la banque, il peut avoir exactement la même chose, mais il n'a probablement pas accès à la base de données, il ne peut donc pas afficher la bonne image de sécurité. Voilà pourquoi c'est là. Tous les utilisateurs ne sont pas assez intelligents pour vérifier le certificat (qui pourrait être bluffé de la même manière)
mpen
13
Protéger vos comptes financiers est-il exagéré? ...
Joe Phillips
36

Je vais partager celui que j'ai créé. En quelque sorte.

Il y a des années et des années, la société pour laquelle je travaillais souhaitait une indexation sur leur site Web ASP. Alors je suis allé installer Index Server, exclu quelques répertoires d'administration et tout allait bien.

Cependant, à ma connaissance, quelqu'un avait donné à un vendeur un accès ftp au serveur Web pour qu'il puisse travailler à domicile, c'était l'époque des commutateurs et c'était le moyen le plus simple pour lui d'échanger des fichiers ... et il a commencé à télécharger des choses, y compris des documents détaillant le balisage sur nos services .... qui indexent le serveur indexé et commencent à servir lorsque les gens recherchent "Coûts".

N'oubliez pas les enfants, les listes blanches et non les listes noires.

Blowdart
la source
76
Je pense que "les listes blanches et non les listes noires", bien que souvent de bons conseils, ne sont pas la bonne leçon à apprendre ici. La bonne leçon est "ne mettez pas de données privées sur un serveur public". Aussi, "ne laissez pas les vendeurs accéder au serveur".
rmeador le
7
Oh, l'harmonie entre la réponse et l'avatar.
Çağdaş Tekin
35

L'un des plus simples, mais vraiment rentables est:

Systèmes de paiement utilisant des moteurs tels que PayPal peuvent être défectueux car la réponse de PayPal après le paiement a réussi n'est pas vérifiée comme il se doit.

Par exemple:

Je peux aller sur un site Web d'achat de CD et ajouter du contenu au panier, puis pendant les étapes de paiement, il y a généralement un formulaire sur la page qui a été rempli avec des champs pour paypal et un bouton de soumission pour "Payer".

En utilisant un éditeur DOM, je peux entrer dans le formulaire "live" et changer la valeur de £899.00à£0.01 puis cliquer sur soumettre ...

Lorsque je suis du côté de PayPal, je peux voir que le montant est de 1 centime, donc je le paie et PayPal redirige certains paramètres vers le site d'achat initial, qui ne valide que les paramètres tels que payment_status=1 , etc., etc. et ne le fait pas. valider le montant payé.

Cela peut être coûteux s'ils n'ont pas suffisamment de journalisation en place ou si les produits sont automatiquement expédiés.

Les pires types de sites sont les sites qui fournissent des applications, des logiciels, de la musique, etc.

RobertPitt
la source
12
+1 D'accord. Dans la situation de la page de paiement hébergée, le site Web d'origine ne doit pas permettre à l'utilisateur de générer des valeurs à publier; au lieu de cela, la page doit s'afficher sur elle-même lors du clic de l'utilisateur, puis le serveur formule et envoie un message d'opération à la «passerelle» de paiement directement avec les valeurs appropriées. Tout dépend de ce que la passerelle attend et de la façon dont les interactions peuvent être établies avec elle, mais je ne vois aucune passerelle digne de ce nom n'ayant pas un scénario plus sécurisé que ce que vous avez décrit. Peut-être que je me trompe cependant.
John K
vous pouvez imiter les demandes de publication via le côté serveur afin d'envoyer les données de cette façon, vous pouvez vous assurer que les données envoyées à la passerelle sont exactement cela, puis les rediriger avec l'en-tête d'emplacement.
RobertPitt
PayPal a une option de cryptage qui permet au site d'empêcher cela. Le site publie d'abord les données à lui-même, crypte les données de la commande côté serveur avec une clé connue uniquement d'eux et de PayPal, puis envoie ces données à PayPal qui les décrypte. Les données de commande non chiffrées ne sont jamais envoyées de cette manière dans les champs de formulaire. Ce n'est qu'une option, donc tous les sites utilisant PayPal ne le font pas de cette façon. Ils devraient cependant!
mikel
35

Que diriez-vous d'un gestionnaire de documents en ligne, qui a permis de définir toutes les autorisations de sécurité dont vous vous souvenez ...

C'est jusqu'à ce que vous arriviez à la page de téléchargement ... download.aspx? DocumentId = 12345

Oui, le documentId était l'ID de la base de données (incrémentation automatique) et vous pouviez boucler chaque numéro et n'importe qui pouvait obtenir tous les documents de l'entreprise.

Lorsqu'il a été alerté de ce problème, la réponse du chef de projet a été: OK, merci. Mais personne ne l'a remarqué auparavant, alors gardons-le tel quel.

Sergio
la source
56
Je déteste vraiment cette attitude, je l'ai eu plusieurs fois. Ça me donne envie de laisser les autres le faire juste pour leur donner une leçon.
syaz
J'ai finalement obtenu le feu vert pour combler un trou comme celui-ci lors de mon dernier emploi ... après des mois de plainte.
paupières
Il n'est pas rare de trouver des sites Web qui vous permettent de le faire. Vous verrez un répertoire d'articles récents ou archivés, mais vous ne pouvez pas remonter plus loin dans la liste qu'une page ou deux sans avoir à vous connecter. Ouvrez simplement le premier article et changez le bon paramètre dans l'url pour n'importe quel article numéro que vous souhaitez voir n'importe quel article.
bob-the-destroyer
2
Voici un excellent exemple de cela. Dans cet article du NY Times: nytimes.com/2009/01/14/dining/14power.html?_r=1&ref=dining la photo présentée remplace la version originale beaucoup plus hilarante, toujours disponible ici: graphics8.nytimes.com /images/2009/01/14/dining/14power2_650.jpg
Jamie Treworgy
34

Une livraison de pizza norvégienne avait un trou de sécurité où vous pouviez commander des quantités négatives de pizzas sur leur nouveau portail Internet brillant et les obtenir gratuitement.

utilisateur110763
la source
42
L'autre trou de sécurité, ce sont les employés, non? "Eh bien, monsieur, l'ordinateur dit que vous obtenez 15 pizzas gratuitement, alors ... c'est parti! ... ai-je un pourboire?"
Nathan Long
6
... votre pizzeria distribue aussi des DVD? Oo
mpen
5
En tant qu'ancien chauffeur de pizza ... non, nous ne nous sommes pas foutus de ce genre de choses. Et nos managers non plus.
paupières
48
Le livreur ne viendrait-il pas chercher les pizzas que vous leur vendez ?
Jon B
7
Wow .. et le livreur a dû vous donner le pourboire? =))
Andrei Rînea