Un chercheur découvre qu’une faille sur le site d’a16z a exposé des données de certaines entreprises
(kibty.town)- Un chercheur en sécurité a découvert que, sur le sous-domaine lié à a16z
portfolio.a16z.com, l’intégralité deprocess.envd’une instance Heroku était injectée dynamiquement dans le JavaScript - Les valeurs exposées incluaient plusieurs identifiants de services comme
DATABASE_URL,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,SALESFORCE_CLIENT_SECRET,OKTA_CLIENT_SECRETetMAILGUN_API_KEY - Le chercheur explique avoir repéré une référence à une clé AWS lors d’un contrôle classique de secrets dans des fichiers JS avec
lunchcat, et précise que cela était visible rien qu’avec l’onglet Sources des outils de développement du navigateur - Le périmètre potentiellement touché comprenait une base de données contenant des PII, AWS, Salesforce et Mailgun ; il affirme que Mailgun permettait d’envoyer des e-mails arbitraires depuis le domaine a16z et de lire d’anciens e-mails
- a16z n’a pas versé de bug bounty en invoquant les tentatives de contact publiques, tandis que le chercheur affirme qu’aucun contact n’était disponible sur le site principal et que l’adresse e-mail qu’il avait trouvée renvoyait un message d’erreur
Des variables d’environnement révélées lors d’un audit de sous-domaines
- Le chercheur dit repérer des cibles en trouvant des entreprises sur Twitter puis en réalisant rapidement des tests d’intrusion, en utilisant souvent l’onglet
Relevant People- Cette fois, le parcours a été : entreprise liée à la
crypto→ capital-risque crypto →a16z crypto→a16z
- Cette fois, le parcours a été : entreprise liée à la
- Lors de l’enquête sur a16z, il a effectué un scan classique de sous-domaines et utilisé l’outil lunchcat pour inspecter les domaines et détecter des secrets dans les fichiers JS
portfolio.a16z.comsemblait être un outil de gestion de portefeuille pour les entreprises du portefeuille d’a16z, et l’audit a détecté quelque part sur le site une référence à une clé AWS- Dans le JS, des valeurs qui semblaient correspondre à l’intégralité de
process.envd’une instance Heroku étaient injectées dynamiquement- Parmi les éléments inclus figuraient
MARKETPLACE_URL,DATABASE_URL,SALESFORCE_CLIENT_ID,SALESFORCE_CLIENT_SECRET,OKTA_CLIENT_SECRET,SESSION_SECRET,MAILGUN_API_KEY,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,COOKIE_SECRETetHEROKU_POSTGRESQL_CRIMSON_URL - Le chercheur indique avoir rapidement vérifié ces identifiants et qu’ils semblaient être de vrais identifiants, pas de faux
- Il précise que l’accès ne nécessitait rien de plus que l’ouverture de l’onglet Sources dans les outils de développement du navigateur
- Parmi les éléments inclus figuraient
Périmètre d’exposition possible et controverse autour du bug bounty
- Les services potentiellement compromis listés par le chercheur sont les suivants
- Base de données : il affirme qu’elle contenait des PII
- AWS : une possibilité d’accès via les clés exposées est mentionnée
- Salesforce : il dit ne pas l’avoir vérifié directement et ajoute que les permissions du compte pouvaient être limitées
- Mailgun : il affirme qu’il était possible d’envoyer des e-mails arbitraires depuis le domaine a16z et de lire d’anciens e-mails
- Il mentionne aussi la possibilité d’autres services touchés
- a16z n’a pas versé de bug bounty au motif que le chercheur avait tenté de contacter l’entreprise publiquement plutôt qu’en privé
- Le chercheur avance deux raisons à cette prise de contact publique
- Il n’a pas trouvé de moyen de contact exploitable sur le site principal d’a16z
- L’e-mail envoyé à l’adresse qu’il avait pu trouver lui est revenu en erreur
- Un article de TechCrunch est joint en référence, et le chercheur explique que Lorenzo a écrit l’article après l’avoir contacté en voyant son tweet publié pour tenter de joindre a16z
1 commentaires
Commentaires sur Hacker News
Lorsque nous avons publié notre projet open source (https://github.com/heyPuter/puter/), Eva a réalisé des tests d’intrusion assez approfondis et a traité le signalement des vulnérabilités de façon très professionnelle.
À l’époque, nous n’avions même pas de programme de bug bounty, elle n’a pas demandé de récompense, et Eva est une hackeuse à la fois brillante et responsable ; a16z devrait mieux la traiter.
J’ai déjà fait une erreur similaire.
Nous utilisions un CMS Node.js appelé apostrophecms, et nous nous servions du panneau d’administration « global settings » pour gérer des clés d’API du serveur d’authentification ; ce n’est que plusieurs mois plus tard que nous avons découvert que ces valeurs étaient rendues dans le code source HTML.
C’était conçu ainsi pour les rendre utilisables en JavaScript, et c’était documenté, donc je ne leur en veux pas, mais nous avons survolé ça un peu trop vite.
Le plus agaçant, c’est que nous avions payé assez cher une grande société de conseil pour un test d’intrusion, et qu’eux non plus ne l’ont pas détecté ; au final, nous l’avons découvert nous-mêmes et, en vérifiant les journaux, il ne semblait pas y avoir de traces d’exploitation, mais c’était une fuite assez choquante.
Jusqu’ici, je n’ai jamais vu de test d’intrusion qui soit plus qu’une case à cocher.
Comme vous l’avez dit, ce mode de partage des données était documenté, mais il pouvait tout de même surprendre.
Pour ceux qui enquêteraient à l’avenir, j’ajoute que la version majeure d’Apostrophe actuellement prise en charge ne fonctionne plus de cette façon.
L’injection de données dans le front-end non connecté doit être un choix délibéré du développeur, et ce changement a été fait pour éviter ce genre de surprise.
Cela dit, il existe encore des cas d’usage où des clés d’API doivent être incluses dans les paramètres et une partie du contenu de certains widgets.
À noter : je suis responsable du design d’Apostrophe et j’y ai aussi un rôle d’ingénierie.
Cette situation est due à notre configuration multitenant et à notre manque de compréhension d’apostrophe.
Documenter un comportement dangereux n’exonère pas de toute responsabilité, et cette leçon devrait désormais être largement connue.
Quand on crée un nouveau service et qu’on ajoute un certificat LetsEncrypt au serveur via ACME, les journaux se remplissent immédiatement de requêtes poubelles.
On voit clairement des bots chercher des valeurs par défaut faibles que des développeurs auraient pu laisser ouvertes, et j’ai même déjà vu des requêtes visant le fichier d’environnement du processus.
Je ne comprends pas comment cette vulnérabilité a pu ne pas être découverte ou exploitée ; soit a16z a eu énormément de chance, soit elle a déjà été exploitée sans que cela soit rendu public.
Un chercheur bien intentionné, ou quelqu’un qui s’ennuyait avec un état d’esprit white hat, les a contactés en premier ; c’est dommage qu’il n’existe pas de cadre juridique pour ce genre de négligence, mais je pense qu’a16z devrait recevoir une lourde amende.
Peut-être qu’elle l’a déjà été.
La laisser ouverte avait peut-être plus de valeur que de simplement casser quelque chose.
En revanche, quelques identifiants comme OKTA semblent assez dangereux.
Le passage disant : « Nous n’avons pas accordé de bug bounty parce que le contact a été public. La raison est qu’il n’y avait aucun contact sur le site principal, et que l’adresse engineering@a16z.com trouvée renvoyait les e-mails » ressemble à une astuce maligne pour économiser l’argent de l’entreprise.
Si l’on ne laisse aucun moyen de contacter l’équipe d’ingénierie en privé, tous les signalements de bug bounty se font publiquement, et on peut alors ne rien payer.
Ils ont probablement aussi beaucoup économisé sur le développement en cassant les prix avec des gens sur des plateformes comme fiverr, et si un groupe de rançongiciels russe les dépouille facilement, ils économiseront aussi indirectement beaucoup de frais comptables.
S’il n’y a pas de programme public de bug bounty, elle ne doit rien.
En plus, il y a une adresse e-mail de contact en bas de https://a16z.com/connect, que le chercheur a commodément manquée.
Cela ressemble davantage à une recherche de visibilité qu’à une divulgation responsable.
Quand les entreprises disent qu’elles ont été « piratées », j’entends désormais une formule corporate du genre : « nous n’avons pas correctement protégé des identifiants importants, mais veuillez faire porter la responsabilité à un acteur inconnu que nous appelons “hacker” ».
Il existe des distinctions juridiques comme « violation de domicile », « vol » ou « intrusion », et le fait que la porte ait été ouverte peut influer sur l’illégalité ou la peine, mais dans le langage courant, cela reste un cambriolage.
Ne pas accorder ne serait-ce qu’une prime d’un montant symbolique pour une faille aussi largement béante, c’est assez lamentable.
Ils sont occupés à écrire d’énormes livres blancs sur les architectures d’IA générative.
Laissons-les souffler un peu : ils rêvent d’un futur monde d’agents où des chatbots à moitié finis se déplacent.
Pendant que le monde brûle à cause d’une mise à jour logicielle cassée.
La mise à jour logicielle cassée de vendredi n’est que la cerise sur le gâteau.
Pas du tout surprenant.
S’il était réellement possible d’accéder à l’instance Salesforce, ce serait très inquiétant du point de vue des fondateurs.
En général, des endroits comme Salesforce conservent les e-mails, et ceux-ci peuvent contenir durablement des plans de financement ou de M&A que les fondateurs des sociétés en portefeuille n’ont pas partagés à l’extérieur.
Mais utiliser ces clés pour accéder à un système sans autorisation est un crime.
La différence est énorme.
Le fait que cette société de capital-risque n’ait pas versé de bug bounty pour une faille de sécurité aussi importante n’inspire pas confiance.
Les modérateurs de HN ont changé le titre pour quelque chose de moins embarrassant.
Pas surprenant.
Son score n’a pas changé, mais il a été déplacé du tout début à tout en bas.
Il y a décidément bien des façons de fournir une réponse.