@nifrajs/mcp-db 5.2.0 → 5.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +27 -11
- package/dist/engine.js.map +1 -1
- package/package.json +2 -2
- package/src/engine.ts +29 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @nifrajs/mcp-db
|
|
2
2
|
|
|
3
|
+
## 5.3.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 48c9895: A query through a partial SQLite index whose `WHERE` names a masked column is now refused like any other read of that column. Choosing the index proves its predicate for every row it yields, so `SELECT count(*) FROM users WHERE password_hash LIKE 'h%'` could answer the masked predicate through an existing partial index without the bytecode ever reading the column.
|
|
8
|
+
- @nifrajs/mcp@5.3.0
|
|
9
|
+
- 9fbb84e: A query that walks an index on a masked column in key order is refused like any other read of that column. `ORDER BY <masked column>` served by its index never read or compared the column, so it was admitted and returned rows ranked by the masked value.
|
|
10
|
+
|
|
11
|
+
## 5.2.1
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- @nifrajs/mcp@5.2.1
|
|
16
|
+
|
|
3
17
|
## 5.2.0
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG1C,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,cAAc,EAKnB,KAAK,gBAAgB,EAGtB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,SAAS,EACT,UAAU,EACV,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAW7B;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,SAAS,MAAM,EAAO,GACjC,MAAM,GAAG,SAAS,CAuBpB;AAwCD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CA8BxE;AAED,kGAAkG;AAClG,wBAAgB,eAAe,CAC7B,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAC7B,OAAO,GAAE,SAAS,MAAM,EAAO,GAC9B;IAAE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,CAS9E;AAkCD,iEAAiE;AACjE,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAG1C,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,MAAM,EACX,KAAK,cAAc,EAKnB,KAAK,gBAAgB,EAGtB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,SAAS,EACT,UAAU,EACV,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAW7B;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,UAAU,GAAE,SAAS,MAAM,EAAO,GACjC,MAAM,GAAG,SAAS,CAuBpB;AAwCD;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CA8BxE;AAED,kGAAkG;AAClG,wBAAgB,eAAe,CAC7B,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAC7B,OAAO,GAAE,SAAS,MAAM,EAAO,GAC9B;IAAE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAAE,CAS9E;AAkCD,iEAAiE;AACjE,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,kEAAkE;IAClE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CACrC;AA2QD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,kBAAkB,GAC1B,MAAM,GAAG,SAAS,CAYpB;AAED,2FAA2F;AAC3F,wBAAgB,aAAa,CAC3B,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAC7B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,GAAG,gBAAgB,CAAC,GAC9D,MAAM,GAAG,SAAS,CAuBpB;AAmBD,4CAA4C;AAC5C,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,wCAAwC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,WAAW,CAAA;CACjC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,EAC7B,OAAO,GAAE,mBAAwB,GAChC,cAAc,GAAG,SAAS,CA2F5B"}
|
package/dist/engine.js
CHANGED
|
@@ -221,6 +221,9 @@ const KEY_COMPARE_OPCODES = new Set([
|
|
|
221
221
|
"IfNoHope",
|
|
222
222
|
]);
|
|
223
223
|
const ROWID_OPCODES = new Set(["Rowid", "SeekRowid", "NotExists", "IdxRowid"]);
|
|
224
|
+
// Each steps a cursor in key order, so the rows it yields are ranked by every key field: an index
|
|
225
|
+
// walked for `ORDER BY <column>` leaks the order of a column it never reads or compares.
|
|
226
|
+
const KEY_ORDER_OPCODES = new Set(["Rewind", "Last", "Next", "Prev"]);
|
|
224
227
|
/**
|
|
225
228
|
* The record layout behind a cursor on `entry`, from SQLite's own catalog. A rowid table stores its
|
|
226
229
|
* non-virtual columns in order, then its virtual ones; a WITHOUT ROWID table and an index store the
|
|
@@ -259,13 +262,19 @@ function cursorLayout(db, entry) {
|
|
|
259
262
|
...columns.filter((column) => Number(column.hidden) !== 2),
|
|
260
263
|
...columns.filter((column) => Number(column.hidden) === 2),
|
|
261
264
|
];
|
|
262
|
-
return {
|
|
265
|
+
return {
|
|
266
|
+
table: entry.table,
|
|
267
|
+
fields: stored.map((column) => [column.name]),
|
|
268
|
+
keyCount: 0,
|
|
269
|
+
rowid,
|
|
270
|
+
predicate: [],
|
|
271
|
+
};
|
|
263
272
|
}
|
|
264
273
|
// A substring match can only over-count: an expression field then reads one column too many.
|
|
265
274
|
const source = (entry.sql ?? "").toLowerCase();
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
|
|
275
|
+
const namedIn = (text) => columns.map((column) => column.name).filter((name) => text.includes(name.toLowerCase()));
|
|
276
|
+
const named = namedIn(source);
|
|
277
|
+
const where = /\bwhere\b/.exec(source);
|
|
269
278
|
const xinfo = db
|
|
270
279
|
.prepare("SELECT cid, name, key FROM pragma_index_xinfo(?) ORDER BY seqno")
|
|
271
280
|
.all(index);
|
|
@@ -280,6 +289,7 @@ function cursorLayout(db, entry) {
|
|
|
280
289
|
: named),
|
|
281
290
|
keyCount: xinfo.filter((field) => Number(field.key) === 1).length,
|
|
282
291
|
rowid,
|
|
292
|
+
predicate: where === null ? [] : namedIn(source.slice(where.index)),
|
|
283
293
|
};
|
|
284
294
|
}
|
|
285
295
|
/**
|
|
@@ -290,7 +300,8 @@ function cursorLayout(db, entry) {
|
|
|
290
300
|
* (`pragma_*`, `dbstat`, `json_each`) is never exposed.
|
|
291
301
|
*
|
|
292
302
|
* With `masked`, also every masked column a cursor on a table or index yields (`Column`), compares
|
|
293
|
-
* (a seek or index range check, so a filter counts)
|
|
303
|
+
* (a seek or index range check, so a filter counts), orders by (stepping an index in key order) or
|
|
304
|
+
* reads as the rowid. Values the statement
|
|
294
305
|
* derives from those reads live in other cursors and registers, so an alias or an expression
|
|
295
306
|
* cannot hide the column it started from.
|
|
296
307
|
*/
|
|
@@ -321,6 +332,12 @@ function bytecodeReads(db, query, masked) {
|
|
|
321
332
|
}
|
|
322
333
|
if (masked === undefined)
|
|
323
334
|
return { tables: [...reads], masked: [] };
|
|
335
|
+
const hits = new Set();
|
|
336
|
+
const read = (layout, names) => {
|
|
337
|
+
for (const name of names)
|
|
338
|
+
if (masked(name))
|
|
339
|
+
hits.add(`${layout.table}.${name}`);
|
|
340
|
+
};
|
|
324
341
|
const layouts = new Map();
|
|
325
342
|
const layoutOf = (cursor) => {
|
|
326
343
|
const entry = cursors.get(cursor);
|
|
@@ -330,15 +347,10 @@ function bytecodeReads(db, query, masked) {
|
|
|
330
347
|
if (layout === undefined) {
|
|
331
348
|
layout = cursorLayout(db, entry);
|
|
332
349
|
layouts.set(cursor, layout);
|
|
350
|
+
read(layout, layout.predicate);
|
|
333
351
|
}
|
|
334
352
|
return layout;
|
|
335
353
|
};
|
|
336
|
-
const hits = new Set();
|
|
337
|
-
const read = (layout, names) => {
|
|
338
|
-
for (const name of names)
|
|
339
|
-
if (masked(name))
|
|
340
|
-
hits.add(`${layout.table}.${name}`);
|
|
341
|
-
};
|
|
342
354
|
for (const step of program) {
|
|
343
355
|
const layout = layoutOf(Number(step.p1));
|
|
344
356
|
if (layout === undefined)
|
|
@@ -351,6 +363,10 @@ function bytecodeReads(db, query, masked) {
|
|
|
351
363
|
for (const field of layout.fields.slice(0, compared))
|
|
352
364
|
read(layout, field);
|
|
353
365
|
}
|
|
366
|
+
else if (KEY_ORDER_OPCODES.has(step.opcode)) {
|
|
367
|
+
for (const field of layout.fields.slice(0, layout.keyCount))
|
|
368
|
+
read(layout, field);
|
|
369
|
+
}
|
|
354
370
|
else if (ROWID_OPCODES.has(step.opcode) && layout.rowid !== undefined) {
|
|
355
371
|
read(layout, [layout.rowid]);
|
|
356
372
|
}
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nifrajs/mcp-db",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.3.0",
|
|
4
4
|
"description": "Serve a SQLite database as a fail-closed MCP server - allowlisted schema tools by default, opt-in read-only queries with plan verification.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"bun",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"access": "public"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@nifrajs/mcp": "5.
|
|
52
|
+
"@nifrajs/mcp": "5.3.0"
|
|
53
53
|
},
|
|
54
54
|
"repository": {
|
|
55
55
|
"type": "git",
|
package/src/engine.ts
CHANGED
|
@@ -300,6 +300,9 @@ const KEY_COMPARE_OPCODES = new Set([
|
|
|
300
300
|
"IfNoHope",
|
|
301
301
|
])
|
|
302
302
|
const ROWID_OPCODES = new Set(["Rowid", "SeekRowid", "NotExists", "IdxRowid"])
|
|
303
|
+
// Each steps a cursor in key order, so the rows it yields are ranked by every key field: an index
|
|
304
|
+
// walked for `ORDER BY <column>` leaks the order of a column it never reads or compares.
|
|
305
|
+
const KEY_ORDER_OPCODES = new Set(["Rewind", "Last", "Next", "Prev"])
|
|
303
306
|
|
|
304
307
|
interface BytecodeReads {
|
|
305
308
|
readonly tables: readonly string[]
|
|
@@ -329,6 +332,11 @@ interface CursorLayout {
|
|
|
329
332
|
readonly keyCount: number
|
|
330
333
|
/** The INTEGER PRIMARY KEY column the rowid is, if the table has one. */
|
|
331
334
|
readonly rowid: string | undefined
|
|
335
|
+
/**
|
|
336
|
+
* The columns a partial index's WHERE names. Every row the index yields satisfies it, so opening
|
|
337
|
+
* the index filters on them as surely as reading them would.
|
|
338
|
+
*/
|
|
339
|
+
readonly predicate: readonly string[]
|
|
332
340
|
}
|
|
333
341
|
|
|
334
342
|
/**
|
|
@@ -380,13 +388,20 @@ function cursorLayout(db: Pick<Database, "prepare">, entry: CatalogEntry): Curso
|
|
|
380
388
|
...columns.filter((column) => Number(column.hidden) !== 2),
|
|
381
389
|
...columns.filter((column) => Number(column.hidden) === 2),
|
|
382
390
|
]
|
|
383
|
-
return {
|
|
391
|
+
return {
|
|
392
|
+
table: entry.table,
|
|
393
|
+
fields: stored.map((column) => [column.name]),
|
|
394
|
+
keyCount: 0,
|
|
395
|
+
rowid,
|
|
396
|
+
predicate: [],
|
|
397
|
+
}
|
|
384
398
|
}
|
|
385
399
|
// A substring match can only over-count: an expression field then reads one column too many.
|
|
386
400
|
const source = (entry.sql ?? "").toLowerCase()
|
|
387
|
-
const
|
|
388
|
-
.map((column) => column.name)
|
|
389
|
-
|
|
401
|
+
const namedIn = (text: string): string[] =>
|
|
402
|
+
columns.map((column) => column.name).filter((name) => text.includes(name.toLowerCase()))
|
|
403
|
+
const named = namedIn(source)
|
|
404
|
+
const where = /\bwhere\b/.exec(source)
|
|
390
405
|
const xinfo = db
|
|
391
406
|
.prepare<{ cid: number | bigint; name: string | null; key: number | bigint }, [string]>(
|
|
392
407
|
"SELECT cid, name, key FROM pragma_index_xinfo(?) ORDER BY seqno",
|
|
@@ -405,6 +420,7 @@ function cursorLayout(db: Pick<Database, "prepare">, entry: CatalogEntry): Curso
|
|
|
405
420
|
),
|
|
406
421
|
keyCount: xinfo.filter((field) => Number(field.key) === 1).length,
|
|
407
422
|
rowid,
|
|
423
|
+
predicate: where === null ? [] : namedIn(source.slice(where.index)),
|
|
408
424
|
}
|
|
409
425
|
}
|
|
410
426
|
|
|
@@ -416,7 +432,8 @@ function cursorLayout(db: Pick<Database, "prepare">, entry: CatalogEntry): Curso
|
|
|
416
432
|
* (`pragma_*`, `dbstat`, `json_each`) is never exposed.
|
|
417
433
|
*
|
|
418
434
|
* With `masked`, also every masked column a cursor on a table or index yields (`Column`), compares
|
|
419
|
-
* (a seek or index range check, so a filter counts)
|
|
435
|
+
* (a seek or index range check, so a filter counts), orders by (stepping an index in key order) or
|
|
436
|
+
* reads as the rowid. Values the statement
|
|
420
437
|
* derives from those reads live in other cursors and registers, so an alias or an expression
|
|
421
438
|
* cannot hide the column it started from.
|
|
422
439
|
*/
|
|
@@ -452,6 +469,10 @@ function bytecodeReads(
|
|
|
452
469
|
}
|
|
453
470
|
if (masked === undefined) return { tables: [...reads], masked: [] }
|
|
454
471
|
|
|
472
|
+
const hits = new Set<string>()
|
|
473
|
+
const read = (layout: CursorLayout, names: readonly string[]): void => {
|
|
474
|
+
for (const name of names) if (masked(name)) hits.add(`${layout.table}.${name}`)
|
|
475
|
+
}
|
|
455
476
|
const layouts = new Map<number, CursorLayout>()
|
|
456
477
|
const layoutOf = (cursor: number): CursorLayout | undefined => {
|
|
457
478
|
const entry = cursors.get(cursor)
|
|
@@ -460,13 +481,10 @@ function bytecodeReads(
|
|
|
460
481
|
if (layout === undefined) {
|
|
461
482
|
layout = cursorLayout(db, entry)
|
|
462
483
|
layouts.set(cursor, layout)
|
|
484
|
+
read(layout, layout.predicate)
|
|
463
485
|
}
|
|
464
486
|
return layout
|
|
465
487
|
}
|
|
466
|
-
const hits = new Set<string>()
|
|
467
|
-
const read = (layout: CursorLayout, names: readonly string[]): void => {
|
|
468
|
-
for (const name of names) if (masked(name)) hits.add(`${layout.table}.${name}`)
|
|
469
|
-
}
|
|
470
488
|
for (const step of program) {
|
|
471
489
|
const layout = layoutOf(Number(step.p1))
|
|
472
490
|
if (layout === undefined) continue
|
|
@@ -475,6 +493,8 @@ function bytecodeReads(
|
|
|
475
493
|
const count = Number(step.p4)
|
|
476
494
|
const compared = Number.isInteger(count) && count > 0 ? count : layout.keyCount
|
|
477
495
|
for (const field of layout.fields.slice(0, compared)) read(layout, field)
|
|
496
|
+
} else if (KEY_ORDER_OPCODES.has(step.opcode)) {
|
|
497
|
+
for (const field of layout.fields.slice(0, layout.keyCount)) read(layout, field)
|
|
478
498
|
} else if (ROWID_OPCODES.has(step.opcode) && layout.rowid !== undefined) {
|
|
479
499
|
read(layout, [layout.rowid])
|
|
480
500
|
}
|