Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
sqlite-session-ncol — SQLite 3.53.4 - Élevé - Local - écriture hors limites dans le tas - croissance de nCol avec des noms identiques dans les changesets de session | Kitploit
Outils/GitHubGitHub/abraxas/sqlite-session-ncol
Criminalistique MémoireAnalyse des VulnérabilitésExploitationFuzzingAnalyse de BinairesArticles et RechercheSécurité des Bases de Données
GitHubabraxas/sqlite-session-ncol

sqlite-session-ncol

SQLite 3.53.4 - Élevé - Local - écriture hors limites dans le tas - croissance de nCol avec des noms identiques dans les changesets de session

Voir le dépôt
20il y a 8 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Abraxas Labs - sqlite-session-ncol

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  sqlite-session-ncol

Write-up : https://abraxaslabs.tech/research/sqlite-session-ncol

sqlite-session-ncol

Classe : écriture hors limites (OOB) dans le tas Portée : Locale

SQLite 3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69, SOURCE_ID 2026-07-24 19:02:57 bf7c7f30031888f4e796e429ab3978879485813aaca6f641c7b33e4e09459bcc) avec -DSQLITE_ENABLE_SESSION. Un changeset à deux blocs qui réutilise le nom de table t avec nCol=2 puis nCol=64 contourne la réinitialisation de sessionTableInfo (sqlite3session.c:5619) et effectue un memset au-delà de l'aUpdateMask du premier bloc. WRITE ASan de taille 12 dans sessionUpdateFind. Contrôle : un seul UPDATE à 2 colonnes, apply-rc=0.

Pas une amalgamation par défaut, sauf si SESSION est activé. La NPD CVE-2026-50812 est corrigée à partir de 3.53.2+. Ce n'est pas une charge RCE weaponisée. L'oracle est le WRITE ASan.

IDpas encore de CVE
Classeécriture OOB dans le tas (WRITE ASan de taille 12 ; RCE non démontrée)
PortéeLocale (changeset non fiable via sqlite3changeset_apply*)
CWECWE-787
CVSSÉlevé : 8.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
ProduitSQLite extension Session (Hwaci)
Affecté3.53.4 (b09c88c) compilé avec -DSQLITE_ENABLE_SESSION
Authl'hôte applique un changeset non fiable
LicenceGNU Affero GPL v3.0
Lab127.0.0.1:18900 uniquement. Témoin WRITE ASan de taille 12.

Ce qu'un attaquant peut faire

Appliquer un changeset non fiable dont le second bloc de table réutilise un nom de table avec un nCol plus grand. Écriture OOB dans le tas. Extension de compilation. Pas une amalgamation par défaut, sauf si SESSION est activé.

Le premier bloc alloue aUpdateMask à partir de pIter->nCol. Le bloc ultérieur portant le même nom contourne la réinitialisation de sessionTableInfo et effectue un memset d'un masque plus grand par-dessus l'ancienne allocation. Lab : nCol=2 puis nCol=64 sur un UPDATE. WRITE ASan de taille 12 dans sessionUpdateFind. Contrôle : un seul UPDATE à 2 colonnes, apply-rc=0.

Ne traitez pas ce pack comme un gadget write-what-where. Le WRITE ASan de taille 12 est l'oracle.

Comment je l'ai trouvé

Vingt recherches dans le code source de SQLite 3.53.4 après la vague FTS5 / session-NPD de 3.53.2. CVE-2026-50812 est corrigée (sessionBindRow traite une valeur manquante comme SQLITE_CORRUPT). Session indexe toujours SessionApplyCtx uniquement sur le nom de table. Un second bloc portant le même nom et un nombre de colonnes déclaré plus grand réutilise aUpdateMask.

Fausses pistes déjà consignées : considérer l'amalgamation par défaut comme dans le périmètre (SESSION est désactivé) ; re-déposer CVE-2026-50812 ; envoyer un seul bloc de table avec nCol=64 contre un schéma à 2 colonnes (schemaMismatch, aucune écriture) ; prétendre à une RCE à partir d'un memset de 12 octets.

Lab

cd lab
./run.sh

Amalgamation ASan issue du zip officiel sqlite-src-3530400. Compiler avec -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_PREUPDATE_HOOK en supplément. Health sur 127.0.0.1:18900. Le lier à loopback.

SUCCESS sqlite-session-ncol how=asan-heap-write-sessionUpdateFind write-size=12 control-apply-rc=0 SQLITE-SESSION-NCOL-WITNESS

Le correctif

Lorsqu'un bloc de table de changeset ultérieur réutilise un nom, reconstruire SessionApplyCtx de la même manière qu'un nouveau nom le fait déjà : libérer aUpdateMask, relancer sessionTableInfo, refuser un nCol plus grand que le schéma actif. Trunk 3f57024aec / branch-3.53 a1dd7123d8 (2026-08-17) est postérieur à cette GA.

Références

  • https://sqlite.org/src tag version-3.53.4 (b09c88c14082339b66c7b7158d609a771e64ca69)
  • https://github.com/sqlite/sqlite/blob/b09c88c14082339b66c7b7158d609a771e64ca69/ext/session/sqlite3session.c sessionChangesetApply :5619, sessionUpdateFind :4381-4412
  • Forum https://sqlite.org/bugs/info/2026-08-16T10:15:25Z
  • CVE-2026-50812 session NPD est corrigé sur 3.53.2+
Télécharger l’outil