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

La preuve avant le merge.

Des constats de sécurité publiés uniquement après preuve en bac à sable.

Pour les équipes AppSec et d’ingénierie qui examinent les pull requests, Deton distingue les candidats des constats publiables. Aujourd’hui, l’exécution est limitée à la recette fournie ; les autres sources de dépôt restent indisponibles.

Créer un compteExaminer le flux de preuve
app.deton.dev/proof/482
Aller au contenu du tableau de bord
detonMon espace

Facturation

Compte

EEspace de travail Deton

Tableau de bord

État de preuve en lecture seule

Du candidat au paquet de preuve

Inspectez chaque candidat et son état de preuve. Deton ne traite comme constat de vulnérabilité que les preuves confirmées par un oracle.

2

Preuve confirmée

1

Inconclusive

1

Unsupported

Horodatage: 2026-07-06T09:12:00.000Z

Limite runner

Application préchargée, exécuteur isolé, aucune cible de production, aucune exploitation externe.

Étapes de preuve

1 Preuve en cours

Limite de couverture

1 Unsupported

Redaction

1

Preuve confirmée

Candidats

ÉtatSurface affectéeObservation oracle / Limite de couverturePR

Moment de preuve sélectionné

Preuve confirmée

Injection SQL

src/app/api/checkout/route.ts

Une route checkout modifiée interpole une entrée request dans un prédicat SQL.

Étapes de preuve

Paquet d'évidence

Evidence

pkt_01JB7Q3M9E

Contrat de preuve
sql-error-oracle.v1
Observation oracle
L'oracle d'erreur base de données a déclenché deux fois sur entrée seedée; trace sanitizée jointe.
Limite runner
Application préchargée, exécuteur isolé, aucune cible de production, aucune exploitation externe.
Redaction
Fragments request et response sanitizés; aucun secret ou donnée client affiché.

Redaction

Fragments request et response sanitizés; aucun secret ou donnée client affiché.

Limite runner

Application préchargée, exécuteur isolé, aucune cible de production, aucune exploitation externe.

Limite de couverture

Proof-enabled dans le premier pack: oracle d'erreur SQL avec limite base seedée.

ID paquet
pkt_01JB7Q3M9E
ID run
run_20260706_0912
Commit
8f42c1a
État
Preuve confirmée

Cette vue produit n’analyse pas votre application et ne prouve aucun code client.

Un oracle déterministe a produit une evidence selon le contrat configuré.

Ddeton[bot]commented onacme/payments #482

Exploit proven in sandboxSQLI-01 · src/routes/invites.ts

deton_sql_marker_001sandbox run 41s

Parcours produit · dépôt simulé

Deton parle dans votre pull request — et seulement quand il peut le prouver.

Une ligne de check. Un commentaire uniquement quand une preuve en bac à sable s'est déclenchée. Rien d'autre.

Affichage de l'état prouvé : le check Deton exige une action et un commentaire de preuve est publié.

github.com/acme/payments/pull/482

Add invite lookup by email#482Open

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

  • Conversation2
  • Commits3
  • Checks4
  • Files changed7
  • passedbuildSuccessful in 1m 12s
  • passedlintSuccessful in 24s
  • passedunitSuccessful in 48s
  • action requiredDeton proof gate1 confirmed exploitRequiredDetails

Merging is blocked

1 required check has not passed.

src/routes/invites.ts
@@ -44,9 +44,12 @@ export async function lookupInvite(req, res) {-removed:   const rows = await db.query(-removed:     'select * from invites where email = $1', [req.body.email]-removed:   );+added:   const filter = `email = '${req.body.email}'`;+added:   const rows = await db.query(+added:     `select * from invites where ${filter}`+added:   );
Ddeton[bot]commented on this pull request

SQL injection proven in changed code

highsrc/routes/invites.ts:48-52POST /api/invites/lookup

Attack path: req.body.email reaches db.query through POST /api/invites/lookup

Proof marker:deton_sql_marker_001

Replay: Replay boolean_error_timing_oracle and observe deton_sql_marker_001; oracle no longer fires after fix.

▸Guide de correction
Impact
Attacker-controlled input can alter a database query in the sandboxed fixture.
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.
Retest
Deton replays the seeded oracle and confirms the SQL oracle no longer fires.
▸Dossier de preuve
issueId:
issue_cand_sqli_01
family:
sqli
proof.oracleKind:
seeded_db_boolean_or_timing
proof.redactionStatus:
redacted
proof.validatorSignature:
deton-validator:v1:3f9a1c
labels:
deton, security, family:sqli, rule:deton.sqli.single-assignment-variable-taint
github.com/acme/payments/pull/482

Add invite lookup by email#482Open

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

  • Conversation1
  • Commits3
  • Checks4
  • Files changed7
  • passedbuildSuccessful in 1m 12s
  • passedlintSuccessful in 24s
  • passedunitSuccessful in 48s
  • neutralDeton proof gateNo confirmed exploits · 3 candidates unprovenRequiredDetails

All checks have passed

Merging can be performed automatically.

Deton n'a rien publié. C'est le principe — pas de commentaire signifie que rien n'a été prouvé.

Format de sortie réel. Le nom du check, le corps du commentaire et les champs de preuve sont produits par le code livré de Deton ; cette exécution a été déclenchée sur notre cible d'essai (2026-07-06). Deton ne publie un commentaire que lorsqu'un signal s'est déclenché dans le bac à sable.

Limite actuelle des sources

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

Un exécuteur configuré ne peut publier qu’un résultat confirmé. Les états non pris en charge, non concluants, obsolètes, en erreur ou sans résultat ne prouvent pas une vulnérabilité.

Source exécutable aujourd’hui
La recette fournie est la seule qui puisse démarrer aujourd’hui : artifact://deton-fixture/deton-vulnerable-target@v1.
Autres références de dépôt
Elles renvoient source_unavailable ; aucune pull request provenant d’un dépôt client n’est exécutée depuis cette page.

Un candidat ne devient un constat qu’après une observation confirmée.

Seule la recette fournie de cible vulnérable peut démarrer aujourd’hui.

github.com/acme/payments/pull/482

GitHub App · acme

Install Deton

Read: code, pull requestsWrite: checks, comments

Un manifeste deton.json décrit la recette fournie. Les autres références de dépôt renvoient source_unavailable avant l’exécution.

deton app installed · PR checks enabled

exécution bornée en bac à sable · aucune source cliente

  • SQLI-01src/routes/invites.tsexploited
  • CMDI-02src/jobs/thumbnailer.tsrunning
  • SQLI-03src/db/reports.tsqueued
$ sandbox boot acme/payments@feat/invite-lookup
▸ manifest deton.json resolved · image node20
▸ target up · POST /api/invites/lookup
▸ probing boolean / error / timing responses
▸ proof marker observed: deton_sql_marker_001
✓ SQLI-01 confirmed in ~2 s · sandbox destroyed
  • ✓buildSuccessful in 1m 12s
  • ✓lintSuccessful in 24s
  • ✓unitSuccessful in 48s
  • ●Deton proof gate1 confirmed exploit · Required

⨯Merging is blocked — 1 required check has not passed

deton[bot]botcommented 2 minutes ago

SQL injection proven in changed code

highsrc/routes/invites.ts:48-52

req.body.email reaches db.query through POST /api/invites/lookup

Proof markerdeton_sql_marker_001

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

Un candidat ne devient un constat publiable que lorsqu’une observation déterministe le confirme. Les états non pris en charge, non concluants, obsolètes et en erreur conservent l’incertitude.

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 observation confirmée

Observation confirmée en bac à sable

SQL injectionConfirmed in sandbox

acme/payments · #482

src/routes/invites.ts:41

deton_sql_marker_001

sandbox observation recorded · review context included

  • Une confirmation exige une observation

    Un verdict ne peut être « confirmé » qu’après l’enregistrement d’un signal mesurable par l’oracle configuré pour l’exécution en cours.

  • Non prouvé reste non prouvé

    Impossible à prouver ? Deton le signale et consigne la tentative. L’état n’est pas promu pour garder un tableau de bord au rouge.

  • La limite des sources est explicite

    Aujourd’hui, seule la recette fournie peut démarrer. Les autres références de dépôt renvoient source_unavailable avant l’exécution.

  • Les preuves restent consultables

    Un résultat confirmé consigne la requête, l’effet observé et le contexte d’exécution nécessaires à son examen.

La source actuellement prise en charge est la recette fournie de cible vulnérable en Node et TypeScript. Les autres sources et familles non couvertes ne produisent pas de constats publiables.

Limites actuelles d’exécution et de livraison.

Les capacités et la livraison dépendent de la configuration actuelle du runner et de GitHub App.

Livraison configurée

GitHub

La livraison vers GitHub n’apparaît que si ce déploiement dispose d’un flux GitHub App configuré.

Indisponible iciGitLabBitbucket

Ce que la recette fournie exerce

La recette fournie démarre un processus Node dans le runner configuré.

bundled recipe → node process → readiness observed

La recette fournie comprend un chemin de requête TypeScript pour le contrat de preuve configuré.

request input → configured sink → candidate state

La recette fournie expose une route Express utilisée par son contrat de preuve borné.

POST /invites → configured request → observation recorded

Next.js ne fait pas partie de la recette fournie amorçable ; les sources de dépôts arbitraires restent indisponibles.

customer source → source_unavailable
Base de données de la recette fournieL’exécution est limitée à la recette fournie ; les sources clientes ne sont pas acceptées.

Surface de livraison configurée

  • Pull request GitHub

    Lorsque le flux GitHub App est configuré, un résultat publiable peut être livré sous forme de check de pull request.

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

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

    Seule la recette fournie de cible vulnérable peut démarrer aujourd’hui. Les autres références de dépôt renvoient source_unavailable avant l’exécution.

  • 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 observation confirmée ?

    Le candidat reste sans preuve et ne peut pas devenir un constat publiable. Le motif du résultat reste consultable.

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

    Uniquement si son flux GitHub App est configuré. La configuration d’un dépôt est une action Intégrations réservée au propriétaire ou à un administrateur de l’organisation.

  • 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.

Ouvrez le tableau de bord, puis vérifiez la configuration.

La création du compte ouvre le tableau de bord. La configuration d’un dépôt revient à un propriétaire ou administrateur dans Intégrations et ne fonctionne que si le flux GitHub App est configuré.

Créer un compteVoir les tarifs

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

Deton

Deton scanne vos pull requests, prouve l'exploitabilité dans un bac à sable isolé, et livre des packets de preuve exploitables avant le merge.

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

AppSec sous preuve · Next.js 16

ConfidentialitéConditionsCookies