@cello-protocol/gateway 0.0.48 → 0.0.50
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/dist/detect/language.d.ts +7 -0
- package/dist/detect/language.d.ts.map +1 -1
- package/dist/detect/language.js +7 -1
- package/dist/detect/language.js.map +1 -1
- package/dist/detect/sanitize.d.ts +34 -0
- package/dist/detect/sanitize.d.ts.map +1 -1
- package/dist/detect/sanitize.js +21 -1
- package/dist/detect/sanitize.js.map +1 -1
- package/dist/screen/inbound.d.ts.map +1 -1
- package/dist/screen/inbound.js +16 -4
- package/dist/screen/inbound.js.map +1 -1
- package/package.json +1 -1
|
@@ -33,5 +33,12 @@ export interface LanguageOptions {
|
|
|
33
33
|
/** Minimum dominant-script share to hold. Default 0.5. */
|
|
34
34
|
minShare?: number;
|
|
35
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Exported for tests that need to MEASURE an exemplar's script composition. A test that hand-copies
|
|
38
|
+
* this bucketing drifts the moment a bucket is added here, and its "measured" counts quietly stop
|
|
39
|
+
* describing the classifier they claim to measure. Not re-exported from the package index — this is
|
|
40
|
+
* the module's own boundary, not public API.
|
|
41
|
+
*/
|
|
42
|
+
export declare function scriptOf(cp: number): Script | null;
|
|
36
43
|
export declare function screenInboundLanguage(text: string, opts?: LanguageOptions): LanguageVerdict;
|
|
37
44
|
//# sourceMappingURL=language.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../src/detect/language.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,uGAAuG;AACvG,MAAM,MAAM,MAAM,GACd,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAChF,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpC,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,oGAAoG;IACpG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;
|
|
1
|
+
{"version":3,"file":"language.d.ts","sourceRoot":"","sources":["../../src/detect/language.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,uGAAuG;AACvG,MAAM,MAAM,MAAM,GACd,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAChF,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;AAEpC,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,oGAAoG;IACpG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgBlD;AAQD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,eAAoB,GAAG,eAAe,CAgC/F"}
|
package/dist/detect/language.js
CHANGED
|
@@ -15,7 +15,13 @@
|
|
|
15
15
|
* handling (ack-and-record without delivering, distinct from the transient fail-closed hold) is the
|
|
16
16
|
* integration step (M9-FEED-001 / the gate / the L4 terminal-vs-transient split).
|
|
17
17
|
*/
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Exported for tests that need to MEASURE an exemplar's script composition. A test that hand-copies
|
|
20
|
+
* this bucketing drifts the moment a bucket is added here, and its "measured" counts quietly stop
|
|
21
|
+
* describing the classifier they claim to measure. Not re-exported from the package index — this is
|
|
22
|
+
* the module's own boundary, not public API.
|
|
23
|
+
*/
|
|
24
|
+
export function scriptOf(cp) {
|
|
19
25
|
// Returns the script for a LETTER codepoint, or null for non-letters (digits/punct/space/emoji).
|
|
20
26
|
if ((cp >= 0x41 && cp <= 0x5a) || (cp >= 0x61 && cp <= 0x7a) ||
|
|
21
27
|
(cp >= 0xc0 && cp <= 0x24f) || (cp >= 0x1e00 && cp <= 0x1eff))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/detect/language.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAyBH,
|
|
1
|
+
{"version":3,"file":"language.js","sourceRoot":"","sources":["../../src/detect/language.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,40 @@ export interface SanitizationNote {
|
|
|
8
8
|
export interface SanitizeResult {
|
|
9
9
|
/** The DELIVERED text: invisible-strip + confusables + special-token strip. Empty on `blocked`. */
|
|
10
10
|
text: string;
|
|
11
|
+
/**
|
|
12
|
+
* The text as it was WRITTEN, with only invisibles stripped — for the LANGUAGE screen, which asks
|
|
13
|
+
* a question `text` can no longer answer. Empty on `blocked`.
|
|
14
|
+
*
|
|
15
|
+
* `normalizeConfusables` rewrites every Cyrillic/Greek letter that has a Latin lookalike, so by
|
|
16
|
+
* the time `text` exists the script composition of the original is gone: a jailbreak measured live
|
|
17
|
+
* on 2026-09-04 arrived 165/165 Cyrillic and reached the screen as 123 Latin / 42 Cyrillic — a
|
|
18
|
+
* 0.255 share, under the 0.5 bar — and was delivered. Normalization is doing its job; the defect
|
|
19
|
+
* was feeding its output to a check that needed its input.
|
|
20
|
+
*
|
|
21
|
+
* The rule for what this text has had done to it: **remove anything that distorts a letter count,
|
|
22
|
+
* keep everything that carries script identity.** Three things distort the count, and all three
|
|
23
|
+
* are handled before capture —
|
|
24
|
+
*
|
|
25
|
+
* - **invisibles**, because `scriptOf` buckets variation selectors and Tag characters as letters,
|
|
26
|
+
* so a sender can pad with codepoints nobody can see;
|
|
27
|
+
* - **special-token markers**, because `stripSpecialTokens` deletes them from the DELIVERED text —
|
|
28
|
+
* they are dilution letters the recipient never sees, so they cost the attacker nothing
|
|
29
|
+
* (28 `[SYSTEM]`s dropped the live jailbreak under the bar and it was delivered verbatim);
|
|
30
|
+
* - **compatibility forms**, because `scriptOf` reads fullwidth and math-alphanumeric Latin as a
|
|
31
|
+
* non-Latin script, which held ordinary English typed on a CJK-locale IME.
|
|
32
|
+
*
|
|
33
|
+
* VISIBLE Latin padding still dilutes, and that is left alone deliberately: it stays in the
|
|
34
|
+
* delivered message, so the recipient can see the text they were sent. The distinction this text
|
|
35
|
+
* draws is not "attacker input" versus "clean" — it is between letters the agent will read and
|
|
36
|
+
* letters that vanish before the agent reads anything.
|
|
37
|
+
*
|
|
38
|
+
* Neither NFKC nor the marker strip touches Cyrillic/Greek lookalikes — those are separate
|
|
39
|
+
* characters, not compatibility forms — so the cross-script evidence survives both.
|
|
40
|
+
*
|
|
41
|
+
* Nothing else consumes this. The pattern scanner, the special-token strip, the semantic
|
|
42
|
+
* classifier and the delivered form all read the confusables-normalized `text`.
|
|
43
|
+
*/
|
|
44
|
+
scriptScanText: string;
|
|
11
45
|
/**
|
|
12
46
|
* The delivered text with encodings additionally decoded — for DETECTION ONLY (the pattern
|
|
13
47
|
* matcher / entropy). Never delivered to the agent: decoding %XX / &#..; / \x.. in a legitimate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/detect/sanitize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/detect/sanitize.ts"],"names":[],"mappings":"AAoBA,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,UAAY,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,iBAAiB,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC;IAClF,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,mGAAmG;IACnG,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,0FAA0F;IAC1F,gBAAgB,EAAE,MAAM,CAAC;IACzB,0FAA0F;IAC1F,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAmBD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAQ9E;AAwED,iGAAiG;AACjG,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQxD;AAgBD;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,4JAA+I,CAAC;AAEpL;;;;;;;;;;GAUG;AACH,eAAO,MAAM,uBAAuB,uBAAuB,CAAC;AAE5D,oGAAoG;AACpG,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAqBD,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,GAAE,eAAoB,GAAG,cAAc,CA4D/F"}
|
package/dist/detect/sanitize.js
CHANGED
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
* RE2 engine (no native RegExp — ReDoS). The RE2 binding is a pending decision, so that step is
|
|
11
11
|
* not wired here yet; this module exposes the sanitized text + notes that the pattern matcher and
|
|
12
12
|
* the M9-IN-002 scanner will consume.
|
|
13
|
+
*
|
|
14
|
+
* THREE texts come out, and which one a caller takes is a security decision. `text` is the delivered
|
|
15
|
+
* form (everything applied). `decodedForScan` is that plus encodings decoded, for detection only.
|
|
16
|
+
* `scriptScanText` is the text as WRITTEN with only invisibles removed — the language screen's
|
|
17
|
+
* input, because confusables normalization destroys the very evidence that screen reads.
|
|
13
18
|
*/
|
|
14
19
|
import { AFFORDANCE_PREFIX } from "../screen/affordance.js";
|
|
15
20
|
/** Default per-message byte cap — mirrors the daemon's 1 MB content cap. */
|
|
@@ -212,6 +217,7 @@ export function sanitizeInbound(content, opts = {}) {
|
|
|
212
217
|
if (content.length > maxBytes) {
|
|
213
218
|
return {
|
|
214
219
|
text: "",
|
|
220
|
+
scriptScanText: "",
|
|
215
221
|
decodedForScan: "",
|
|
216
222
|
notes: [],
|
|
217
223
|
entropySuspicion: 0,
|
|
@@ -227,6 +233,20 @@ export function sanitizeInbound(content, opts = {}) {
|
|
|
227
233
|
if (inv.removed > 0)
|
|
228
234
|
notes.push({ step: "invisible_strip", detail: "stripped invisible/smuggled-Unicode codepoints", count: inv.removed });
|
|
229
235
|
text = inv.text;
|
|
236
|
+
// The language screen's input: everything that can distort a LETTER COUNT is removed, and the one
|
|
237
|
+
// thing that carries the answer — cross-script identity — is left alone. See `scriptScanText`.
|
|
238
|
+
//
|
|
239
|
+
// NFKC folds compatibility forms (fullwidth, math-alphanumeric) back to plain Latin; without it
|
|
240
|
+
// ordinary English off a CJK-locale IME reads as a non-Latin script and gets held. The marker
|
|
241
|
+
// strip runs because markers are dilution letters the recipient never sees — `stripSpecialTokens`
|
|
242
|
+
// deletes them from the delivered text, so an attacker spends them for free. Neither step touches
|
|
243
|
+
// Cyrillic/Greek lookalikes: those are separate characters, not compatibility forms, so the
|
|
244
|
+
// evidence this screen exists to read survives both.
|
|
245
|
+
//
|
|
246
|
+
// `normalizeConfusables` below keeps its OWN NFKC and still takes the un-folded `text` — its
|
|
247
|
+
// `changed`/`count` are reported against what arrived, and passing it pre-folded text would drop
|
|
248
|
+
// NFKC-only changes out of the redact note.
|
|
249
|
+
const scriptScanText = stripSpecialTokens(text.normalize("NFKC")).text;
|
|
230
250
|
const conf = normalizeConfusables(text);
|
|
231
251
|
if (conf.changed)
|
|
232
252
|
notes.push({ step: "confusables", detail: "normalized lookalike characters to their base form", count: conf.count });
|
|
@@ -245,6 +265,6 @@ export function sanitizeInbound(content, opts = {}) {
|
|
|
245
265
|
const entropySuspicion = scoreEntropy(decodedForScan);
|
|
246
266
|
if (entropySuspicion > 0)
|
|
247
267
|
notes.push({ step: "entropy", detail: "high-entropy encoded-blob segment(s) detected", count: entropySuspicion });
|
|
248
|
-
return { text, decodedForScan, notes, entropySuspicion };
|
|
268
|
+
return { text, scriptScanText, decodedForScan, notes, entropySuspicion };
|
|
249
269
|
}
|
|
250
270
|
//# sourceMappingURL=sanitize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/detect/sanitize.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/detect/sanitize.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../src/screen/inbound.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"inbound.d.ts","sourceRoot":"","sources":["../../src/screen/inbound.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,+FAA+F;IAC/F,OAAO,EAAE,UAAU,CAAC;IACpB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B;sFACkF;IAClF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sFAAsF;IACtF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,mGAAmG;IACnG,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,8BAA8B,CAAC;AAIrE,qBAAa,eAAe;;gBAKd,IAAI,GAAE,sBAA2B;IAOvC,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC;CAgH3D"}
|
package/dist/screen/inbound.js
CHANGED
|
@@ -13,8 +13,14 @@
|
|
|
13
13
|
*
|
|
14
14
|
* "TERMINAL" means the daemon records a leaf + acknowledges (the sender stops) but never delivers
|
|
15
15
|
* the content — distinct from the fail-closed TRANSIENT block a down gateway returns, which stays
|
|
16
|
-
* un-acked for redelivery.
|
|
17
|
-
*
|
|
16
|
+
* un-acked for redelivery.
|
|
17
|
+
*
|
|
18
|
+
* The two screens read DIFFERENT texts, and the split is the point. Injection screening runs on the
|
|
19
|
+
* SANITIZED text (what the agent would see), so a homoglyph attack — English with Cyrillic lookalikes
|
|
20
|
+
* swapped in to dodge a keyword filter — is judged on its normalized form. The LANGUAGE screen runs
|
|
21
|
+
* on the text as WRITTEN, because normalization erases the script composition it exists to measure:
|
|
22
|
+
* an all-Cyrillic jailbreak Latinizes to a 0.255 Cyrillic share, under the bar, and was delivered
|
|
23
|
+
* (measured live 2026-09-04). One message, two independent questions, two inputs.
|
|
18
24
|
*/
|
|
19
25
|
import { operatorCanRun, noOperatorOverride } from "./affordance.js";
|
|
20
26
|
import { sanitizeInbound } from "../detect/sanitize.js";
|
|
@@ -63,11 +69,17 @@ export class InboundScreener {
|
|
|
63
69
|
reason: n.detail,
|
|
64
70
|
}));
|
|
65
71
|
// The text the agent would actually see — sanitized (confusables normalized, invisibles stripped).
|
|
66
|
-
//
|
|
72
|
+
// The injection scanner judges THIS, not the raw bytes: a confusable-Latin word is Latin here.
|
|
67
73
|
const deliveredText = r.text;
|
|
68
74
|
// IN-003: language allowlist. A message confidently in a non-allowlisted script (default: only
|
|
69
75
|
// Latin/English) is held — a TERMINAL block (the same bytes are the same language on redelivery).
|
|
70
|
-
|
|
76
|
+
//
|
|
77
|
+
// It reads `scriptScanText` — the text as WRITTEN — and NOT `deliveredText`. Handing it the
|
|
78
|
+
// normalized text disarms it completely: confusables rewrites every Cyrillic letter with a Latin
|
|
79
|
+
// lookalike, so the live 2026-09-04 jailbreak arrived 165/165 Cyrillic, reached this line as 123
|
|
80
|
+
// Latin / 42 Cyrillic, and cleared the 0.5 bar it should have failed at. Both texts are correct
|
|
81
|
+
// answers to different questions, and this screen asks the one only the original can answer.
|
|
82
|
+
const lang = screenInboundLanguage(r.scriptScanText, this.#language ?? {});
|
|
71
83
|
if (!lang.allowed) {
|
|
72
84
|
return {
|
|
73
85
|
disposition: "block",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../src/screen/inbound.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"inbound.js","sourceRoot":"","sources":["../../src/screen/inbound.ts"],"names":[],"mappings":"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"}
|