Trois alertes de secrets n8n élevées passées en revue

Trois alertes n8n élevées montrent pourquoi la révision analysée et le contexte du code comptent avant de conclure à une fuite.

José Palanco José Palanco
Last Updated:
4 min read
Partager
Trois alertes de secrets n8n élevées passées en revue

Au-delà de l’ASPM

Une AppSec fondée sur la preuve pour les équipes qui développent avec l’IA

Plexicus utilise AI Swarm Pentest pour explorer des chemins d’application autorisés, valider ce qui est exploitable et fournir les preuves nécessaires pour prioriser la remédiation.

Découvrir AI Swarm Pentest

Le 29 octobre 2026, nous avons examiné un ensemble de résultats Plexicus associé au dépôt n8n. Il contenait 110 alertes de secrets : trois classées élevées et 107 moyennes. Ce résumé pourrait passer pour une preuve de fuite d’identifiants. Les enregistrements détaillés ne permettaient pas cette conclusion.

Nous avons inspecté les trois alertes élevées et comparé leurs emplacements au code public de la révision immuable demandée. Deux emplacements désignent des constantes de nom d’identifiant dans des modules simulés. Le troisième ouvre une déclaration de type d’identifiant. Aucun de ces trois emplacements ne démontre un secret utilisable exposé. L’absence du commit réellement analysé empêche aussi de conclure définitivement à des faux positifs du scanner.

Ce que les enregistrements établissent

Les enregistrements portaient le titre « Use of Hard-coded Credentials ». Ils contenaient un chemin et une ligne, mais les champs de code, de rapport du scanner et de description étaient vides. Leur indicateur de faux positif était faux. Cet état enregistré du traitement ne prouve pas indépendamment l’existence d’un identifiant.

Emplacement signaléCode public de la révision demandéeRésultat de la revue
CredentialConfig.test.ts, ligne 1002Déclaration ICredentialTypeLes métadonnées ne prouvent pas une valeur d’identifiant
Test de suppression de page Confluence, ligne 14CONFLUENCE_CREDENTIAL_NAME dans vi.mockLe nom simulé ne prouve pas un secret utilisable
Test de suppression de pièce jointe Confluence, ligne 8Même type de constante simuléeLa correspondance originale reste nécessaire

Le test de configuration, le test de suppression de page et le test de suppression de pièce jointe sont des références publiques immuables. Nous publions uniquement les identifiants nécessaires à l’explication. Aucune valeur secrète, aucun identifiant privé de résultat ni aucune réponse brute de l’API ne figure ici.

La révision manquante limite le verdict

La fiche Open Source Explorer demandait 447fc866bb0a841decfa5e8a29fba06057bfc5bc. Nous avons récupéré les fichiers upstream à ce SHA précis. Mais les résultats ne désignaient ni leur exécution d’analyse ni leur commit réellement analysé. Les totaux d’un dépôt peuvent inclure des résultats provenant d’autres moments de son historique.

Quand les lignes changent, une déclaration anodine dans la révision demandée ne prouve pas ce que le scanner a rencontré auparavant. Une gravité élevée ne remplace pas ces éléments manquants. Le constat limité est donc que ces trois résultats et leur contexte n’établissent aucune exposition d’identifiants. Cela ne démontre ni l’absence générale de secrets dans n8n ni l’inexactitude de toutes les alertes.

Revue conceptuelle d’une alerte, de sa révision et de son contexte vers un verdict limité par les preuves.

Modèle original de revue. Le schéma présente les preuves nécessaires, pas une fuite reproduite.

Un test fournit du contexte

De vrais identifiants peuvent apparaître dans des tests, exemples et fixtures. Exclure systématiquement ces répertoires pourrait masquer de véritables fuites. Il faut établir le rôle de la valeur : authentification, nom de type, marqueur synthétique ou référence à un autre objet.

Les deux emplacements Confluence affectent une constante de nom dans un module simulé et remplacent la fonction d’API par un double de test. Le troisième commence un objet de configuration typé. Il faut obtenir la correspondance originale et l’explication de la règle avant de demander une rotation ou d’annoncer un incident.

Si des preuves ultérieures établissent un vrai identifiant, nettoyez le rapport public et suivez la procédure de révocation du fournisseur. Nous n’avons tenté aucune authentification avec une valeur et n’avons envoyé aucun identifiant candidat à un service externe.

Garder les preuves avec la décision

Conservez les versions du scanner et de la règle, le commit analysé, la plage de code, la correspondance expurgée, la catégorie d’identifiant et le raisonnement du réviseur. Désignez un responsable de correction. Une vérification bloquée ou un contenu absent reste non résolu.

Notre approche Proof-Driven AppSec relie l’alerte à un résultat examinable. Le guide de remédiation explique le passage à une modification revue. Deep Code Analysis traite du contexte.

Plexicus fournit les métadonnées examinées. L’inspection du code relève ici d’une enquête éditoriale, pas d’une décision automatique du produit que nous aurions démontrée. La remédiation et AI Swarm Pentest décrivent d’autres périmètres de travail ; ils ne confirment pas ces alertes comme des fuites.

Compléter le dossier

Demandez la correspondance originale et la véritable révision analysée. Réconciliez les lignes avant de confirmer ou rejeter les alertes. Les liens immuables et cette conclusion limitée permettront à un autre analyste de poursuivre. Cette revue n’établit ni correctif n8n, ni révocation, ni exploitation réussie.

Sources

Besoin de transformer les alertes en décision d’ingénierie ? Contactez Plexicus avec la révision du dépôt et des preuves expurgées.

Écrit par
José Palanco
José Palanco
José Ramón Palanco est le PDG/CTO de Plexicus, une entreprise pionnière dans le domaine de l'ASPM (Application Security Posture Management) lancée en 2024, offrant des capacités de remédiation alimentées par l'IA. Auparavant, il a fondé Dinoflux en 2014, une startup de Threat Intelligence qui a été acquise par Telefonica, et travaille avec 11paths depuis 2018. Son expérience inclut des rôles au département R&D d'Ericsson et chez Optenet (Allot). Il est titulaire d'un diplôme en ingénierie des télécommunications de l'Université d'Alcala de Henares et d'un master en gouvernance des TI de l'Université de Deusto. En tant qu'expert reconnu en cybersécurité, il a été conférencier lors de diverses conférences prestigieuses, notamment OWASP, ROOTEDCON, ROOTCON, MALCON et FAQin. Ses contributions au domaine de la cybersécurité incluent de nombreuses publications CVE et le développement de divers outils open source tels que nmap-scada, ProtocolDetector, escan, pma, EKanalyzer, SCADA IDS, et plus encore.
Lire plus de José
More to read

Related posts

Prêt à valider l'essentiel ?

Prêt à valider ce qui compte.

Plexicus est Proof-Driven AppSec : findings validés, compréhension contextuelle et remédiation relue — ancrée dans la preuve, scopée avec vous.

Qualification

Vérifiez si l'AI Swarm Pentest convient à votre environnement.

Partagez le contexte minimum. Nous vérifierons le périmètre et indiquerons la prochaine étape commerciale.

Avant d'envoyer — vérifiez que vous correspondez

0 / 280

Sans engagement. Si vous ne correspondez pas, nous vous le dirons.

SAMPLE HANDOVER · ILLUSTRATIVE

Sample evidence handover

A trimmed view of what your team receives at the end of an AI Swarm Pentest engagement. Real engagements include full technical evidence, executive narrative, and a remediation plan.

VALIDATED FINDING Evidence attached

Server-Side Request Forgery in webhooks/receiver

demo-project/sample-app · src/webhooks/receiver.py:42

SeverityHigh CVSS 3.18.6 Priority79 Confirmedvia replay

Untrusted caller-supplied URLs reach an internal egress without an allowlist. Replayed in a sandbox against a fresh authorized target — the same control was validated to fail twice.

REVIEWER-READY REMEDIATION Merge-ready PR

Validate the target URL against an allowlist of permitted hostnames. Reject private/internal IP ranges. Enforce HTTPS only.

plexicus/remediation/webhooks-ssrf 3 changed · 0 new files
42resp = requests.get(target_url)
42+if not is_allowed_host(target_url):
43+  raise WebhookRejected(target_url)
44+resp = requests.get(target_url, timeout=5)
Every engagement hands over:
  • Executive briefing
  • Validated findings list
  • Merge-ready PRs
  • Compliance mapping (NIS2 · DORA · CRA)
Tour privé Pour les investisseurs