Aller au contenu
  • DETON
  • Tarifs
  • Se connecter
  • S'inscrire

Inspectez la frontière de preuve.

Examinez la frontière entre candidat et constat.

Pour les revues AppSec et d’ingénierie, Deton transforme des enregistrements fournis en sorties de PR sans revendiquer d’exécution cliente en direct.

Créer un compteInspecter la frontière de preuve
  • github.invalid/acme/payments

    Add user search#482

    Ouverte

    src/routes/users.ts

    - db.query('select * from users where name = $1', [q])
    + db.query(`select * from users where name = ${q}`)
    Deton proof gateIllustrative supplied-record formatter preview (no execution or delivery) · Deton confirmed security finding (1, advisory)

    detonbotillustrative comment preview

    Deton confirmed SQL injection in changed code

    Code: src/routes/users.ts:48-52

    SQL injection confirmed by a deterministic control/treatment sentinel observation in the isolated fixture (CWE-89).

    CVSS 4.0: not scored. Missing evidence for AV, AC, AT, PR, UI, VC, VI, VA, SC, SI, SA. This synthetic fixture does not establish deployment exposure or impact.

    Propose a fix: Use parameterized queries, ORM-safe APIs, and allowlisted dynamic clauses.

    Aperçu illustratif d’état confirmé

  • github.invalid/acme/reporting

    Add ping route#219

    Ouverte

    src/routes/ping.ts

    - execFile('ping', ['-c', '1', host])
    + exec(`ping -c 1 ${host}`)
    Deton proof gateIllustrative supplied-record formatter preview (no execution or delivery) · Deton confirmed security finding (1, advisory)

    detonbotillustrative comment preview

    Deton confirmed command injection in changed code

    Code: src/routes/ping.ts:31-34

    command injection confirmed by a deterministic benign command marker observation in the isolated fixture (CWE-78).

    CVSS 4.0: not scored. Missing evidence for AV, AC, AT, PR, UI, VC, VI, VA, SC, SI, SA. This synthetic fixture does not establish deployment exposure or impact.

    Propose a fix: Avoid shell execution, pass argv arrays, and allowlist command names and arguments.

    Aperçu illustratif d’état confirmé

  • github.invalid/acme/billing

    Filter invoices by status#77

    Ouverte

    src/routes/invoices.ts

    - const q = 'select * from invoices'
    + const q = `select * from invoices where status = ${status}`
    Deton proof gateIllustrative supplied-record formatter preview (no execution or delivery) · Deton completed with summary-only outcomes

    Charge utile illustrative sans commentaire de constat

    Looks like the same pattern — a value interpolated into a query.

    Illustrative supplied-record non-observation: this state is inconclusive, not safe or a false positive, and no finding payload is prepared.

    Aperçu non concluant

Fixtures synthétiques de pull requests. Les titres de check et le texte des avis viennent du formateur de production de Deton ; les requêtes, observations et journaux sont des exemples rédigés à la main, pas des preuves capturées par un runner. Aucune cible n’a été exécutée et rien n’a été envoyé à GitHub.

Choisissez la question de preuve à examiner.

Contrat de validation d’exploitabilitéDémo synthétique du flux de preuveLimites de disponibilité (en anglais)

Règle de décision

Un candidat n’est pas un verdict.

Une ligne suspecte reste une hypothèse. Dans cet aperçu illustratif, l’évaluateur pur lit un enregistrement fourni dont le champ deterministic est une valeur d’énum du schéma.

Même ligne modifiée
  const filter = `name = '${req.query.q}'`;

Candidat

Hypothèse issue de l’analyse statique

Une entrée issue de la requête atteint le constructeur de requête.

Aperçu illustratif · aucun marqueur fourni accepté · aucune éligibilité à un problème en mémoire

Aucun commentaire de constat dans la pull request. Aucune décision de merge par Deton.

Ce que Deton ajoute

  1. 01

    Observation

    Valeur d’enregistrement fournie illustrative : l’oracle déterministe a observé l’effet attendu ; les marqueurs bruts sont masqués.

  2. 02

    Rejeu

    Instruction prospective pour rejouer l’enregistrement fourni.

  3. 03

    Aperçu illustratif de l’état du merge

    État d’interface rédigé à la main uniquement ; les constats confirmés sont consultatifs et Deton ne bloque pas la fusion.

Aperçu d’un problème éligible

État illustratif d’enregistrement fourni accepté comme confirmé

Dans cet aperçu illustratif, l’évaluateur pur a accepté l’enregistrement fourni et le constructeur peut créer une valeur de problème en mémoire.

Éligible à une valeur de problème en mémoire · aucune livraison ni publication n’a eu lieu

Ligne de code illustrative, pas une exécution réelle de source cliente. Les analyses de production utilisent l’archive d’un commit GitHub exact, un stockage signé et un runner isolé ; les recettes non supportées restent non publiables.

Structure de la sortie illustrative dans la pull request.

Un avis concis issu du formateur dans un aperçu de pull request rédigé à la main.

Affichage d’un payload illustratif d’état confirmé fondé sur un enregistrement fourni : le formateur préparerait un check consultatif et un commentaire de constat reproductible. Aucune livraison n’a eu lieu.

Fixture synthétique illustrative. Le check et l’avis utilisent le formateur de production, mais la requête, les observations, les journaux et la signature ont été rédigés pour cet aperçu ; aucune cible ni aucun runner n’a été exécuté.

github.invalid/acme/payments/pull/482

Add user search#482Open

maya-b wants to merge 3 commits into main from feat/invite-lookup

  • Conversation2
  • Commits3
  • Checks4
  • Files changed7
  • passedbuildIllustrative status preview · no check executed
  • passedlintIllustrative status preview · no check executed
  • passedunitIllustrative status preview · no check executed
  • passedDeton proof gateIllustrative supplied-record formatter preview (no execution or delivery) · Deton confirmed security finding (1, advisory)Details

Illustrative advisory success preview; Deton does not block merge.

Confirmed security finding: review and fix recommended. No check was posted.

src/routes/users.ts
+added:   const filter = `name = '${req.query.q}'`;+added:   const rows = await db.query(+added:     `select * from users where ${filter}`
▸Voir le diff complet
@@ -44,9 +44,12 @@ export async function searchUsers(req, res) {-removed:   const rows = await db.query(-removed:     'select * from users where name = $1', [req.query.q]-removed:   );+added:   const filter = `name = '${req.query.q}'`;+added:   const rows = await db.query(+added:     `select * from users where ${filter}`+added:   );
src/routes/users.ts
@@ -44,9 +44,12 @@ export async function searchUsers(req, res) {-removed:   const rows = await db.query(-removed:     'select * from users where name = $1', [req.query.q]-removed:   );+added:   const filter = `name = '${req.query.q}'`;+added:   const rows = await db.query(+added:     `select * from users where ${filter}`+added:   );
Dillustrative-botillustrative comment preview

Deton confirmed SQL injection in changed code

Code: src/routes/users.ts:48-52

Illustrative revision link · disabledgithub.invalid/acme/payments/blob/0123456789abcdef0123456789abcdef01234567/src/routes/users.ts#L48-L52

Why confirmed

SQL injection confirmed by a deterministic control/treatment sentinel observation in the isolated fixture (CWE-89).

Impact

Attacker-controlled input can alter a database query in the sandboxed fixture.

CVSS 4.0: not scored. Missing evidence for AV, AC, AT, PR, UI, VC, VI, VA, SC, SI, SA. This synthetic fixture does not establish deployment exposure or impact.

Reproduce

Illustrative isolated fixture; this preview did not run a target.

- Use a local synthetic users fixture with a known sentinel row.

- baseline: GET /api/users/search q=nonexistent_user_test1234

- treatment-1: GET /api/users/search q=nonexistent_user_test1234' OR '1'='1

- treatment-2: GET /api/users/search q=x' UNION SELECT id, username, sentinelMarker FROM users WHERE username='deton_sentinel' --

Expected: The treatment reaches the sentinel row while the control does not.

Retest: replay the same requests after the fix; Deton replays the seeded oracle and confirms the SQL oracle no longer fires.

Proof logs

- baseline: marker absent

- treatment-1: seeded marker observed

- treatment-2: seeded marker observed

Observation captured 2026-09-26T00:00:00.000Z · validator illustrative-only-not-runner-evidence · 2 treatment replay(s)

Runner request recipe version: illustrative-sqli-v1 · PR head record: 0123456789abcdef0123456789abcdef01234567

Propose a fix

Use parameterized queries, ORM-safe APIs, and allowlisted dynamic clauses.

Bad fix warning: Do not escape strings manually or concatenate allowlist checks after the query is built.

github.invalid/acme/payments/pull/482

Add user search#482Open

maya-b wants to merge 3 commits into main from feat/invite-lookup

  • Conversation1
  • Commits3
  • Checks4
  • Files changed7
  • passedbuildIllustrative status preview · no check executed
  • passedlintIllustrative status preview · no check executed
  • passedunitIllustrative status preview · no check executed
  • neutralDeton proof gateIllustrative supplied-record formatter preview (no execution or delivery) · Deton completed with summary-only outcomesDetails

Illustrative neutral-check preview; no checks executed.

No finding comment prepared; no external action completed.

Illustrative supplied-record inconclusive stateAperçu illustratif fondé sur un enregistrement fourni : le formateur préparerait un check récapitulatif, pas un commentaire de constat. Aucune preuve ni publication n’est revendiquée et aucune livraison n’a eu lieu.

Ceci illustre le format de l’avis, avec les étapes de reproduction et un CVSS 4.0 non évalué. Le paquet de preuve ne provient pas d’un runner et aucun check ni commentaire n’a été envoyé à GitHub.

Limite actuelle des sources

Sachez ce qui peut s’exécuter avant de vous fier à un verdict.

Seuls les enregistrements fournis acceptés comme confirmés sont éligibles au formatage. Les autres résultats ne prouvent ni une vulnérabilité ni une livraison.

Chemins de source exécutables aujourd’hui
La recette fournie démarre directement. Pour une pull request autorisée, le runner vérifie et extrait l’archive de la révision exacte, puis exige un fichier deton.json supporté.
Références de source GitHub clientes
Le parcours public est synthétique. Les analyses GitHub configurées récupèrent l’archive du commit exact et ne transmettent au runner isolé qu’une référence signée et liée à son empreinte.

Un enregistrement fourni ne devient éligible à un problème en mémoire qu’après son acceptation par l’évaluateur pur.

La fixture fournie et les archives de révision exacte disposant d’un fichier deton.json supporté peuvent démarrer dans le runner isolé.

github.invalid/acme/payments/pull/482

Configuration illustrative issue d’un enregistrement fourni · pas une installation réelle

GitHub App · acme

Install Deton

Read: metadata, pull requestsWrite: checks, comments

La fixture fournie utilise une recette définie dans le runner. Les analyses GitHub configurées transportent une archive de révision exacte et résolvent une recette deton.json supportée après vérification.

installation_performed=false

aperçu illustratif d’enregistrement fourni · aucune exécution réelle de source cliente

  • SQLI-01src/routes/users.tssupplied-record confirmed preview
  • CMDI-02src/jobs/thumbnailer.tssupplied-record in-progress preview
  • SQLI-03src/db/reports.tssupplied-record queued preview
Illustrative flow preview · an isolated runner would boot a reserved target
▸ illustrative supplied-record preview · bundled recipe would resolve
▸ illustrative supplied-record preview · target endpoint would become available
▸ prospective supplied-record observation · a runner would probe bounded responses
▸ illustrative supplied-record marker preview · no live observation authenticated
✓ illustrative supplied-record confirmed-state preview · no live execution or delivery
  • ✓buildIllustrative status preview · no check executed
  • ✓lintIllustrative status preview · no check executed
  • ✓unitIllustrative status preview · no check executed
  • ✓Deton proof gateIllustrative supplied-record confirmed-state payload · no delivery

✓Illustrative advisory success preview; Deton does not block merge.

illustrative-botbotillustrative timestamp

Deton confirmed SQL injection in changed code

Code: src/routes/users.ts:48-52

SQL injection confirmed by a deterministic control/treatment sentinel observation in the isolated fixture (CWE-89).

CVSS 4.0: not scored. Missing evidence for AV, AC, AT, PR, UI, VC, VI, VA, SC, SI, SA. This synthetic fixture does not establish deployment exposure or impact.

Les états de preuve ne garantissent pas la sécurité.

Une analyse configurée peut fournir une observation du runner isolé à l’évaluateur. Les états sans preuve conservent l’incertitude et n’établissent jamais la sécurité.

Possible SQL injection — needs review

src/routes/orders.ts:17 · medium

Potential command injection — unverified

src/api/search.ts:30 · high

Tainted input may reach query

src/lib/db/query.ts:43 · low

User input flows into exec call

src/routes/export.ts:56 · medium

Possible path traversal — low confidence

src/middleware/session.ts:69 · high

Hardcoded credential suspected

src/api/upload.ts:82 · medium

Unsanitized template interpolation

src/lib/shell.ts:95 · high

Potential XSS sink — needs manual check

src/routes/orders.ts:108 · low

Possible SQL injection — needs review

src/api/search.ts:121 · medium

Potential command injection — unverified

src/lib/db/query.ts:134 · high

Tainted input may reach query

src/routes/export.ts:147 · medium

User input flows into exec call

src/middleware/session.ts:160 · high

Possible path traversal — low confidence

src/api/upload.ts:173 · low

Hardcoded credential suspected

src/lib/shell.ts:186 · medium

Unsanitized template interpolation

src/routes/orders.ts:18 · high

Potential XSS sink — needs manual check

src/api/search.ts:31 · medium

Possible SQL injection — needs review

src/lib/db/query.ts:44 · high

Potential command injection — unverified

src/routes/export.ts:57 · low

Tainted input may reach query

src/middleware/session.ts:70 · medium

User input flows into exec call

src/api/upload.ts:83 · high

Possible path traversal — low confidence

src/lib/shell.ts:96 · medium

Hardcoded credential suspected

src/routes/orders.ts:109 · high

Unsanitized template interpolation

src/api/search.ts:122 · low

Potential XSS sink — needs manual check

src/lib/db/query.ts:135 · medium

Possible SQL injection — needs review

src/routes/export.ts:148 · high

Potential command injection — unverified

src/middleware/session.ts:161 · medium

Tainted input may reach query

src/api/upload.ts:174 · high

User input flows into exec call

src/lib/shell.ts:187 · low

Possible path traversal — low confidence

src/routes/orders.ts:19 · medium

Hardcoded credential suspected

src/api/search.ts:32 · high

Unsanitized template interpolation

src/lib/db/query.ts:45 · medium

Potential XSS sink — needs manual check

src/routes/export.ts:58 · high

Possible SQL injection — needs review

src/middleware/session.ts:71 · low

Potential command injection — unverified

src/api/upload.ts:84 · medium

Tainted input may reach query

src/lib/shell.ts:97 · high

User input flows into exec call

src/routes/orders.ts:110 · medium

Possible path traversal — low confidence

src/api/search.ts:123 · high

Hardcoded credential suspected

src/lib/db/query.ts:136 · low

Unsanitized template interpolation

src/routes/export.ts:149 · medium

Potential XSS sink — needs manual check

src/middleware/session.ts:162 · high

Possible SQL injection — needs review

src/api/upload.ts:175 · medium

Potential command injection — unverified

src/lib/shell.ts:188 · high

Tainted input may reach query

src/routes/orders.ts:20 · low

User input flows into exec call

src/api/search.ts:33 · medium

Possible path traversal — low confidence

src/lib/db/query.ts:46 · high

Hardcoded credential suspected

src/routes/export.ts:59 · medium

Unsanitized template interpolation

src/middleware/session.ts:72 · high

Candidat sans enregistrement fourni accepté

File de candidats illustrative — pas un résultat d’analyse mesuré.

Aperçu illustratif confirmé fondé sur un enregistrement fourni

SQL injectionIllustrative supplied-record confirmed preview

illustrative.invalid/payments · illustrative-pr

illustrative/path.ts:41

illustrative-marker

Hand-authored preview; not authenticated provenance or custody.

  • Confirmed exige un enregistrement fourni accepté

    Dans le contrat du cœur, l’état confirmé signifie que l’évaluateur a accepté un enregistrement d’oracle fourni avec l’identité correspondante et portant la valeur d’énum déterministe du schéma. Cela n’authentifie aucune exécution réelle et n’établit aucune garde indépendante.

  • Non prouvé reste non prouvé

    Les résultats sans preuve restent sans preuve. Le parcours d’analyse actuel stocke les champs de verdict des candidats, pas des lignes de tentative de validation ou d’artefact de preuve.

  • La limite des sources est explicite

    Le plan de contrôle place l’archive du commit GitHub exact derrière une référence signée et liée à son empreinte. Seul le runner isolé la récupère et la démarre.

  • Aucun artefact capturé par le parcours produit

    Le code d’analyse de production n’écrit aucune tentative de validation, aucun constat et aucun artefact de preuve. Les détails affichés ici sont illustratifs.

Les entrées clientes exigent une recette supportée et des fournisseurs GitHub, stockage et runner configurés. Les entrées non couvertes ne créent aucun problème éligible.

Limites actuelles d’exécution et de livraison.

Ce que la recette fournie exécute, ce que le parcours client configuré exécute et où l’exécution échoue proprement.

Livraison

GitHub App

Les analyses configurées peuvent mettre à jour la tête exacte de la pull request ; un échec de livraison reste visible.

Check de pull request

Les analyses configurées peuvent publier un check GitHub sur la tête exacte de la PR ; un échec de livraison reste visible et ne change pas le verdict.

Limite configurée

  • GitLab
  • Bitbucket

Limites du runner

La recette fournie démarre un processus Node ESM sans dépendance au moyen de node:http.

server.mjs → node:http → état prêt via /health

La recette fournie utilise un stockage synthétique en mémoire ; elle ne démarre aucun service PostgreSQL ni aucun autre service de base de données.

db.mjs → tableau synthétique usersTable → sentinelle déterministe

Absent de la recette fournie

  • TS

    TypeScript

    TypeScript ne fait pas partie de la recette fournie amorçable ; ses fichiers sont de simples modules JavaScript ESM (.mjs).

  • ex

    Express

    Express ne fait pas partie de la recette fournie amorçable ; le serveur HTTP utilise directement node:http.

  • N

    Next.js

    Next.js ne fait pas partie de la recette fournie. Les analyses clientes exigent une recette deton.json supportée après transport de la révision exacte et extraction défensive.

Le runner accepte la fixture fournie et les manifestes supportés depuis des archives de révision exacte dont le hash est vérifié. Les recettes non supportées échouent visiblement.

Les questions que les équipes sécurité posent en premier.

  • Quelle source Deton peut-il évaluer aujourd’hui ?

    Un déploiement configuré récupère l’archive du commit GitHub exact, la place dans un stockage signé et démarre les recettes supportées dans le runner isolé. Les recettes non supportées échouent explicitement.

  • L’absence de constat publié signifie-t-elle que le code est sûr ?

    Non. Les états non pris en charge, non concluants, obsolètes, en erreur ou sans résultat ne prouvent pas la sécurité. Ils restent non publiables.

  • Que se passe-t-il sans résultat fourni accepté par l’évaluateur ?

    Le candidat reste un non-constat, sans éligibilité à un problème en mémoire, livraison ou publication. Son état fourni peut conserver un motif à examiner.

  • Ce déploiement peut-il ajouter un check de pull request ?

    Oui, lorsque GitHub, le stockage et le runner sont configurés. Un échec de livraison reste visible et ne transforme jamais un candidat non prouvé en constat.

  • Où vérifier le traitement et la conservation des données ?

    Consultez les documents publiés sur le traitement des données du déploiement utilisé. Cette page ne prend aucun engagement sur la durée de conservation ou la résidence des données.

  • Combien ça coûte ?

    Consultez la page Tarifs pour les formules et montants actuellement présentés par ce déploiement.

Examinez la frontière de preuve là où les pull requests se décident.

Créez un compte, autorisez un dépôt via la GitHub App configurée, puis ouvrez ou mettez à jour une pull request.

Créer un compteVoir les tarifs

Limite des sources indiquée ci-dessus · les états sans preuve ne deviennent pas des constats.

Deton

Deton analyse les changements autorisés des pull requests dans un runner isolé et soumis aux preuves. Les résultats non supportés ou non concluants ne sont jamais publiés comme confirmés.

Produit

  • Tarifs
  • Comparer
  • Démo

Ressources

  • Documentation
  • Blog
  • Feuille de route
  • API

Conformite

  • Sécurité
  • Confidentialité
  • Conditions
  • DPA
  • BAA

Entreprise

  • À propos
  • État du service
  • Demandes de fonctionnalités

© 2026 Deton

Aperçu de la frontière AppSec · Next.js 16

ConfidentialitéConditionsCookies
Créer un compte