@prosopo/provider 5.19.2 → 5.19.4

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.
Files changed (59) hide show
  1. package/.turbo/turbo-build$colon$cjs.log +10 -9
  2. package/.turbo/turbo-build$colon$tsc.log +28 -28
  3. package/.turbo/turbo-build.log +10 -9
  4. package/CHANGELOG.md +75 -0
  5. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.d.ts.map +1 -1
  6. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js +79 -23
  7. package/dist/api/captcha/getFrictionlessCaptchaChallenge/handler.js.map +1 -1
  8. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts +3 -0
  9. package/dist/api/captcha/getPuzzleCaptchaChallenge.d.ts.map +1 -1
  10. package/dist/api/captcha/getPuzzleCaptchaChallenge.js +23 -5
  11. package/dist/api/captcha/getPuzzleCaptchaChallenge.js.map +1 -1
  12. package/dist/api/captcha/submitPoWCaptchaSolution.d.ts.map +1 -1
  13. package/dist/api/captcha/submitPoWCaptchaSolution.js +12 -2
  14. package/dist/api/captcha/submitPoWCaptchaSolution.js.map +1 -1
  15. package/dist/cjs/api/captcha/getFrictionlessCaptchaChallenge/handler.cjs +79 -23
  16. package/dist/cjs/api/captcha/getPuzzleCaptchaChallenge.cjs +22 -3
  17. package/dist/cjs/api/captcha/submitPoWCaptchaSolution.cjs +12 -2
  18. package/dist/cjs/tasks/frictionless/frictionlessTasks.cjs +8 -5
  19. package/dist/cjs/tasks/frictionless/ipMatch.cjs +25 -4
  20. package/dist/cjs/tasks/puzzle/puzzleRenderer.cjs +17 -8
  21. package/dist/cjs/utils/devicePlatform.cjs +9 -5
  22. package/dist/cjs/utils/mobileSignals.cjs +69 -0
  23. package/dist/tasks/frictionless/frictionlessTasks.d.ts +1 -1
  24. package/dist/tasks/frictionless/frictionlessTasks.d.ts.map +1 -1
  25. package/dist/tasks/frictionless/frictionlessTasks.js +9 -6
  26. package/dist/tasks/frictionless/frictionlessTasks.js.map +1 -1
  27. package/dist/tasks/frictionless/ipMatch.d.ts +1 -1
  28. package/dist/tasks/frictionless/ipMatch.d.ts.map +1 -1
  29. package/dist/tasks/frictionless/ipMatch.js +25 -4
  30. package/dist/tasks/frictionless/ipMatch.js.map +1 -1
  31. package/dist/tasks/puzzle/puzzleRenderer.d.ts +8 -1
  32. package/dist/tasks/puzzle/puzzleRenderer.d.ts.map +1 -1
  33. package/dist/tasks/puzzle/puzzleRenderer.js +16 -8
  34. package/dist/tasks/puzzle/puzzleRenderer.js.map +1 -1
  35. package/dist/tests/integration/webBotAuthAuthenticated.integration.test.js +103 -5
  36. package/dist/tests/integration/webBotAuthAuthenticated.integration.test.js.map +1 -1
  37. package/dist/tests/unit/api/captcha/puzzleTouchFloors.unit.test.d.ts +2 -0
  38. package/dist/tests/unit/api/captcha/puzzleTouchFloors.unit.test.d.ts.map +1 -0
  39. package/dist/tests/unit/api/captcha/puzzleTouchFloors.unit.test.js +210 -0
  40. package/dist/tests/unit/api/captcha/puzzleTouchFloors.unit.test.js.map +1 -0
  41. package/dist/tests/unit/tasks/frictionless/ipMatch.unit.test.js +18 -0
  42. package/dist/tests/unit/tasks/frictionless/ipMatch.unit.test.js.map +1 -1
  43. package/dist/tests/unit/tasks/frictionless/routerPuzzleOverrides.unit.test.js +18 -0
  44. package/dist/tests/unit/tasks/frictionless/routerPuzzleOverrides.unit.test.js.map +1 -1
  45. package/dist/tests/unit/utils/devicePlatform.unit.test.js +9 -8
  46. package/dist/tests/unit/utils/devicePlatform.unit.test.js.map +1 -1
  47. package/dist/tests/unit/utils/mobileSignals.unit.test.d.ts +2 -0
  48. package/dist/tests/unit/utils/mobileSignals.unit.test.d.ts.map +1 -0
  49. package/dist/tests/unit/utils/mobileSignals.unit.test.js +161 -0
  50. package/dist/tests/unit/utils/mobileSignals.unit.test.js.map +1 -0
  51. package/dist/utils/devicePlatform.d.ts +3 -3
  52. package/dist/utils/devicePlatform.d.ts.map +1 -1
  53. package/dist/utils/devicePlatform.js +9 -5
  54. package/dist/utils/devicePlatform.js.map +1 -1
  55. package/dist/utils/mobileSignals.d.ts +32 -0
  56. package/dist/utils/mobileSignals.d.ts.map +1 -0
  57. package/dist/utils/mobileSignals.js +68 -0
  58. package/dist/utils/mobileSignals.js.map +1 -0
  59. package/package.json +17 -17
@@ -46,13 +46,9 @@ var resolvePuzzleRenderSettings = (...overrides) => {
46
46
  var pieceSizeSampler = require_stratifiedSampler.createStratifiedSampler();
47
47
  /**
48
48
  * Resolve the effective piece scale range from the same layered
49
- * client-settings / traffic-filter overrides used for render settings, and
50
- * draw a per-challenge piece size in pixels. Stratified so the distribution
51
- * is evenly spread across the range even for short bursts of requests.
52
- * Rounded to an integer because the pixel buffer is allocated as
53
- * `size * size * 4`.
49
+ * client-settings / traffic-filter overrides used for render settings.
54
50
  */
55
- var resolvePuzzlePieceSize = (...overrides) => {
51
+ var resolvePuzzlePieceScaleRange = (...overrides) => {
56
52
  let min = _prosopo_types.puzzlePieceScaleMinDefault;
57
53
  let max = _prosopo_types.puzzlePieceScaleMaxDefault;
58
54
  for (const override of overrides) {
@@ -61,7 +57,19 @@ var resolvePuzzlePieceSize = (...overrides) => {
61
57
  if (override.pieceScale.max !== void 0) max = override.pieceScale.max;
62
58
  }
63
59
  if (min > max) min = max;
64
- const scale = pieceSizeSampler.sample(min, max);
60
+ return {
61
+ min,
62
+ max
63
+ };
64
+ };
65
+ /**
66
+ * Draw a per-challenge piece size in pixels from a scale range. Stratified so
67
+ * the distribution is evenly spread across the range even for short bursts of
68
+ * requests. Rounded to an integer because the pixel buffer is allocated as
69
+ * `size * size * 4`.
70
+ */
71
+ var samplePuzzlePieceSize = (range) => {
72
+ const scale = pieceSizeSampler.sample(range.min, range.max);
65
73
  return Math.max(1, Math.round(_prosopo_puzzle_assets.DEFAULT_GEOMETRY.width * scale));
66
74
  };
67
75
  /**
@@ -94,5 +102,6 @@ var renderPuzzleImages = async (placement, settings = _prosopo_puzzle_assets.DEF
94
102
  //#endregion
95
103
  exports.isPuzzleRenderAvailable = isPuzzleRenderAvailable;
96
104
  exports.renderPuzzleImages = renderPuzzleImages;
97
- exports.resolvePuzzlePieceSize = resolvePuzzlePieceSize;
105
+ exports.resolvePuzzlePieceScaleRange = resolvePuzzlePieceScaleRange;
98
106
  exports.resolvePuzzleRenderSettings = resolvePuzzleRenderSettings;
107
+ exports.samplePuzzlePieceSize = samplePuzzlePieceSize;
@@ -1,16 +1,20 @@
1
+ const require_mobileSignals = require("./mobileSignals.cjs");
1
2
  //#region src/utils/devicePlatform.ts
2
3
  var APPLE_UA_REGEX = /iPhone|iPad|iPod|Macintosh|Mac OS X/i;
3
- var MOBILE_UA_REGEX = /Mobile|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/i;
4
4
  /**
5
5
  * Derive platform flags from server-visible signals. `isWebView` is supplied
6
6
  * by the caller because that bit only comes from the encrypted bot-detection
7
- * payload, not request headers. `isMobile` prefers IPInfo's network-classified
8
- * mobile bit when present and falls back to UA parsing otherwise.
7
+ * payload, not request headers. `isMobile` is a weighed verdict over whatever
8
+ * signals the caller can supply — see `deriveMobileVerdict`.
9
9
  */
10
- var derivePlatform = (userAgent, webView, ipInfo) => ({
10
+ var derivePlatform = (userAgent, webView, signals = {}) => ({
11
11
  isApple: APPLE_UA_REGEX.test(userAgent),
12
12
  isWebView: webView,
13
- isMobile: typeof ipInfo?.isMobile === "boolean" ? ipInfo.isMobile : MOBILE_UA_REGEX.test(userAgent)
13
+ isMobile: require_mobileSignals.deriveMobileVerdict({
14
+ ...signals,
15
+ userAgent,
16
+ webView
17
+ }).isMobile
14
18
  });
15
19
  var TRAFFIC_FILTER_CATEGORIES = [
16
20
  "vpn",
@@ -0,0 +1,69 @@
1
+ //#region src/utils/mobileSignals.ts
2
+ var MOBILE_UA_REGEX = /Mobile|Android|iPhone|iPad|iPod|Opera Mini|IEMobile/i;
3
+ var DESKTOP_UA_REGEX = /Windows NT|Macintosh|X11|CrOS/i;
4
+ var MOBILE_PLATFORM_HINTS = ["android", "ios"];
5
+ var DESKTOP_PLATFORM_HINTS = [
6
+ "windows",
7
+ "macos",
8
+ "linux",
9
+ "chrome os"
10
+ ];
11
+ var TUNNELLED_MSS_MIN = 1300;
12
+ var TUNNELLED_MSS_MAX = 1430;
13
+ var MOBILE_SIGNAL_WEIGHTS = {
14
+ userAgentMobile: 3,
15
+ userAgentDesktop: -3,
16
+ clientHintMobile: 3,
17
+ clientHintNotMobile: -3,
18
+ clientHintPlatformMobile: 3,
19
+ clientHintPlatformDesktop: -3,
20
+ touchCapability: 2,
21
+ pointerCapability: -3,
22
+ touchEvents: 2,
23
+ webView: 1,
24
+ network: 1
25
+ };
26
+ var readHeader = (headers, name) => {
27
+ const value = headers?.[name];
28
+ return typeof value === "string" && value !== "" ? value : void 0;
29
+ };
30
+ var deriveMobileVerdict = (signals) => {
31
+ let score = 0;
32
+ let corroborated = false;
33
+ const evidence = [];
34
+ const vote = (name, evidenceName = name) => {
35
+ score += MOBILE_SIGNAL_WEIGHTS[name];
36
+ evidence.push(evidenceName);
37
+ };
38
+ const voteCorroborating = (name, evidenceName = name) => {
39
+ vote(name, evidenceName);
40
+ corroborated = true;
41
+ };
42
+ const userAgent = signals.userAgent ?? "";
43
+ if (MOBILE_UA_REGEX.test(userAgent)) vote("userAgentMobile");
44
+ else if (DESKTOP_UA_REGEX.test(userAgent)) vote("userAgentDesktop");
45
+ const mobileHint = readHeader(signals.headers, "sec-ch-ua-mobile");
46
+ if (mobileHint === "?1") vote("clientHintMobile");
47
+ else if (mobileHint === "?0") vote("clientHintNotMobile");
48
+ const platformHint = readHeader(signals.headers, "sec-ch-ua-platform")?.replaceAll("\"", "").toLowerCase();
49
+ if (platformHint !== void 0) {
50
+ if (MOBILE_PLATFORM_HINTS.includes(platformHint)) vote("clientHintPlatformMobile");
51
+ else if (DESKTOP_PLATFORM_HINTS.includes(platformHint)) vote("clientHintPlatformDesktop");
52
+ }
53
+ if (signals.deviceCapability === "mobile") voteCorroborating("touchCapability");
54
+ else if (signals.deviceCapability === "desktop") vote("pointerCapability");
55
+ if (signals.touchEventCount !== void 0 && signals.touchEventCount > 0) voteCorroborating("touchEvents");
56
+ if (signals.webView === true) voteCorroborating("webView");
57
+ const onCarrier = signals.carrierNetwork === true;
58
+ const tunnelled = signals.tcpMss !== void 0 && signals.tcpMss >= TUNNELLED_MSS_MIN && signals.tcpMss <= TUNNELLED_MSS_MAX;
59
+ if (onCarrier || tunnelled) voteCorroborating("network", onCarrier && tunnelled ? "carrierNetwork+tunnelledMss" : onCarrier ? "carrierNetwork" : "tunnelledMss");
60
+ return {
61
+ isMobile: score >= 3,
62
+ corroborated,
63
+ score,
64
+ evidence
65
+ };
66
+ };
67
+ //#endregion
68
+ exports.MOBILE_SIGNAL_WEIGHTS = MOBILE_SIGNAL_WEIGHTS;
69
+ exports.deriveMobileVerdict = deriveMobileVerdict;
@@ -33,7 +33,7 @@ export declare class FrictionlessManager extends CaptchaManager {
33
33
  updateScore(score: number, scoreComponents: ScoreComponents): void;
34
34
  checkLangRules(acceptLanguage: string): number;
35
35
  createSession(input: CreateSessionInput): Promise<Session>;
36
- createAuthenticatedSession(token: string, ipAddress: CompositeIpAddress, webBotAuthAgent: string, siteKey: string, userSitekeyIpHash?: string, headers?: RequestHeaders, ipInfo?: IPInfoResponse, clientSessionId?: string): Promise<Session>;
36
+ createAuthenticatedSession(token: string, ipAddress: CompositeIpAddress, webBotAuthAgent: string | undefined, siteKey: string, userSitekeyIpHash?: string, headers?: RequestHeaders, ipInfo?: IPInfoResponse, clientSessionId?: string): Promise<Session>;
37
37
  verifyAuthenticatedSession(sessionId: string, ip: string | undefined, clientSessionId: string | undefined): Promise<{
38
38
  verified: boolean;
39
39
  status: string;
@@ -1 +1 @@
1
- {"version":3,"file":"frictionlessTasks.d.ts","sourceRoot":"","sources":["../../../src/tasks/frictionless/frictionlessTasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frictionlessTasks.d.ts","sourceRoot":"","sources":["../../../src/tasks/frictionless/frictionlessTasks.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ import { samplePuzzleDifficulty } from "../puzzle/puzzleDifficulty.js";
12
12
  import { ipMatchesSession } from "./ipMatch.js";
13
13
  import { applyRouter } from "./routingMachine.js";
14
14
  import { ApiParams, CaptchaType, DEFAULT_MAX_TIMESTAMP_AGE, FrictionlessReason as FrictionlessReason$1, NO_MEASUREMENT_REASONS, SimdReadingsStage, clampImageRounds, puzzleMaxDifficultyDefault } from "@prosopo/types";
15
- import { resolveMaxEscalationLevel, severityToPuzzleDifficulty } from "@prosopo/captcha-severity";
15
+ import { MAX_STALE_PAYLOAD_LEVEL, resolveMaxEscalationLevel, severityToPuzzleDifficulty } from "@prosopo/captcha-severity";
16
16
  import { DEFAULT_RENDER_SETTINGS } from "@prosopo/puzzle-assets";
17
17
  import { v4 } from "uuid";
18
18
  //#region src/tasks/frictionless/frictionlessTasks.ts
@@ -111,7 +111,7 @@ var FrictionlessManager = class extends CaptchaManager {
111
111
  return checkLangRules(this.config, acceptLanguage);
112
112
  }
113
113
  async createSession(input) {
114
- const { token, score, threshold, scoreComponents, ipAddress, captchaType, siteKey, mode, solvedImagesCount, powDifficulty, userSitekeyIpHash, reason, blocked, deleted, ipInfo, headers, bundleId, currentUrl, iframeUrl, d, tcpToChelloUs, chelloToHandshakeUs, simdReadings, puzzleTolerance, puzzle, iconOrderTolerance, iconOrder, isEscalation, originSessionId, refreshOf, refreshCount, refreshedAfterMs, isProtect, matchedRule, clientMetaData, webView = false, iFrame = false, decryptedHeadHash = "" } = input;
114
+ const { token, score, threshold, scoreComponents, ipAddress, captchaType, siteKey, mode, solvedImagesCount, powDifficulty, userSitekeyIpHash, reason, blocked, deleted, ipInfo, headers, bundleId, currentUrl, iframeUrl, d, tcpToChelloUs, chelloToHandshakeUs, simdReadings, puzzleTolerance, puzzle, puzzleLevel, iconOrderTolerance, iconOrder, isEscalation, originSessionId, refreshOf, refreshCount, refreshedAfterMs, isProtect, matchedRule, clientMetaData, webView = false, iFrame = false, decryptedHeadHash = "" } = input;
115
115
  const sessionRecord = {
116
116
  sessionId: `${getSessionIDPrefix(this.config.host)}-${v4()}`,
117
117
  createdAt: /* @__PURE__ */ new Date(),
@@ -126,6 +126,7 @@ var FrictionlessManager = class extends CaptchaManager {
126
126
  powDifficulty,
127
127
  ...puzzleTolerance !== void 0 && { puzzleTolerance },
128
128
  ...puzzle && { puzzle },
129
+ ...puzzleLevel !== void 0 && { puzzleLevel },
129
130
  ...iconOrderTolerance !== void 0 && { iconOrderTolerance },
130
131
  ...iconOrder && { iconOrder },
131
132
  userSitekeyIpHash,
@@ -187,8 +188,8 @@ var FrictionlessManager = class extends CaptchaManager {
187
188
  decryptedHeadHash: "",
188
189
  siteKey,
189
190
  serverChecked: false,
190
- agent: true,
191
- webBotAuthAgent,
191
+ agent: webBotAuthAgent !== void 0,
192
+ ...webBotAuthAgent && { webBotAuthAgent },
192
193
  ...ipInfo && { ipInfo },
193
194
  ...headers && { headers },
194
195
  ...clientSessionId && { clientMetaData: { clientSessionId } }
@@ -279,8 +280,9 @@ var FrictionlessManager = class extends CaptchaManager {
279
280
  const finalReason = switchedByUser ? FrictionlessReason$1.PUZZLE_USER_SWITCH : switchedByRefreshes ? FrictionlessReason$1.PUZZLE_REFRESH_LIMIT : routed.reason ?? effectiveParams.reason;
280
281
  const finalPuzzleOverrides = finalCaptchaType === CaptchaType.puzzle ? (() => {
281
282
  const maxLevel = resolveMaxEscalationLevel(this.routingContext?.puzzleMaxDifficulty ?? puzzleMaxDifficultyDefault, this.routingContext?.platform.isMobile ?? false);
282
- const level = finalReason !== void 0 && NO_MEASUREMENT_REASONS.has(finalReason) ? 0 : severityToPuzzleDifficulty(requestedSolvedImagesCount, this.routingContext?.baseImageRounds ?? this.config.captchas.solved.count, maxLevel);
283
- const difficulty = level > 0 ? samplePuzzleDifficulty(level, DEFAULT_RENDER_SETTINGS.holeDarken) : void 0;
283
+ const ceiling = finalReason === FrictionlessReason$1.OLD_TIMESTAMP ? Math.min(maxLevel, MAX_STALE_PAYLOAD_LEVEL) : maxLevel;
284
+ const level = finalReason !== void 0 && NO_MEASUREMENT_REASONS.has(finalReason) ? 0 : severityToPuzzleDifficulty(requestedSolvedImagesCount, this.routingContext?.baseImageRounds ?? this.config.captchas.solved.count, ceiling);
285
+ const difficulty = level > 0 ? samplePuzzleDifficulty(level, DEFAULT_RENDER_SETTINGS.holeDarken, ceiling) : void 0;
284
286
  const tolerance = routed.puzzleTolerance ?? difficulty?.tolerance;
285
287
  const puzzle = routed.puzzle || difficulty ? {
286
288
  ...difficulty?.puzzle ?? {},
@@ -312,6 +314,7 @@ var FrictionlessManager = class extends CaptchaManager {
312
314
  blocked,
313
315
  puzzleTolerance: finalPuzzleOverrides.puzzleTolerance,
314
316
  puzzle: finalPuzzleOverrides.puzzle,
317
+ puzzleLevel: finalPuzzleOverrides.puzzleLevel,
315
318
  iconOrderTolerance: finalIconOrderOverrides.iconOrderTolerance,
316
319
  iconOrder: finalIconOrderOverrides.iconOrder,
317
320
  deleted: void 0,
@@ -1 +1 @@
1
- {"version":3,"file":"frictionlessTasks.js","sourceRoot":"","sources":["../../../src/tasks/frictionless/frictionlessTasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"frictionlessTasks.js","sourceRoot":"","sources":["../../../src/tasks/frictionless/frictionlessTasks.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import type { CompositeIpAddress } from "@prosopo/types";
1
+ import { type CompositeIpAddress } from "@prosopo/types";
2
2
  export declare const ipMatchesSession: (operatorIp: string, sessionIp: CompositeIpAddress) => boolean;
3
3
  //# sourceMappingURL=ipMatch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipMatch.d.ts","sourceRoot":"","sources":["../../../src/tasks/frictionless/ipMatch.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAqCzD,eAAO,MAAM,gBAAgB,eAChB,MAAM,aACP,kBAAkB,KAC3B,OASF,CAAC"}
1
+ {"version":3,"file":"ipMatch.d.ts","sourceRoot":"","sources":["../../../src/tasks/frictionless/ipMatch.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,kBAAkB,EAAiB,MAAM,gBAAgB,CAAC;AAsDxE,eAAO,MAAM,gBAAgB,eAChB,MAAM,aACP,kBAAkB,KAC3B,OAkBF,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { getCompositeIpAddress } from "../../compositeIpAddress.js";
2
+ import { IpAddressType } from "@prosopo/types";
2
3
  //#region src/tasks/frictionless/ipMatch.ts
3
4
  /**
4
5
  * `CompositeIpAddress` types its halves as `bigint`, but that is only true of
@@ -21,10 +22,21 @@ var asBigInt = (half) => {
21
22
  return null;
22
23
  }
23
24
  };
25
+ var V4_MAPPED_MARKER = 65535n;
26
+ /**
27
+ * A dual-stack socket reports an IPv4 client as `::ffff:a.b.c.d`, while the
28
+ * operator usually forwards the same client as `a.b.c.d`. Both are reduced to
29
+ * the plain v4 address so the binding compares the client, not the socket.
30
+ */
31
+ var unmapV4 = (ip) => ip.type === IpAddressType.v6 && ip.upper === 0n && ip.lower >> 32n === V4_MAPPED_MARKER ? {
32
+ type: IpAddressType.v4,
33
+ lower: ip.lower & 4294967295n,
34
+ upper: 0n
35
+ } : ip;
24
36
  /**
25
37
  * Compare an operator-supplied plain-string IP against the CompositeIpAddress
26
38
  * captured on a session. Returns true iff the parsed IP has the same type
27
- * (v4/v6) and numeric halves.
39
+ * (v4/v6) and numeric halves, once IPv4-mapped v6 addresses are unmapped.
28
40
  *
29
41
  * Load-bearing for Web Bot Auth IP binding — a leaked authenticated token
30
42
  * replayed from a different IP fails here. Malformed operator IPs degrade
@@ -34,12 +46,21 @@ var asBigInt = (half) => {
34
46
  * match would nullify the whole binding.
35
47
  */
36
48
  var ipMatchesSession = (operatorIp, sessionIp) => {
37
- const parsed = getCompositeIpAddress(operatorIp);
38
- if (parsed.type !== sessionIp.type) return false;
39
49
  const lower = asBigInt(sessionIp.lower);
40
50
  const upper = asBigInt(sessionIp.upper);
41
51
  if (lower === null || upper === null) return false;
42
- return parsed.lower === lower && (parsed.upper ?? 0n) === upper;
52
+ const parsed = getCompositeIpAddress(operatorIp);
53
+ const operator = unmapV4({
54
+ type: parsed.type,
55
+ lower: BigInt(parsed.lower),
56
+ upper: BigInt(parsed.upper ?? 0n)
57
+ });
58
+ const session = unmapV4({
59
+ type: sessionIp.type,
60
+ lower,
61
+ upper
62
+ });
63
+ return operator.type === session.type && operator.lower === session.lower && operator.upper === session.upper;
43
64
  };
44
65
  //#endregion
45
66
  export { ipMatchesSession };
@@ -1 +1 @@
1
- {"version":3,"file":"ipMatch.js","sourceRoot":"","sources":["../../../src/tasks/frictionless/ipMatch.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAcpE,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAiB,EAAE;IACjD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACnD,IAAI,CAAC;QACJ,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC,CAAC;AAcF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,UAAkB,EAClB,SAA6B,EACnB,EAAE;IACZ,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IAEjD,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAEnD,OAAO,MAAM,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,KAAK,CAAC;AACjE,CAAC,CAAC"}
1
+ {"version":3,"file":"ipMatch.js","sourceRoot":"","sources":["../../../src/tasks/frictionless/ipMatch.ts"],"names":[],"mappings":"AAcA,OAAO,EAA2B,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAcpE,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAiB,EAAE;IACjD,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACnD,IAAI,CAAC;QACJ,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC,CAAC;AAKF,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAOjC,MAAM,OAAO,GAAG,CAAC,EAAa,EAAa,EAAE,CAC5C,EAAE,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE;IAC5B,EAAE,CAAC,KAAK,KAAK,EAAE;IACf,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,gBAAgB;IACnC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE;IACtE,CAAC,CAAC,EAAE,CAAC;AAcP,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,UAAkB,EAClB,SAA6B,EACnB,EAAE;IACZ,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAEnD,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;KACjC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAEhE,OAAO,CACN,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;QAC9B,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK;QAChC,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAChC,CAAC;AACH,CAAC,CAAC"}
@@ -8,7 +8,14 @@ export interface RenderedPuzzleImages {
8
8
  renderSeed: string;
9
9
  }
10
10
  export declare const resolvePuzzleRenderSettings: (...overrides: (IPuzzleSettings | undefined)[]) => PuzzleRenderSettings;
11
- export declare const resolvePuzzlePieceSize: (...overrides: (IPuzzleSettings | undefined)[]) => number;
11
+ export declare const resolvePuzzlePieceScaleRange: (...overrides: (IPuzzleSettings | undefined)[]) => {
12
+ min: number;
13
+ max: number;
14
+ };
15
+ export declare const samplePuzzlePieceSize: (range: {
16
+ min: number;
17
+ max: number;
18
+ }) => number;
12
19
  export declare const isPuzzleRenderAvailable: () => boolean;
13
20
  export declare const renderPuzzleImages: (placement: NotchPlacement, settings?: PuzzleRenderSettings, pieceSize?: number) => Promise<RenderedPuzzleImages>;
14
21
  //# sourceMappingURL=puzzleRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"puzzleRenderer.d.ts","sourceRoot":"","sources":["../../../src/tasks/puzzle/puzzleRenderer.ts"],"names":[],"mappings":"AAeA,OAAO,EAGN,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAGzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,KAAK,eAAe,EAGpB,MAAM,gBAAgB,CAAC;AAQxB,MAAM,WAAW,oBAAoB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAQlB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACnB;AAQD,eAAO,MAAM,2BAA2B,iBACzB,CAAC,eAAe,GAAG,SAAS,CAAC,EAAE,KAC3C,oBAmCF,CAAC;AAcF,eAAO,MAAM,sBAAsB,iBACpB,CAAC,eAAe,GAAG,SAAS,CAAC,EAAE,KAC3C,MAaF,CAAC;AAYF,eAAO,MAAM,uBAAuB,QAAO,OAM1C,CAAC;AASF,eAAO,MAAM,kBAAkB,cACnB,cAAc,aACf,oBAAoB,cAClB,MAAM,KAChB,OAAO,CAAC,oBAAoB,CAwB9B,CAAC"}
1
+ {"version":3,"file":"puzzleRenderer.d.ts","sourceRoot":"","sources":["../../../src/tasks/puzzle/puzzleRenderer.ts"],"names":[],"mappings":"AAeA,OAAO,EAGN,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAGzB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACN,KAAK,eAAe,EAGpB,MAAM,gBAAgB,CAAC;AAQxB,MAAM,WAAW,oBAAoB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAQlB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACnB;AAQD,eAAO,MAAM,2BAA2B,iBACzB,CAAC,eAAe,GAAG,SAAS,CAAC,EAAE,KAC3C,oBAmCF,CAAC;AAUF,eAAO,MAAM,4BAA4B,iBAC1B,CAAC,eAAe,GAAG,SAAS,CAAC,EAAE,KAC3C;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAY5B,CAAC;AAQF,eAAO,MAAM,qBAAqB,UAAW;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACZ,KAAG,MAGH,CAAC;AAYF,eAAO,MAAM,uBAAuB,QAAO,OAM1C,CAAC;AASF,eAAO,MAAM,kBAAkB,cACnB,cAAc,aACf,oBAAoB,cAClB,MAAM,KAChB,OAAO,CAAC,oBAAoB,CAwB9B,CAAC"}
@@ -46,13 +46,9 @@ var resolvePuzzleRenderSettings = (...overrides) => {
46
46
  var pieceSizeSampler = createStratifiedSampler();
47
47
  /**
48
48
  * Resolve the effective piece scale range from the same layered
49
- * client-settings / traffic-filter overrides used for render settings, and
50
- * draw a per-challenge piece size in pixels. Stratified so the distribution
51
- * is evenly spread across the range even for short bursts of requests.
52
- * Rounded to an integer because the pixel buffer is allocated as
53
- * `size * size * 4`.
49
+ * client-settings / traffic-filter overrides used for render settings.
54
50
  */
55
- var resolvePuzzlePieceSize = (...overrides) => {
51
+ var resolvePuzzlePieceScaleRange = (...overrides) => {
56
52
  let min = puzzlePieceScaleMinDefault;
57
53
  let max = puzzlePieceScaleMaxDefault;
58
54
  for (const override of overrides) {
@@ -61,7 +57,19 @@ var resolvePuzzlePieceSize = (...overrides) => {
61
57
  if (override.pieceScale.max !== void 0) max = override.pieceScale.max;
62
58
  }
63
59
  if (min > max) min = max;
64
- const scale = pieceSizeSampler.sample(min, max);
60
+ return {
61
+ min,
62
+ max
63
+ };
64
+ };
65
+ /**
66
+ * Draw a per-challenge piece size in pixels from a scale range. Stratified so
67
+ * the distribution is evenly spread across the range even for short bursts of
68
+ * requests. Rounded to an integer because the pixel buffer is allocated as
69
+ * `size * size * 4`.
70
+ */
71
+ var samplePuzzlePieceSize = (range) => {
72
+ const scale = pieceSizeSampler.sample(range.min, range.max);
65
73
  return Math.max(1, Math.round(DEFAULT_GEOMETRY.width * scale));
66
74
  };
67
75
  /**
@@ -92,4 +100,4 @@ var renderPuzzleImages = async (placement, settings = DEFAULT_RENDER_SETTINGS, p
92
100
  };
93
101
  };
94
102
  //#endregion
95
- export { isPuzzleRenderAvailable, renderPuzzleImages, resolvePuzzlePieceSize, resolvePuzzleRenderSettings };
103
+ export { isPuzzleRenderAvailable, renderPuzzleImages, resolvePuzzlePieceScaleRange, resolvePuzzleRenderSettings, samplePuzzlePieceSize };
@@ -1 +1 @@
1
- {"version":3,"file":"puzzleRenderer.js","sourceRoot":"","sources":["../../../src/tasks/puzzle/puzzleRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"puzzleRenderer.js","sourceRoot":"","sources":["../../../src/tasks/puzzle/puzzleRenderer.ts"],"names":[],"mappings":"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"}
@@ -158,10 +158,10 @@ describe("Web Bot Auth authenticated flow (integration)", () => {
158
158
  await accessRulesStorage.deleteAllRules();
159
159
  getVerdictCache().clear();
160
160
  });
161
- const registerSite = async () => {
161
+ const registerSite = async (captchaType = CaptchaType.frictionless) => {
162
162
  const [mnemonic, siteKey] = await generateMnemonic();
163
163
  await tasks.clientTaskManager.registerSiteKey(siteKey, Tier.Professional, ClientSettingsSchema.parse({
164
- captchaType: CaptchaType.frictionless,
164
+ captchaType,
165
165
  domains: ["localhost", "example.com"],
166
166
  }));
167
167
  return [mnemonic, siteKey];
@@ -182,7 +182,7 @@ describe("Web Bot Auth authenticated flow (integration)", () => {
182
182
  const frictionless = async (siteKey, options) => {
183
183
  const body = {
184
184
  [ApiParams.dapp]: siteKey,
185
- [ApiParams.token]: randomAsHex(16),
185
+ [ApiParams.token]: options.token ?? randomAsHex(16),
186
186
  [ApiParams.user]: options.userId,
187
187
  [ApiParams.headHash]: randomAsHex(16),
188
188
  ...(options.clientSessionId && {
@@ -242,17 +242,18 @@ describe("Web Bot Auth authenticated flow (integration)", () => {
242
242
  expect(response.status).toBe(200);
243
243
  return (await response.json());
244
244
  };
245
- const allowRule = async (siteKey, fields) => {
245
+ const insertRule = async (type, siteKey, fields) => {
246
246
  await accessRulesStorage.insertRules([
247
247
  {
248
248
  rule: accessRuleInput.parse({
249
- type: AccessPolicyType.Allow,
249
+ type,
250
250
  clientId: siteKey,
251
251
  ...fields,
252
252
  }),
253
253
  },
254
254
  ]);
255
255
  };
256
+ const allowRule = (siteKey, fields) => insertRule(AccessPolicyType.Allow, siteKey, fields);
256
257
  describe("frictionless entry", () => {
257
258
  it("mints an authenticated session for a request a verified Web Bot Auth signer is allowed on", async () => {
258
259
  const [, siteKey] = await registerSite();
@@ -351,6 +352,73 @@ describe("Web Bot Auth authenticated flow (integration)", () => {
351
352
  expect(status).toBe(200);
352
353
  expect(body.captchaType).not.toBe(CaptchaType.authenticated);
353
354
  });
355
+ it("lets an allowed signer through on a site configured for a fixed captcha type", async () => {
356
+ const [, siteKey] = await registerSite(CaptchaType.pow);
357
+ const [, userId] = await generateMnemonic();
358
+ await allowRule(siteKey, { webBotAuthAgent: signerUrl });
359
+ const signed = await frictionless(siteKey, {
360
+ userId,
361
+ ip: "203.0.113.14",
362
+ userAgent: "IntegrationAgent/1.0",
363
+ extraHeaders: signedHeaders(),
364
+ });
365
+ expect(signed.body.captchaType).toBe(CaptchaType.authenticated);
366
+ const [, otherUserId] = await generateMnemonic();
367
+ const unsigned = await frictionless(siteKey, {
368
+ userId: otherUserId,
369
+ ip: "203.0.113.15",
370
+ userAgent: "IntegrationAgent/1.0",
371
+ });
372
+ expect(unsigned.body.captchaType).toBe(CaptchaType.pow);
373
+ });
374
+ it("blocks a signer with a Block rule on a site configured for a fixed captcha type", async () => {
375
+ const [, siteKey] = await registerSite(CaptchaType.pow);
376
+ const [, userId] = await generateMnemonic();
377
+ await allowRule(siteKey, { webBotAuthAgent: signerUrl });
378
+ await insertRule(AccessPolicyType.Block, siteKey, {
379
+ webBotAuthAgent: signerUrl,
380
+ });
381
+ const { status, body } = await frictionless(siteKey, {
382
+ userId,
383
+ ip: "203.0.113.16",
384
+ userAgent: "IntegrationAgent/1.0",
385
+ extraHeaders: signedHeaders(),
386
+ });
387
+ expect(status).toBe(401);
388
+ expect(body.captchaType).toBeUndefined();
389
+ });
390
+ it("mints an authenticated session when the client sent no detector token", async () => {
391
+ const [, siteKey] = await registerSite();
392
+ const [, userId] = await generateMnemonic();
393
+ await allowRule(siteKey, { webBotAuthAgent: signerUrl });
394
+ const { status, body } = await frictionless(siteKey, {
395
+ userId,
396
+ ip: "203.0.113.17",
397
+ userAgent: "IntegrationAgent/1.0",
398
+ extraHeaders: signedHeaders(),
399
+ token: "",
400
+ });
401
+ expect(status).toBe(200);
402
+ expect(body.captchaType).toBe(CaptchaType.authenticated);
403
+ });
404
+ it("swaps a returning agent's challenge session for an authenticated one once it signs", async () => {
405
+ const [, siteKey] = await registerSite();
406
+ const [, userId] = await generateMnemonic();
407
+ await allowRule(siteKey, { webBotAuthAgent: signerUrl });
408
+ const visit = {
409
+ userId,
410
+ ip: "203.0.113.18",
411
+ userAgent: "IntegrationAgent/1.0",
412
+ };
413
+ const unsigned = await frictionless(siteKey, visit);
414
+ expect(unsigned.body.captchaType).not.toBe(CaptchaType.authenticated);
415
+ const signed = await frictionless(siteKey, {
416
+ ...visit,
417
+ extraHeaders: signedHeaders(),
418
+ });
419
+ expect(signed.body.captchaType).toBe(CaptchaType.authenticated);
420
+ expect(signed.body.sessionId).not.toBe(unsigned.body.sessionId);
421
+ });
354
422
  it("does not mint an authenticated session when no Allow rule matches", async () => {
355
423
  const [, siteKey] = await registerSite();
356
424
  const [, userId] = await generateMnemonic();
@@ -424,6 +492,36 @@ describe("Web Bot Auth authenticated flow (integration)", () => {
424
492
  const result = await authenticatedVerify(siteKey, siteKeyMnemonic, userId, sessionId, { ip: AGENT_IP, clientSessionId: "render-session-a" });
425
493
  expect(result).toEqual({ verified: true, status: "API.USER_VERIFIED" });
426
494
  });
495
+ it("gives a returning agent a new session rather than the one it spent", async () => {
496
+ const { siteKey, siteKeyMnemonic, userId, sessionId } = await mintSession();
497
+ const first = await authenticatedVerify(siteKey, siteKeyMnemonic, userId, sessionId, { ip: AGENT_IP });
498
+ expect(first.verified).toBe(true);
499
+ const userAgent = `TrustedPartnerAgent/${randomAsHex(4)}`;
500
+ await allowRule(siteKey, { userAgent });
501
+ const { body } = await frictionless(siteKey, {
502
+ userId,
503
+ ip: AGENT_IP,
504
+ userAgent,
505
+ });
506
+ expect(body.captchaType).toBe(CaptchaType.authenticated);
507
+ expect(body.sessionId).not.toBe(sessionId);
508
+ const second = await authenticatedVerify(siteKey, siteKeyMnemonic, userId, body.sessionId, { ip: AGENT_IP });
509
+ expect(second).toEqual({ verified: true, status: "API.USER_VERIFIED" });
510
+ });
511
+ it("verifies a plain IPv4 against a session that captured it IPv4-mapped", async () => {
512
+ const [siteKeyMnemonic, siteKey] = await registerSite();
513
+ const [, userId] = await generateMnemonic();
514
+ const userAgent = `TrustedPartnerAgent/${randomAsHex(4)}`;
515
+ await allowRule(siteKey, { userAgent });
516
+ const { body } = await frictionless(siteKey, {
517
+ userId,
518
+ ip: "::ffff:203.0.113.21",
519
+ userAgent,
520
+ });
521
+ expect(body.captchaType).toBe(CaptchaType.authenticated);
522
+ const result = await authenticatedVerify(siteKey, siteKeyMnemonic, userId, body.sessionId, { ip: "203.0.113.21" });
523
+ expect(result).toEqual({ verified: true, status: "API.USER_VERIFIED" });
524
+ });
427
525
  it("refuses a session that was not minted as authenticated", async () => {
428
526
  const [siteKeyMnemonic, siteKey] = await registerSite();
429
527
  const [, userId] = await generateMnemonic();