@blamejs/core 0.14.1 → 0.14.3
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 +4 -0
- package/lib/_test/crypto-fixtures.js +3 -3
- package/lib/a2a-tasks.js +18 -18
- package/lib/a2a.js +4 -4
- package/lib/acme.js +3 -3
- package/lib/agent-idempotency.js +1 -1
- package/lib/agent-orchestrator.js +8 -8
- package/lib/agent-posture-chain.js +2 -2
- package/lib/agent-saga.js +1 -1
- package/lib/agent-snapshot.js +1 -1
- package/lib/agent-stream.js +1 -1
- package/lib/agent-tenant.js +1 -1
- package/lib/agent-trace.js +3 -3
- package/lib/ai-capability.js +1 -1
- package/lib/ai-dp.js +4 -4
- package/lib/ai-input.js +3 -3
- package/lib/ai-model-manifest.js +7 -7
- package/lib/ai-pref.js +3 -3
- package/lib/archive-gz.js +2 -2
- package/lib/archive-read.js +25 -25
- package/lib/archive-tar-read.js +2 -2
- package/lib/archive-tar.js +20 -20
- package/lib/archive-wrap.js +10 -10
- package/lib/argon2-builtin.js +1 -1
- package/lib/asn1-der.js +34 -34
- package/lib/atomic-file.js +2 -2
- package/lib/audit-daily-review.js +3 -3
- package/lib/audit-sign.js +5 -5
- package/lib/audit-tools.js +1 -1
- package/lib/audit.js +2 -2
- package/lib/auth/acr-vocabulary.js +2 -2
- package/lib/auth/bot-challenge.js +3 -3
- package/lib/auth/ciba.js +7 -7
- package/lib/auth/dpop.js +3 -3
- package/lib/auth/fido-mds3.js +8 -8
- package/lib/auth/jwt-external.js +5 -5
- package/lib/auth/oauth.js +2 -2
- package/lib/auth/oid4vci.js +9 -9
- package/lib/auth/oid4vp.js +2 -2
- package/lib/auth/openid-federation.js +2 -2
- package/lib/auth/passkey.js +3 -3
- package/lib/auth/saml.js +23 -23
- package/lib/auth/sd-jwt-vc-disclosure.js +1 -1
- package/lib/auth/sd-jwt-vc.js +4 -4
- package/lib/auth/status-list.js +10 -10
- package/lib/auth/step-up.js +1 -1
- package/lib/auth-bot-challenge.js +1 -1
- package/lib/backup/index.js +7 -7
- package/lib/base32.js +8 -8
- package/lib/budr.js +2 -2
- package/lib/cache-status.js +2 -2
- package/lib/calendar.js +23 -23
- package/lib/cbor.js +12 -12
- package/lib/cdn-cache-control.js +1 -1
- package/lib/cert.js +5 -5
- package/lib/cloud-events.js +5 -5
- package/lib/cms-codec.js +21 -21
- package/lib/codepoint-class.js +12 -12
- package/lib/compliance-sanctions-fuzzy.js +4 -4
- package/lib/compliance-sanctions.js +4 -4
- package/lib/compliance.js +29 -29
- package/lib/content-credentials.js +36 -36
- package/lib/cookies.js +1 -1
- package/lib/cose.js +13 -13
- package/lib/cra-report.js +1 -1
- package/lib/crdt.js +1 -1
- package/lib/crypto-field.js +2 -2
- package/lib/crypto-xwing.js +7 -7
- package/lib/crypto.js +6 -6
- package/lib/csp.js +2 -2
- package/lib/cwt.js +4 -4
- package/lib/dark-patterns.js +2 -2
- package/lib/data-act.js +2 -2
- package/lib/db-file-lifecycle.js +4 -4
- package/lib/db-query.js +1 -1
- package/lib/db.js +6 -6
- package/lib/dbsc.js +13 -13
- package/lib/did.js +17 -17
- package/lib/dora.js +4 -4
- package/lib/dsr.js +1 -1
- package/lib/early-hints.js +2 -2
- package/lib/eat.js +4 -4
- package/lib/external-db-migrate.js +1 -1
- package/lib/external-db.js +1 -1
- package/lib/flag-cache.js +1 -1
- package/lib/flag-evaluation-context.js +2 -2
- package/lib/graphql-federation.js +5 -5
- package/lib/guard-agent-registry.js +5 -5
- package/lib/guard-archive.js +24 -24
- package/lib/guard-cidr.js +33 -33
- package/lib/guard-csv.js +1 -1
- package/lib/guard-domain.js +10 -10
- package/lib/guard-dsn.js +4 -4
- package/lib/guard-email.js +19 -19
- package/lib/guard-event-bus-payload.js +4 -4
- package/lib/guard-event-bus-topic.js +6 -6
- package/lib/guard-filename.js +7 -7
- package/lib/guard-graphql.js +9 -9
- package/lib/guard-html-wcag-tagwalk.js +1 -1
- package/lib/guard-html-wcag.js +4 -4
- package/lib/guard-html.js +7 -7
- package/lib/guard-idempotency-key.js +6 -6
- package/lib/guard-image.js +4 -4
- package/lib/guard-imap-command.js +17 -17
- package/lib/guard-jmap.js +20 -20
- package/lib/guard-json.js +12 -12
- package/lib/guard-jsonpath.js +3 -3
- package/lib/guard-jwt.js +4 -4
- package/lib/guard-list-id.js +7 -7
- package/lib/guard-list-unsubscribe.js +8 -8
- package/lib/guard-mail-compose.js +4 -4
- package/lib/guard-mail-move.js +5 -5
- package/lib/guard-mail-query.js +3 -3
- package/lib/guard-mail-reply.js +3 -3
- package/lib/guard-mail-sieve.js +6 -6
- package/lib/guard-managesieve-command.js +25 -25
- package/lib/guard-markdown.js +31 -31
- package/lib/guard-message-id.js +5 -5
- package/lib/guard-mime.js +1 -1
- package/lib/guard-oauth.js +3 -3
- package/lib/guard-pdf.js +6 -6
- package/lib/guard-pop3-command.js +11 -11
- package/lib/guard-posture-chain.js +5 -5
- package/lib/guard-regex.js +10 -10
- package/lib/guard-saga-config.js +5 -5
- package/lib/guard-smtp-command.js +6 -6
- package/lib/guard-snapshot-envelope.js +3 -3
- package/lib/guard-stream-args.js +4 -4
- package/lib/guard-svg.js +11 -11
- package/lib/guard-tenant-id.js +5 -5
- package/lib/guard-time.js +15 -15
- package/lib/guard-trace-context.js +4 -4
- package/lib/guard-uuid.js +11 -11
- package/lib/guard-xml.js +12 -12
- package/lib/guard-yaml.js +16 -16
- package/lib/honeytoken.js +5 -5
- package/lib/http-client.js +1 -1
- package/lib/http-message-signature.js +2 -2
- package/lib/iab-mspa.js +3 -3
- package/lib/iab-tcf.js +70 -70
- package/lib/inbox.js +4 -4
- package/lib/ip-utils.js +15 -15
- package/lib/jose-jwe-experimental.js +2 -2
- package/lib/json-path.js +3 -3
- package/lib/json-schema.js +1 -1
- package/lib/jsonapi.js +3 -3
- package/lib/jtd.js +2 -2
- package/lib/link-header.js +1 -1
- package/lib/local-db-thin.js +1 -1
- package/lib/log.js +1 -1
- package/lib/lro.js +4 -4
- package/lib/mail-agent.js +1 -1
- package/lib/mail-arc-sign.js +6 -6
- package/lib/mail-auth.js +43 -43
- package/lib/mail-bimi.js +3 -3
- package/lib/mail-crypto-pgp.js +31 -31
- package/lib/mail-crypto-smime.js +5 -5
- package/lib/mail-dav.js +1 -1
- package/lib/mail-deploy.js +39 -39
- package/lib/mail-dkim.js +11 -11
- package/lib/mail-greylist.js +12 -12
- package/lib/mail-helo.js +1 -1
- package/lib/mail-journal.js +8 -8
- package/lib/mail-rbl.js +7 -7
- package/lib/mail-scan.js +7 -7
- package/lib/mail-send-deliver.js +2 -2
- package/lib/mail-server-imap.js +12 -12
- package/lib/mail-server-jmap.js +16 -16
- package/lib/mail-server-managesieve.js +4 -4
- package/lib/mail-server-mx.js +17 -17
- package/lib/mail-server-pop3.js +4 -4
- package/lib/mail-server-rate-limit.js +2 -2
- package/lib/mail-server-submission.js +21 -21
- package/lib/mail-sieve.js +2 -2
- package/lib/mail-spam-score.js +5 -5
- package/lib/mail-srs.js +12 -12
- package/lib/mail-store-fts.js +2 -2
- package/lib/mail-store.js +8 -8
- package/lib/mail-unsubscribe.js +4 -4
- package/lib/mail.js +4 -4
- package/lib/mcp-tool-registry.js +4 -4
- package/lib/mcp.js +9 -9
- package/lib/mdoc.js +2 -2
- package/lib/metrics.js +8 -8
- package/lib/middleware/age-gate.js +1 -1
- package/lib/middleware/api-encrypt.js +7 -7
- package/lib/middleware/assetlinks.js +2 -2
- package/lib/middleware/asyncapi-serve.js +2 -2
- package/lib/middleware/bearer-auth.js +5 -5
- package/lib/middleware/body-parser.js +5 -5
- package/lib/middleware/compose-pipeline.js +15 -15
- package/lib/middleware/csp-report.js +4 -4
- package/lib/middleware/daily-byte-quota.js +1 -1
- package/lib/middleware/dpop.js +1 -1
- package/lib/middleware/headers.js +2 -2
- package/lib/middleware/host-allowlist.js +1 -1
- package/lib/middleware/idempotency-key.js +12 -12
- package/lib/middleware/nel.js +1 -1
- package/lib/middleware/openapi-serve.js +2 -2
- package/lib/middleware/protected-resource-metadata.js +2 -2
- package/lib/middleware/require-aal.js +1 -1
- package/lib/middleware/require-bound-key.js +2 -2
- package/lib/middleware/require-content-type.js +1 -1
- package/lib/middleware/require-methods.js +1 -1
- package/lib/middleware/require-step-up.js +2 -2
- package/lib/middleware/scim-server.js +1 -1
- package/lib/middleware/security-txt.js +3 -3
- package/lib/middleware/tus-upload.js +12 -12
- package/lib/middleware/web-app-manifest.js +2 -2
- package/lib/network-byte-quota.js +1 -1
- package/lib/network-dns-resolver.js +23 -23
- package/lib/network-dns.js +29 -29
- package/lib/network-dnssec.js +33 -33
- package/lib/network-smtp-policy.js +10 -10
- package/lib/network-tls.js +87 -87
- package/lib/network-tsig.js +33 -33
- package/lib/nis2-report.js +1 -1
- package/lib/ntp-check.js +3 -3
- package/lib/observability-otlp-exporter.js +17 -17
- package/lib/observability-tracer.js +6 -6
- package/lib/observability.js +8 -8
- package/lib/openapi-yaml.js +1 -1
- package/lib/openapi.js +1 -1
- package/lib/outbox.js +6 -6
- package/lib/pqc-agent.js +4 -4
- package/lib/pqc-software.js +1 -1
- package/lib/privacy-pass.js +5 -5
- package/lib/problem-details.js +5 -5
- package/lib/promise-pool.js +1 -1
- package/lib/protobuf-encoder.js +1 -1
- package/lib/redact.js +2 -2
- package/lib/request-helpers.js +1 -1
- package/lib/router.js +10 -10
- package/lib/safe-async.js +2 -2
- package/lib/safe-dns.js +71 -71
- package/lib/safe-ical.js +19 -19
- package/lib/safe-icap.js +24 -24
- package/lib/safe-jsonpath.js +2 -2
- package/lib/safe-mime.js +10 -10
- package/lib/safe-mount-info.js +3 -3
- package/lib/safe-redirect.js +1 -1
- package/lib/safe-sieve.js +23 -23
- package/lib/safe-smtp.js +1 -1
- package/lib/safe-vcard.js +14 -14
- package/lib/sandbox.js +5 -5
- package/lib/sec-cyber.js +1 -1
- package/lib/self-update-standalone-verifier.js +3 -3
- package/lib/self-update.js +3 -3
- package/lib/server-timing.js +3 -3
- package/lib/session-device-binding.js +7 -7
- package/lib/session.js +8 -8
- package/lib/standard-webhooks.js +4 -4
- package/lib/storage.js +2 -2
- package/lib/stream-throttle.js +1 -1
- package/lib/structured-fields.js +15 -15
- package/lib/subject.js +1 -1
- package/lib/tcpa-10dlc.js +1 -1
- package/lib/tenant-quota.js +3 -3
- package/lib/test-harness.js +1 -1
- package/lib/tracing.js +1 -1
- package/lib/tsa.js +5 -5
- package/lib/uri-template.js +5 -5
- package/lib/vault/index.js +2 -2
- package/lib/vault/seal-pem-file.js +4 -4
- package/lib/vc.js +2 -2
- package/lib/vendor-data.js +1 -1
- package/lib/watcher.js +4 -4
- package/lib/web-push-vapid.js +21 -21
- package/lib/webhook.js +2 -2
- package/lib/websocket.js +3 -3
- package/lib/worker-pool.js +3 -3
- package/lib/ws-client.js +24 -24
- package/lib/xml-c14n.js +2 -2
- package/package.json +1 -1
- package/sbom.cdx.json +6 -6
package/lib/guard-time.js
CHANGED
|
@@ -57,9 +57,9 @@ var _err = GuardTimeError.factory;
|
|
|
57
57
|
// 7: fractional incl. dot (optional) 8: offset (Z or +HH:MM/-HH:MM)
|
|
58
58
|
var RFC3339_RE = /^(\d{4})-(\d{2})-(\d{2})[Tt ](\d{2}):(\d{2}):(\d{2})(\.\d+)?([Zz]|[+-]\d{2}:\d{2})?$/;
|
|
59
59
|
|
|
60
|
-
var DEFAULT_MIN_YEAR = 1970; //
|
|
61
|
-
var DEFAULT_MAX_YEAR = 9999; //
|
|
62
|
-
var MAX_FRACTIONAL_DIGITS = 9; //
|
|
60
|
+
var DEFAULT_MIN_YEAR = 1970; // Unix epoch year
|
|
61
|
+
var DEFAULT_MAX_YEAR = 9999; // RFC 3339 4-digit year ceiling
|
|
62
|
+
var MAX_FRACTIONAL_DIGITS = 9; // nanosecond precision cap
|
|
63
63
|
|
|
64
64
|
// ---- Profile presets ----
|
|
65
65
|
|
|
@@ -206,12 +206,12 @@ function _detectIssues(input, opts) {
|
|
|
206
206
|
return issues;
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
-
var year = parseInt(match[1], 10); //
|
|
210
|
-
var month = parseInt(match[2], 10); //
|
|
211
|
-
var day = parseInt(match[3], 10); //
|
|
212
|
-
var hour = parseInt(match[4], 10); //
|
|
213
|
-
var minute = parseInt(match[5], 10); //
|
|
214
|
-
var second = parseInt(match[6], 10); //
|
|
209
|
+
var year = parseInt(match[1], 10); // base-10 radix
|
|
210
|
+
var month = parseInt(match[2], 10); // base-10 radix
|
|
211
|
+
var day = parseInt(match[3], 10); // base-10 radix
|
|
212
|
+
var hour = parseInt(match[4], 10); // base-10 radix
|
|
213
|
+
var minute = parseInt(match[5], 10); // base-10 radix
|
|
214
|
+
var second = parseInt(match[6], 10); // base-10 radix
|
|
215
215
|
var fractional = match[7] || "";
|
|
216
216
|
var offset = match[8];
|
|
217
217
|
|
|
@@ -226,28 +226,28 @@ function _detectIssues(input, opts) {
|
|
|
226
226
|
}
|
|
227
227
|
|
|
228
228
|
// Month / day / hour / minute structural ranges.
|
|
229
|
-
if (month < 1 || month > 12) { //
|
|
229
|
+
if (month < 1 || month > 12) { // month range
|
|
230
230
|
issues.push({
|
|
231
231
|
kind: "month-range", severity: "high",
|
|
232
232
|
ruleId: "time.month-range",
|
|
233
233
|
snippet: "month " + month + " outside [1, 12]",
|
|
234
234
|
});
|
|
235
235
|
}
|
|
236
|
-
if (day < 1 || day > 31) { //
|
|
236
|
+
if (day < 1 || day > 31) { // day-of-month upper bound
|
|
237
237
|
issues.push({
|
|
238
238
|
kind: "day-range", severity: "high",
|
|
239
239
|
ruleId: "time.day-range",
|
|
240
240
|
snippet: "day " + day + " outside [1, 31]",
|
|
241
241
|
});
|
|
242
242
|
}
|
|
243
|
-
if (hour > 23) { //
|
|
243
|
+
if (hour > 23) { // hour ceiling
|
|
244
244
|
issues.push({
|
|
245
245
|
kind: "hour-range", severity: "high",
|
|
246
246
|
ruleId: "time.hour-range",
|
|
247
247
|
snippet: "hour " + hour + " > 23",
|
|
248
248
|
});
|
|
249
249
|
}
|
|
250
|
-
if (minute > 59) { //
|
|
250
|
+
if (minute > 59) { // minute ceiling
|
|
251
251
|
issues.push({
|
|
252
252
|
kind: "minute-range", severity: "high",
|
|
253
253
|
ruleId: "time.minute-range",
|
|
@@ -277,8 +277,8 @@ function _detectIssues(input, opts) {
|
|
|
277
277
|
// Day-in-month structural sanity (light — not full Gregorian
|
|
278
278
|
// rollover; the framework refuses obviously-out-of-bounds dates
|
|
279
279
|
// like Feb 30 / Apr 31).
|
|
280
|
-
var daysInMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; //
|
|
281
|
-
if (month >= 1 && month <= 12 && day > daysInMonth[month - 1]) { //
|
|
280
|
+
var daysInMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // Gregorian month-day table
|
|
281
|
+
if (month >= 1 && month <= 12 && day > daysInMonth[month - 1]) { // month range
|
|
282
282
|
issues.push({
|
|
283
283
|
kind: "day-in-month", severity: "high",
|
|
284
284
|
ruleId: "time.day-in-month",
|
|
@@ -33,9 +33,9 @@ var GuardTraceContextError = defineClass("GuardTraceContextError", { alwaysPerma
|
|
|
33
33
|
var DEFAULT_PROFILE = "strict";
|
|
34
34
|
|
|
35
35
|
var PROFILES = Object.freeze({
|
|
36
|
-
strict: { allowedVersions: ["00"], maxTracestateEntries: 32, maxTracestateBytes: 512 },
|
|
37
|
-
balanced: { allowedVersions: ["00", "01"], maxTracestateEntries: 32, maxTracestateBytes: 512 },
|
|
38
|
-
permissive: { allowedVersions: ["*"], maxTracestateEntries: 64, maxTracestateBytes: 1024 },
|
|
36
|
+
strict: { allowedVersions: ["00"], maxTracestateEntries: 32, maxTracestateBytes: 512 },
|
|
37
|
+
balanced: { allowedVersions: ["00", "01"], maxTracestateEntries: 32, maxTracestateBytes: 512 },
|
|
38
|
+
permissive: { allowedVersions: ["*"], maxTracestateEntries: 64, maxTracestateBytes: 1024 },
|
|
39
39
|
});
|
|
40
40
|
|
|
41
41
|
var COMPLIANCE_POSTURES = Object.freeze({
|
|
@@ -79,7 +79,7 @@ function validate(ctx, opts) {
|
|
|
79
79
|
}
|
|
80
80
|
// Length bound BEFORE regex test so a hostile input can't burn
|
|
81
81
|
// regex-engine CPU. W3C section 3.2.1: exactly 55 chars.
|
|
82
|
-
if (ctx.traceparent.length !== 55) { //
|
|
82
|
+
if (ctx.traceparent.length !== 55) { // W3C fixed length
|
|
83
83
|
throw new GuardTraceContextError("trace-context/bad-traceparent-length",
|
|
84
84
|
"guardTraceContext.validate: traceparent must be exactly 55 chars (got " +
|
|
85
85
|
ctx.traceparent.length + ")");
|
package/lib/guard-uuid.js
CHANGED
|
@@ -77,7 +77,7 @@ var PROFILES = Object.freeze({
|
|
|
77
77
|
maxPolicy: "reject",
|
|
78
78
|
urnPolicy: "reject",
|
|
79
79
|
bracedPolicy: "reject",
|
|
80
|
-
allowedVersions: [1, 2, 3, 4, 5, 6, 7, 8], //
|
|
80
|
+
allowedVersions: [1, 2, 3, 4, 5, 6, 7, 8], // UUID version digits
|
|
81
81
|
maxBytes: C.BYTES.bytes(64),
|
|
82
82
|
maxRuntimeMs: C.TIME.seconds(2),
|
|
83
83
|
},
|
|
@@ -93,7 +93,7 @@ var PROFILES = Object.freeze({
|
|
|
93
93
|
maxPolicy: "audit",
|
|
94
94
|
urnPolicy: "audit",
|
|
95
95
|
bracedPolicy: "audit",
|
|
96
|
-
allowedVersions: [1, 2, 3, 4, 5, 6, 7, 8], //
|
|
96
|
+
allowedVersions: [1, 2, 3, 4, 5, 6, 7, 8], // UUID version digits
|
|
97
97
|
maxBytes: C.BYTES.bytes(64),
|
|
98
98
|
maxRuntimeMs: C.TIME.seconds(2),
|
|
99
99
|
},
|
|
@@ -155,8 +155,8 @@ function _classifyForm(input) {
|
|
|
155
155
|
function _toCanonicalHex(input, form) {
|
|
156
156
|
// Strips dashes / braces / urn prefix, returns 32-char lowercase hex.
|
|
157
157
|
var s = input.toLowerCase();
|
|
158
|
-
if (form === "urn") s = s.slice("urn:uuid:".length); //
|
|
159
|
-
if (form === "braced") s = s.slice(1, -1); //
|
|
158
|
+
if (form === "urn") s = s.slice("urn:uuid:".length); // string-length offset
|
|
159
|
+
if (form === "braced") s = s.slice(1, -1); // string-length offset
|
|
160
160
|
return s.replace(/-/g, "");
|
|
161
161
|
}
|
|
162
162
|
|
|
@@ -253,8 +253,8 @@ function _detectIssues(input, opts) {
|
|
|
253
253
|
// Version + variant inspection (skip for nil / max — those bypass the
|
|
254
254
|
// version-bits check by definition).
|
|
255
255
|
if (hex !== NIL_HEX && hex !== MAX_HEX) {
|
|
256
|
-
var versionDigit = parseInt(hex.charAt(12), 16); //
|
|
257
|
-
var variantNibble = parseInt(hex.charAt(16), 16); //
|
|
256
|
+
var versionDigit = parseInt(hex.charAt(12), 16); // hex digit position 12
|
|
257
|
+
var variantNibble = parseInt(hex.charAt(16), 16); // hex digit position 16
|
|
258
258
|
|
|
259
259
|
if (opts.versionPolicy !== "allow") {
|
|
260
260
|
var allowed = opts.allowedVersions;
|
|
@@ -274,13 +274,13 @@ function _detectIssues(input, opts) {
|
|
|
274
274
|
if (opts.variantPolicy !== "allow") {
|
|
275
275
|
// RFC 4122 / 9562 variant: high two bits of the variant nibble are
|
|
276
276
|
// 10xx (i.e. nibble in 8/9/a/b).
|
|
277
|
-
var isRfcVariant = (variantNibble & 0xC) === 0x8; //
|
|
277
|
+
var isRfcVariant = (variantNibble & 0xC) === 0x8; // variant-bit mask
|
|
278
278
|
if (!isRfcVariant) {
|
|
279
279
|
issues.push({
|
|
280
280
|
kind: "variant-non-rfc",
|
|
281
281
|
severity: opts.variantPolicy === "reject-non-rfc" ? "high" : "warn",
|
|
282
282
|
ruleId: "uuid.variant-non-rfc",
|
|
283
|
-
snippet: "uuid variant nibble `" + hex.charAt(16) + "` is not " + //
|
|
283
|
+
snippet: "uuid variant nibble `" + hex.charAt(16) + "` is not " + // hex digit position 16
|
|
284
284
|
"the RFC 4122 / 9562 variant (10xx — nibble 8-b)",
|
|
285
285
|
});
|
|
286
286
|
}
|
|
@@ -393,9 +393,9 @@ function sanitize(input, opts) {
|
|
|
393
393
|
var form = _classifyForm(input);
|
|
394
394
|
if (!form) return input;
|
|
395
395
|
var hex = _toCanonicalHex(input, form);
|
|
396
|
-
return hex.slice(0, 8) + "-" + hex.slice(8, 12) + "-" + //
|
|
397
|
-
hex.slice(12, 16) + "-" + hex.slice(16, 20) + "-" + //
|
|
398
|
-
hex.slice(20); //
|
|
396
|
+
return hex.slice(0, 8) + "-" + hex.slice(8, 12) + "-" + // UUID hex slice positions
|
|
397
|
+
hex.slice(12, 16) + "-" + hex.slice(16, 20) + "-" + // UUID hex slice positions
|
|
398
|
+
hex.slice(20); // UUID hex slice positions
|
|
399
399
|
}
|
|
400
400
|
|
|
401
401
|
/**
|
package/lib/guard-xml.js
CHANGED
|
@@ -118,11 +118,11 @@ var PROFILES = Object.freeze({
|
|
|
118
118
|
nullBytePolicy: "reject",
|
|
119
119
|
zeroWidthPolicy: "reject",
|
|
120
120
|
maxBytes: C.BYTES.mib(2),
|
|
121
|
-
maxDepth: 64, //
|
|
122
|
-
maxElements: 8192, //
|
|
123
|
-
maxAttrsPerElement: 64, //
|
|
121
|
+
maxDepth: 64, // recursion depth, not byte size
|
|
122
|
+
maxElements: 8192, // element count cap, not byte size
|
|
123
|
+
maxAttrsPerElement: 64, // attr count, not byte size
|
|
124
124
|
maxAttrValueBytes: C.BYTES.kib(8),
|
|
125
|
-
maxNumericCharRefs: 1024, //
|
|
125
|
+
maxNumericCharRefs: 1024, // NCR fan-out cap (CVE-2026-26278)
|
|
126
126
|
},
|
|
127
127
|
"balanced": {
|
|
128
128
|
doctypePolicy: "reject", // DOCTYPE is XXE vector regardless
|
|
@@ -138,11 +138,11 @@ var PROFILES = Object.freeze({
|
|
|
138
138
|
nullBytePolicy: "strip",
|
|
139
139
|
zeroWidthPolicy: "strip",
|
|
140
140
|
maxBytes: C.BYTES.mib(8),
|
|
141
|
-
maxDepth: 256, //
|
|
142
|
-
maxElements: 65536, //
|
|
143
|
-
maxAttrsPerElement: 128, //
|
|
141
|
+
maxDepth: 256, // recursion depth, not byte size
|
|
142
|
+
maxElements: 65536, // element count cap, not byte size
|
|
143
|
+
maxAttrsPerElement: 128, // attr count, not byte size
|
|
144
144
|
maxAttrValueBytes: C.BYTES.kib(32),
|
|
145
|
-
maxNumericCharRefs: 16384, //
|
|
145
|
+
maxNumericCharRefs: 16384, // NCR fan-out cap (CVE-2026-26278)
|
|
146
146
|
},
|
|
147
147
|
"permissive": {
|
|
148
148
|
doctypePolicy: "reject", // billion-laughs class always
|
|
@@ -158,11 +158,11 @@ var PROFILES = Object.freeze({
|
|
|
158
158
|
nullBytePolicy: "reject",
|
|
159
159
|
zeroWidthPolicy: "strip",
|
|
160
160
|
maxBytes: C.BYTES.mib(64),
|
|
161
|
-
maxDepth: 1024, //
|
|
162
|
-
maxElements: 262144, //
|
|
163
|
-
maxAttrsPerElement: 256, //
|
|
161
|
+
maxDepth: 1024, // recursion depth, not byte size
|
|
162
|
+
maxElements: 262144, // element count cap, not byte size
|
|
163
|
+
maxAttrsPerElement: 256, // attr count, not byte size
|
|
164
164
|
maxAttrValueBytes: C.BYTES.kib(64),
|
|
165
|
-
maxNumericCharRefs: 262144, //
|
|
165
|
+
maxNumericCharRefs: 262144, // NCR fan-out cap (CVE-2026-26278)
|
|
166
166
|
},
|
|
167
167
|
});
|
|
168
168
|
|
package/lib/guard-yaml.js
CHANGED
|
@@ -126,11 +126,11 @@ var PROFILES = Object.freeze({
|
|
|
126
126
|
zeroWidthPolicy: "reject",
|
|
127
127
|
safeCoreTagsAllowed: false,
|
|
128
128
|
maxBytes: C.BYTES.mib(2),
|
|
129
|
-
maxDepth: 8, //
|
|
130
|
-
maxAnchors: 16, //
|
|
131
|
-
maxAliasDepth: 1, //
|
|
132
|
-
maxDocuments: 1, //
|
|
133
|
-
maxNodes: 1024, //
|
|
129
|
+
maxDepth: 8, // recursion depth, not byte size
|
|
130
|
+
maxAnchors: 16, // anchor count cap, not byte size
|
|
131
|
+
maxAliasDepth: 1, // alias chain cap, not byte size
|
|
132
|
+
maxDocuments: 1, // doc count cap, not byte size
|
|
133
|
+
maxNodes: 1024, // node count cap, not byte size
|
|
134
134
|
maxScalarLength: C.BYTES.kib(8),
|
|
135
135
|
},
|
|
136
136
|
"balanced": {
|
|
@@ -147,11 +147,11 @@ var PROFILES = Object.freeze({
|
|
|
147
147
|
zeroWidthPolicy: "strip",
|
|
148
148
|
safeCoreTagsAllowed: true,
|
|
149
149
|
maxBytes: C.BYTES.mib(8),
|
|
150
|
-
maxDepth: 32, //
|
|
151
|
-
maxAnchors: 64, //
|
|
152
|
-
maxAliasDepth: 3, //
|
|
153
|
-
maxDocuments: 16, //
|
|
154
|
-
maxNodes: 16384, //
|
|
150
|
+
maxDepth: 32, // recursion depth, not byte size
|
|
151
|
+
maxAnchors: 64, // anchor count cap, not byte size
|
|
152
|
+
maxAliasDepth: 3, // alias chain cap, not byte size
|
|
153
|
+
maxDocuments: 16, // doc count cap, not byte size
|
|
154
|
+
maxNodes: 16384, // node count cap, not byte size
|
|
155
155
|
maxScalarLength: C.BYTES.kib(64),
|
|
156
156
|
},
|
|
157
157
|
"permissive": {
|
|
@@ -168,11 +168,11 @@ var PROFILES = Object.freeze({
|
|
|
168
168
|
zeroWidthPolicy: "strip",
|
|
169
169
|
safeCoreTagsAllowed: true,
|
|
170
170
|
maxBytes: C.BYTES.mib(64),
|
|
171
|
-
maxDepth: 64, //
|
|
172
|
-
maxAnchors: 1024, //
|
|
173
|
-
maxAliasDepth: 8, //
|
|
174
|
-
maxDocuments: 256, //
|
|
175
|
-
maxNodes: 65536, //
|
|
171
|
+
maxDepth: 64, // recursion depth, not byte size
|
|
172
|
+
maxAnchors: 1024, // anchor count cap, not byte size
|
|
173
|
+
maxAliasDepth: 8, // alias chain cap, not byte size
|
|
174
|
+
maxDocuments: 256, // doc count cap, not byte size
|
|
175
|
+
maxNodes: 65536, // node count cap, not byte size
|
|
176
176
|
maxScalarLength: C.BYTES.kib(256),
|
|
177
177
|
},
|
|
178
178
|
});
|
|
@@ -314,7 +314,7 @@ function _detectIssues(input, opts) {
|
|
|
314
314
|
// is ratio >= 8. Independent of maxAnchors absolute cap (which is
|
|
315
315
|
// about overall load); ratio is about exponential expansion shape.
|
|
316
316
|
var ampRatio = aliases.length / Math.max(anchors.length, 1);
|
|
317
|
-
if (anchors.length >= 1 && ampRatio >= 8) { //
|
|
317
|
+
if (anchors.length >= 1 && ampRatio >= 8) { // multiplier ratio, not byte size
|
|
318
318
|
issues.push({
|
|
319
319
|
kind: "alias-explosion", severity: "critical",
|
|
320
320
|
ruleId: "yaml.alias-explosion",
|
package/lib/honeytoken.js
CHANGED
|
@@ -40,10 +40,10 @@ var audit = lazyRequire(function () { return require("./audit"); });
|
|
|
40
40
|
var HoneytokenError = defineClass("HoneytokenError", { alwaysPermanent: true });
|
|
41
41
|
|
|
42
42
|
var KINDS = Object.freeze({
|
|
43
|
-
apiKey: function () { return "bk_canary_" + bCrypto.generateToken(16); }, //
|
|
44
|
-
session: function () { return "bks_canary_" + bCrypto.generateToken(24); }, //
|
|
45
|
-
url: function () { return "/admin/canary-" + bCrypto.generateToken(16); }, //
|
|
46
|
-
rowId: function () { return "ht_canary_" + bCrypto.generateToken(16); }, //
|
|
43
|
+
apiKey: function () { return "bk_canary_" + bCrypto.generateToken(16); }, // 16-byte (128-bit) canary entropy
|
|
44
|
+
session: function () { return "bks_canary_" + bCrypto.generateToken(24); }, // 24-byte (192-bit) canary entropy
|
|
45
|
+
url: function () { return "/admin/canary-" + bCrypto.generateToken(16); }, // 16-byte canary entropy
|
|
46
|
+
rowId: function () { return "ht_canary_" + bCrypto.generateToken(16); }, // 16-byte canary entropy
|
|
47
47
|
});
|
|
48
48
|
|
|
49
49
|
/**
|
|
@@ -102,7 +102,7 @@ function create(opts) {
|
|
|
102
102
|
"(supported: " + Object.keys(KINDS).join(", ") + ")");
|
|
103
103
|
}
|
|
104
104
|
var value = KINDS[kind]();
|
|
105
|
-
var id = "ht_" + bCrypto.generateToken(8); //
|
|
105
|
+
var id = "ht_" + bCrypto.generateToken(8); // 8-byte registry id
|
|
106
106
|
var record = Object.freeze({
|
|
107
107
|
id: id,
|
|
108
108
|
kind: kind,
|
package/lib/http-client.js
CHANGED
|
@@ -1035,7 +1035,7 @@ function _revalidate(cache, method, opts, entry, requestHeaders) {
|
|
|
1035
1035
|
|
|
1036
1036
|
return p.then(function (boxed) {
|
|
1037
1037
|
var res = boxed.res;
|
|
1038
|
-
if (res.statusCode === 304) { //
|
|
1038
|
+
if (res.statusCode === 304) { // HTTP 304 Not Modified status code, not bytes
|
|
1039
1039
|
// Merge 304 headers into the stored entry.
|
|
1040
1040
|
var refreshed;
|
|
1041
1041
|
try { refreshed = cache._refreshFrom304(entry, res.headers); }
|
|
@@ -91,7 +91,7 @@ function _sfQuotedString(s) {
|
|
|
91
91
|
// information.
|
|
92
92
|
for (var i = 0; i < s.length; i++) {
|
|
93
93
|
var c = s.charCodeAt(i);
|
|
94
|
-
if (c < 0x20 || c > 0x7E) { //
|
|
94
|
+
if (c < 0x20 || c > 0x7E) { // RFC 8941 §3.3.3 printable-ASCII range
|
|
95
95
|
throw _err("BAD_PARAM",
|
|
96
96
|
"httpSig: parameter string contains non-printable byte at offset " + i);
|
|
97
97
|
}
|
|
@@ -539,7 +539,7 @@ function verify(msg, opts) {
|
|
|
539
539
|
var sigB64;
|
|
540
540
|
try { sigB64 = _parseSignature(sig, parsedInput.label); }
|
|
541
541
|
catch (e) { return { valid: false, reason: "bad-signature-header", error: e.message }; }
|
|
542
|
-
if (!safeBuffer.BASE64URL_RE && typeof sigB64 !== "string") { //
|
|
542
|
+
if (!safeBuffer.BASE64URL_RE && typeof sigB64 !== "string") { // defensive base64 shape check
|
|
543
543
|
return { valid: false, reason: "bad-signature-encoding" };
|
|
544
544
|
}
|
|
545
545
|
var sigBuf;
|
package/lib/iab-mspa.js
CHANGED
|
@@ -35,7 +35,7 @@ var IabMspaError = defineClass("IabMspaError", { alwaysPermanent: true });
|
|
|
35
35
|
// https://iabtechlab.com/standards/global-privacy-platform/sections).
|
|
36
36
|
var SECTION_IDS = {
|
|
37
37
|
7: "usnat", // US National Privacy
|
|
38
|
-
8: "usca", // California (CCPA / CPRA) //
|
|
38
|
+
8: "usca", // California (CCPA / CPRA) // IAB GPP section ID, not bytes
|
|
39
39
|
9: "usva", // Virginia
|
|
40
40
|
10: "usco", // Colorado
|
|
41
41
|
11: "usut", // Utah
|
|
@@ -43,7 +43,7 @@ var SECTION_IDS = {
|
|
|
43
43
|
13: "usnv", // Nevada
|
|
44
44
|
14: "usia", // Iowa
|
|
45
45
|
15: "usde", // Delaware
|
|
46
|
-
16: "usnj", // New Jersey //
|
|
46
|
+
16: "usnj", // New Jersey // IAB GPP section ID, not bytes
|
|
47
47
|
17: "ustx", // Texas (TDPSA)
|
|
48
48
|
18: "usor", // Oregon
|
|
49
49
|
19: "usmt", // Montana
|
|
@@ -77,7 +77,7 @@ function parseGpp(gppString) {
|
|
|
77
77
|
throw IabMspaError.factory("iab-mspa/bad-input",
|
|
78
78
|
"iabMspa.parseGpp: gppString required");
|
|
79
79
|
}
|
|
80
|
-
if (gppString.length > 8192) { //
|
|
80
|
+
if (gppString.length > 8192) { // GPP string cap, not bytes
|
|
81
81
|
throw IabMspaError.factory("iab-mspa/input-too-large",
|
|
82
82
|
"iabMspa.parseGpp: gppString exceeds 8192 chars");
|
|
83
83
|
}
|