@blamejs/core 0.17.11 → 0.17.12
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 +2 -0
- package/NOTICE +1 -1
- package/lib/vendor/MANIFEST.json +11 -11
- package/lib/vendor/public-suffix-list.dat +7 -36
- package/lib/vendor/public-suffix-list.data.js +5439 -5453
- package/package.json +1 -1
- package/sbom.cdx.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,8 @@ upgrading across more than a few patches at a time.
|
|
|
8
8
|
|
|
9
9
|
## v0.17.x
|
|
10
10
|
|
|
11
|
+
- v0.17.12 (2026-07-22) — **The vendored Public Suffix List is refreshed to the current upstream snapshot.** The vendored Mozilla Public Suffix List is updated to the current upstream build, so organizational-domain derivation for DMARC identifier alignment, BIMI issuer scoping, cookie-scope confinement, and same-site policy reflects the current registry delegations. The data module is regenerated and re-signed across all four integrity layers, the manifest hashes are refreshed, and the NOTICE attribution date is updated. **Security:** *Public Suffix List refreshed to the current upstream snapshot* — The vendored Mozilla Public Suffix List is updated to the current upstream snapshot, so organizational-domain derivation reflects the current registry delegations everywhere the framework draws a registrable-domain boundary -- DMARC identifier alignment, BIMI issuer scoping, cookie-scope confinement, and same-site policy. The precise upstream commit and version are recorded in the signed data file and the vendor manifest. The .data.js carrier is regenerated and re-signed across all four integrity layers (SHA-256 + SHA3-512 + SLH-DSA-SHAKE-256f signature + in-payload canary), the manifest hashes are refreshed, and the NOTICE attribution date is updated.
|
|
12
|
+
|
|
11
13
|
- v0.17.11 (2026-07-17) — **The DER decoder rejects a non-minimal length encoding, and the OAuth client-attestation verifier pins the JWT type so a JWT minted for another purpose can't be replayed into the attestation slot.** The shared ASN.1 DER decoder accepted a non-minimal long-form length encoding (a long form used for a value that fits the short form, or a length carrying a leading-zero octet), a BER/DER parser-differential an attacker could use to smuggle an alternate encoding of a certificate, CMS structure, or OCSP response past the strict decoder. And the OAuth client-attestation verifier did not pin the JOSE type header of the attestation and proof-of-possession JWTs, so a JWT minted for another purpose but signed by the same key could be replayed into the attestation slot. **Security:** *DER decoder rejects a non-minimal length encoding* — b.asn1Der is the shared DER reader every certificate, CMS, and OCSP parse in the framework routes through. X.690 §10.1 requires the minimum number of length octets: the long form may be used only for lengths of 128 or more, and must carry no leading-zero octet. The decoder accepted both non-minimal forms -- a long-form length for a value that fits the short form, and a long-form length with a leading zero -- which is a BER/DER parser-differential an attacker can use to encode the same structure two ways and slip an alternate encoding past a strict verifier that canonicalizes differently. The decoder already refused every other BER-ism it encounters (indefinite-length, non-minimal OID sub-identifiers, non-minimal high-tag-number tags); it now also refuses a non-minimal length, closing the remaining differential. · *OAuth client-attestation verifier pins the JWT type* — b.auth.oauth's attestation-based client authentication (draft-ietf-oauth-attestation-based-client-auth) verifies two JWTs -- the client-attestation JWT and its proof-of-possession JWT -- each of which carries a REQUIRED, distinct JOSE type header (oauth-client-attestation+jwt and oauth-client-attestation-pop+jwt). The verifier checked the signature and claims but not the type header, so a JWT minted for a different purpose but signed by the same key -- a private_key_jwt client assertion, or the other proof-of-possession JWT -- could be replayed into the attestation or PoP slot (the cross-JWT confused-deputy class RFC 8725 §3.11 explicit typing defends against). The verifier now pins the expected type for each slot, and the builders emit the same literals so a produced and a checked type can never drift; the framework's DPoP and back-channel-logout JWT verifiers already pin their type, and the attestation verifier now matches.
|
|
12
14
|
|
|
13
15
|
- v0.17.10 (2026-07-17) — **A CIDR-scoped SMTP relay allowlist is now actually enforced instead of relaying for the whole internet, EU AI-Act social scoring is flagged prohibited for any actor rather than only public authorities, and the X-Wing hybrid KEM stays uniform implicit-rejection on a low-order X25519 point.** The mail server's relay authorization discarded its arguments and returned allowed for every connecting peer whenever an operator configured any relayAllowedFor entry, so a per-CIDR relay allowlist -- intended to scope relay to registered sources -- turned the server into an open relay for the entire internet. The EU AI-Act prohibited-practice classifier gated social scoring on the deployer being a public authority, a limitation that was in the 2021 Commission proposal but dropped from the adopted Regulation (EU) 2024/1689, so a private-actor social-scoring system was under-classified as not-prohibited. The GDPR record-of-processing updater validated a legal-basis change with a truthiness guard, so a falsy-but-invalid value skipped the enum check and could corrupt a required Article 30 field. And the X-Wing hybrid post-quantum KEM threw a raw derivation error on a low-order X25519 point instead of the uniform implicit-rejection its contract and the draft specification require, exposing a decapsulation-oracle distinguisher and a crash for any consumer following the documented no-try/catch advice. **Security:** *SMTP relay allowlist enforces its per-entry CIDR instead of relaying for everyone* — b.mail.server.mx accepts a relayAllowedFor allowlist of { cidr, scope } entries, documented as scoping relay to registered source ranges over the default MX-only, no-relay posture. The relay-authorization check discarded both the peer address and recipient and simply returned allowed whenever the allowlist was non-empty, so an operator restricting relay to, for example, 10.0.0.0/8 actually granted relay to every peer on the internet -- an open relay, directly contradicting the module's advertised open-relay defense. The check now admits relay only when the connecting peer's source address falls inside one of the allowlisted ranges (using the same range arithmetic the HTTP network-allowlist fence uses); a peer outside every range is refused. Each relayAllowedFor entry's cidr is now validated at startup -- a mask is required so a bare IP cannot silently disable an entry, private and reserved ranges are allowed since relay allowlists legitimately name them, and a malformed entry throws at boot rather than mis-scoping relay. · *AI-Act classifier flags social scoring by any actor as prohibited* — b.compliance.aiAct's prohibited-practice classifier implements EU AI-Act Article 5. Its social-scoring gate (Art. 5(1)(c)) required both the purpose to be social scoring and the deployer to be a public authority before flagging the practice as prohibited. The "by public authorities or on their behalf" limitation existed in the 2021 Commission proposal but was removed from the adopted Regulation (EU) 2024/1689, which prohibits social scoring by any actor. A private-actor social-scoring system was therefore under-classified as not-prohibited. The classifier now flags social scoring on the purpose alone, matching the adopted text; the other Article 5 gates (predictive policing based solely on profiling, untargeted facial-recognition scraping, emotion inference in the workplace/education outside medical/safety uses) correctly retain the conjuncts that are part of their statutory definitions rather than over-broad limitations. · *GDPR record-of-processing rejects a falsy-but-invalid legal basis on update* — b.gdpr.ropa records the Article 30 register of processing activities, whose legalBasis field is constrained to the six Article 6(1) bases. register validates the basis against the allowlist, but update validated a legal-basis change with a truthiness guard, so a falsy-but-invalid value (an empty string, and similar) short-circuited past the enum check and was written into the record -- silently corrupting a required Article 30 field. The updater now validates whenever the patch touches legalBasis, keyed on the field being present rather than truthy, so an invalid value is rejected with the same rigor register applies and a genuine change to a valid basis still succeeds. · *X-Wing hybrid KEM stays uniform implicit-rejection on a low-order X25519 point* — b.crypto.xwing implements the X-Wing hybrid post-quantum KEM (ML-KEM-768 combined with X25519), whose contract and the draft-connolly-cfrg-xwing-kem specification require decapsulation to be uniform implicit-rejection: a tampered ciphertext yields a different secret, never an error, so a consumer must not branch on success. But a hostile low-order X25519 point in the ciphertext (or in the recipient's X25519 public half) drove the X25519 derivation to an all-zero shared secret, which the underlying library aborts with a raw derivation error rather than returning the value RFC 7748 X25519 (without the optional abort) yields. That exposed a decapsulation-oracle distinguisher (a low-order point throws while every other ciphertext returns a secret) and a crash for any caller following the documented advice not to wrap decapsulation in a try/catch. The shared X25519 step now translates that abort back into the all-zero shared secret, restoring uniform implicit-rejection; the combiner still binds the X25519 ciphertext and public key and the ML-KEM-768 leg still protects the result, so the hybrid's secure-if-either-holds guarantee is unchanged.
|
package/NOTICE
CHANGED
|
@@ -90,7 +90,7 @@ Used for: Top-10000 most-common (breach-derived) passwords. Loaded by
|
|
|
90
90
|
baseline.
|
|
91
91
|
--------------------------------------------------------------------------------
|
|
92
92
|
Component: publicsuffix-list (Mozilla Public Suffix List)
|
|
93
|
-
Version: master snapshot (bundled 2026-07-
|
|
93
|
+
Version: master snapshot (bundled 2026-07-22)
|
|
94
94
|
Source: https://publicsuffix.org/list/public_suffix_list.dat
|
|
95
95
|
License: MPL-2.0
|
|
96
96
|
Copyright: Copyright (c) Mozilla Foundation and Public Suffix List contributors
|
package/lib/vendor/MANIFEST.json
CHANGED
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"hashes": {
|
|
19
19
|
"server": "sha256:2b30a26f728c5349f4c4b47834f862a4f77393b1224fc12b22abe3ce2cfab78f"
|
|
20
20
|
},
|
|
21
|
-
"refreshedAt": "2026-07-
|
|
21
|
+
"refreshedAt": "2026-07-23T03:16:00.999Z"
|
|
22
22
|
},
|
|
23
23
|
"@noble/curves": {
|
|
24
24
|
"version": "2.2.0",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"hashes": {
|
|
41
41
|
"server": "sha256:2880c288b1285ef51d356d057bee6f0c8a00de36638cf47b47617e8c1faf10d5"
|
|
42
42
|
},
|
|
43
|
-
"refreshedAt": "2026-07-
|
|
43
|
+
"refreshedAt": "2026-07-23T03:16:00.999Z"
|
|
44
44
|
},
|
|
45
45
|
"@noble/post-quantum": {
|
|
46
46
|
"version": "0.6.1",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"hashes": {
|
|
72
72
|
"server": "sha256:f9c94094b3c10fe73dac5343289da582454ea6053494fab2bf66099d9103d6c3"
|
|
73
73
|
},
|
|
74
|
-
"refreshedAt": "2026-07-
|
|
74
|
+
"refreshedAt": "2026-07-23T03:16:00.999Z"
|
|
75
75
|
},
|
|
76
76
|
"@simplewebauthn/server": {
|
|
77
77
|
"version": "13.3.2",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"hashes": {
|
|
95
95
|
"server": "sha256:e83195dc9f189385da9c856ef38843f4466f93ea8f3d7fc2efcb1e1b18da6f20"
|
|
96
96
|
},
|
|
97
|
-
"refreshedAt": "2026-07-
|
|
97
|
+
"refreshedAt": "2026-07-23T03:16:00.999Z"
|
|
98
98
|
},
|
|
99
99
|
"SecLists-common-passwords-top-10000": {
|
|
100
100
|
"version": "10k-most-common (master)",
|
|
@@ -114,7 +114,7 @@
|
|
|
114
114
|
},
|
|
115
115
|
"runtime_artifact": "lib/vendor/common-passwords-top-10000.data.js",
|
|
116
116
|
"integrity_layers": "sha256 + sha3-512 + SLH-DSA-SHAKE-256f signature + in-payload canary (where applicable)",
|
|
117
|
-
"refreshedAt": "2026-07-
|
|
117
|
+
"refreshedAt": "2026-07-23T03:16:00.999Z"
|
|
118
118
|
},
|
|
119
119
|
"bimi-trust-anchors": {
|
|
120
120
|
"version": "operator-managed",
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
},
|
|
140
140
|
"runtime_artifact": "lib/vendor/bimi-trust-anchors.data.js",
|
|
141
141
|
"integrity_layers": "sha256 + sha3-512 + SLH-DSA-SHAKE-256f signature + in-payload canary (where applicable)",
|
|
142
|
-
"refreshedAt": "2026-07-
|
|
142
|
+
"refreshedAt": "2026-07-23T03:16:00.999Z"
|
|
143
143
|
},
|
|
144
144
|
"publicsuffix-list": {
|
|
145
145
|
"version": "master",
|
|
@@ -152,14 +152,14 @@
|
|
|
152
152
|
"data_js": "lib/vendor/public-suffix-list.data.js"
|
|
153
153
|
},
|
|
154
154
|
"bundler": "curl https://publicsuffix.org/list/public_suffix_list.dat",
|
|
155
|
-
"bundledAt": "2026-07-
|
|
155
|
+
"bundledAt": "2026-07-22T00:00:00Z",
|
|
156
156
|
"hashes": {
|
|
157
|
-
"server": "sha256:
|
|
158
|
-
"data_js": "sha256:
|
|
157
|
+
"server": "sha256:239445596e15e13c345bab8f5118a617ae3e61e4e1df437728c14cbf4aaef716",
|
|
158
|
+
"data_js": "sha256:0742bf237375961822070329cda24c866afd3c711262fafa748a40443ec18a6e"
|
|
159
159
|
},
|
|
160
160
|
"runtime_artifact": "lib/vendor/public-suffix-list.data.js",
|
|
161
161
|
"integrity_layers": "sha256 + sha3-512 + SLH-DSA-SHAKE-256f signature + in-payload canary (where applicable)",
|
|
162
|
-
"refreshedAt": "2026-07-
|
|
162
|
+
"refreshedAt": "2026-07-23T03:16:00.999Z"
|
|
163
163
|
},
|
|
164
164
|
"peculiar-pki": {
|
|
165
165
|
"version": "2.0.0+pkijs-3.4.0",
|
|
@@ -190,7 +190,7 @@
|
|
|
190
190
|
"hashes": {
|
|
191
191
|
"server": "sha256:2307ef65e070757ffb13442b377e45efb9fa1a10432d9b39618387720ab990ed"
|
|
192
192
|
},
|
|
193
|
-
"refreshedAt": "2026-07-
|
|
193
|
+
"refreshedAt": "2026-07-23T03:16:00.999Z"
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
}
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
// Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat,
|
|
6
6
|
// rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported.
|
|
7
7
|
|
|
8
|
-
// VERSION: 2026-07-
|
|
9
|
-
// COMMIT:
|
|
8
|
+
// VERSION: 2026-07-22_17-32-17_UTC
|
|
9
|
+
// COMMIT: 8ab4253fd2cbaf4c411bd7ccea56bff0db0e82cf
|
|
10
10
|
|
|
11
11
|
// Instructions on pulling and using this list can be found at https://publicsuffix.org/list/.
|
|
12
12
|
|
|
@@ -1631,7 +1631,6 @@ trentin-sudtirol.it
|
|
|
1631
1631
|
trentin-südtirol.it
|
|
1632
1632
|
trentin-sued-tirol.it
|
|
1633
1633
|
trentin-suedtirol.it
|
|
1634
|
-
trentino.it
|
|
1635
1634
|
trentino-a-adige.it
|
|
1636
1635
|
trentino-aadige.it
|
|
1637
1636
|
trentino-alto-adige.it
|
|
@@ -1652,7 +1651,6 @@ trentinos-tirol.it
|
|
|
1652
1651
|
trentinostirol.it
|
|
1653
1652
|
trentinosud-tirol.it
|
|
1654
1653
|
trentinosüd-tirol.it
|
|
1655
|
-
trentinosudtirol.it
|
|
1656
1654
|
trentinosüdtirol.it
|
|
1657
1655
|
trentinosued-tirol.it
|
|
1658
1656
|
trentinosuedtirol.it
|
|
@@ -1668,7 +1666,6 @@ umbria.it
|
|
|
1668
1666
|
val-d-aosta.it
|
|
1669
1667
|
val-daosta.it
|
|
1670
1668
|
vald-aosta.it
|
|
1671
|
-
valdaosta.it
|
|
1672
1669
|
valle-aosta.it
|
|
1673
1670
|
valle-d-aosta.it
|
|
1674
1671
|
valle-daosta.it
|
|
@@ -1705,7 +1702,6 @@ aosta.it
|
|
|
1705
1702
|
aoste.it
|
|
1706
1703
|
ap.it
|
|
1707
1704
|
aq.it
|
|
1708
|
-
aquila.it
|
|
1709
1705
|
ar.it
|
|
1710
1706
|
arezzo.it
|
|
1711
1707
|
ascoli-piceno.it
|
|
@@ -1929,6 +1925,9 @@ sondrio.it
|
|
|
1929
1925
|
sp.it
|
|
1930
1926
|
sr.it
|
|
1931
1927
|
ss.it
|
|
1928
|
+
su.it
|
|
1929
|
+
sud-sardegna.it
|
|
1930
|
+
sudsardegna.it
|
|
1932
1931
|
südtirol.it
|
|
1933
1932
|
suedtirol.it
|
|
1934
1933
|
sv.it
|
|
@@ -1949,6 +1948,7 @@ trani-barletta-andria.it
|
|
|
1949
1948
|
traniandriabarletta.it
|
|
1950
1949
|
tranibarlettaandria.it
|
|
1951
1950
|
trapani.it
|
|
1951
|
+
trentino.it
|
|
1952
1952
|
trento.it
|
|
1953
1953
|
treviso.it
|
|
1954
1954
|
trieste.it
|
|
@@ -1967,6 +1967,7 @@ ve.it
|
|
|
1967
1967
|
venezia.it
|
|
1968
1968
|
venice.it
|
|
1969
1969
|
verbania.it
|
|
1970
|
+
verbano-cusio-ossola.it
|
|
1970
1971
|
vercelli.it
|
|
1971
1972
|
verona.it
|
|
1972
1973
|
vi.it
|
|
@@ -12576,12 +12577,6 @@ bubbleapps.io
|
|
|
12576
12577
|
// Submitted by Klara Mall <dns@bwcloud-os.de>
|
|
12577
12578
|
*.bwcloud-os-instance.de
|
|
12578
12579
|
|
|
12579
|
-
// Bytemark Hosting : https://www.bytemark.co.uk
|
|
12580
|
-
// Submitted by Paul Cammish <paul.cammish@bytemark.co.uk>
|
|
12581
|
-
uk0.bigv.io
|
|
12582
|
-
dh.bytemark.co.uk
|
|
12583
|
-
vm.bytemark.co.uk
|
|
12584
|
-
|
|
12585
12580
|
// Caf.js Labs LLC : https://www.cafjs.com
|
|
12586
12581
|
// Submitted by Antonio Lain <antlai@cafjs.com>
|
|
12587
12582
|
cafjs.com
|
|
@@ -12841,10 +12836,6 @@ craft.me
|
|
|
12841
12836
|
// Submitted by Ales Krajnik <ales.krajnik@craynic.com>
|
|
12842
12837
|
realm.cz
|
|
12843
12838
|
|
|
12844
|
-
// Cryptonomic : https://cryptonomic.net/
|
|
12845
|
-
// Submitted by Andrew Cady <public-suffix-list@cryptonomic.net>
|
|
12846
|
-
*.cryptonomic.net
|
|
12847
|
-
|
|
12848
12839
|
// cyber_Folks S.A. : https://cyberfolks.pl
|
|
12849
12840
|
// Submitted by Bartlomiej Kida <security@cyberfolks.pl>
|
|
12850
12841
|
cfolks.pl
|
|
@@ -13511,10 +13502,6 @@ on.expo.app
|
|
|
13511
13502
|
staging.expo.app
|
|
13512
13503
|
on.staging.expo.app
|
|
13513
13504
|
|
|
13514
|
-
// Fabrica Technologies, Inc. : https://www.fabrica.dev/
|
|
13515
|
-
// Submitted by Eric Jiang <eric@fabrica.dev>
|
|
13516
|
-
onfabrica.com
|
|
13517
|
-
|
|
13518
13505
|
// fachschaften.org: https://fachschaften.org/
|
|
13519
13506
|
// Submitted by Felix Schäfer <security@fachschaften.org>
|
|
13520
13507
|
fspages.org
|
|
@@ -15267,10 +15254,6 @@ vki.kr
|
|
|
15267
15254
|
// Submitted by yumenewa <admin@project-study.com>
|
|
15268
15255
|
dev.project-study.com
|
|
15269
15256
|
|
|
15270
|
-
// Protonet GmbH : http://protonet.io
|
|
15271
|
-
// Submitted by Martin Meier <admin@protonet.io>
|
|
15272
|
-
protonet.io
|
|
15273
|
-
|
|
15274
15257
|
// PSL Sandbox : https://github.com/groundcat/PSL-Sandbox
|
|
15275
15258
|
// Submitted by groundcat <psl-sandbox@alumni.upenn.edu>
|
|
15276
15259
|
platter-app.dev
|
|
@@ -15452,10 +15435,6 @@ repl.run
|
|
|
15452
15435
|
resindevice.io
|
|
15453
15436
|
devices.resinstaging.io
|
|
15454
15437
|
|
|
15455
|
-
// RethinkDB : https://www.rethinkdb.com/
|
|
15456
|
-
// Submitted by Chris Kastorff <info@rethinkdb.com>
|
|
15457
|
-
hzc.io
|
|
15458
|
-
|
|
15459
15438
|
// Rico Developments Limited : https://adimo.co
|
|
15460
15439
|
// Submitted by Colin Brown <hello@adimo.co>
|
|
15461
15440
|
adimo.co.uk
|
|
@@ -15878,10 +15857,6 @@ indevs.in
|
|
|
15878
15857
|
musician.io
|
|
15879
15858
|
novecore.site
|
|
15880
15859
|
|
|
15881
|
-
// Standard Library : https://stdlib.com
|
|
15882
|
-
// Submitted by Jacob Lee <jacob@stdlib.com>
|
|
15883
|
-
api.stdlib.com
|
|
15884
|
-
|
|
15885
15860
|
// statichost.eu : https://www.statichost.eu
|
|
15886
15861
|
// Submitted by Eric Selin <admin@statichost.eu>
|
|
15887
15862
|
statichost.page
|
|
@@ -15908,10 +15883,6 @@ ipfs.w3s.link
|
|
|
15908
15883
|
// Submitted by Tony Schirmer <tony@storebase.io>
|
|
15909
15884
|
storebase.store
|
|
15910
15885
|
|
|
15911
|
-
// Storj Labs Inc. : https://storj.io/
|
|
15912
|
-
// Submitted by Philip Hutchins <hostmaster@storj.io>
|
|
15913
|
-
storj.farm
|
|
15914
|
-
|
|
15915
15886
|
// Strapi : https://strapi.io/
|
|
15916
15887
|
// Submitted by Florent Baldino <security@strapi.io>
|
|
15917
15888
|
strapiapp.com
|