@debugbundle/shared-types 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,111 @@
1
+ export function isLowValueExternalProbeRequestFailure404(input) {
2
+ if (input.responseStatus !== 404 || input.httpMethod.toUpperCase() !== "GET") {
3
+ return false;
4
+ }
5
+ const normalizedRoute = input.routeTemplate.toLowerCase().replace(/\/+$/, "") || "/";
6
+ const normalizedPath = normalizePath(input.requestPath ?? input.routeTemplate);
7
+ const routesToCheck = new Set([normalizedRoute, normalizedPath]);
8
+ for (const route of routesToCheck) {
9
+ if (isRouteOnlyExternalProbe(route)) {
10
+ return true;
11
+ }
12
+ }
13
+ return isDirectIpRequest(input.headers ?? null) && [...routesToCheck].some(isGenericDirectIpProbeRoute);
14
+ }
15
+ function normalizePath(path) {
16
+ const withoutQuery = path.split("?")[0] ?? path;
17
+ return withoutQuery.toLowerCase().replace(/\/+$/, "") || "/";
18
+ }
19
+ function isRouteOnlyExternalProbe(normalizedRoute) {
20
+ const exactRoutes = new Set([
21
+ "/.env",
22
+ "/__debug__/render_panel",
23
+ "/actuator",
24
+ "/autodiscover/autodiscover.json",
25
+ "/developmentserver/metadatauploader",
26
+ "/cpanel",
27
+ "/favicon.ico",
28
+ "/geoserver/web",
29
+ "/hnap1",
30
+ "/logon/logonpoint/index.html",
31
+ "/owa/auth/logon.aspx",
32
+ "/robots.txt",
33
+ "/rdweb/pages",
34
+ "/web",
35
+ "/webclient/login.xhtml",
36
+ "/webconsole",
37
+ "/webui",
38
+ "/whm",
39
+ "/wp-admin",
40
+ "/wp-login.php",
41
+ "/wsman",
42
+ "/xmlrpc.php"
43
+ ]);
44
+ if (exactRoutes.has(normalizedRoute)) {
45
+ return true;
46
+ }
47
+ return (normalizedRoute.includes("/.git/") ||
48
+ normalizedRoute.includes("/.svn/") ||
49
+ normalizedRoute.includes("/api_keys") ||
50
+ normalizedRoute.includes("/backup/api_keys") ||
51
+ normalizedRoute.includes("/phpmyadmin") ||
52
+ normalizedRoute.includes("/pma/") ||
53
+ normalizedRoute.includes("/vendor/phpunit/") ||
54
+ normalizedRoute.startsWith("/autodiscover/") ||
55
+ normalizedRoute.startsWith("/cgi-bin/") ||
56
+ normalizedRoute.startsWith("/ecp/") ||
57
+ normalizedRoute.endsWith("/.git/config") ||
58
+ normalizedRoute.endsWith("/composer.json") ||
59
+ normalizedRoute.endsWith("/composer.lock") ||
60
+ normalizedRoute.endsWith("/package-lock.json") ||
61
+ normalizedRoute.endsWith("/package.json") ||
62
+ normalizedRoute.endsWith("/server-status") ||
63
+ normalizedRoute.includes("wp-config") ||
64
+ normalizedRoute.startsWith("/owa/") ||
65
+ normalizedRoute.startsWith("/rdweb/") ||
66
+ normalizedRoute.startsWith("/vpn/") ||
67
+ normalizedRoute.startsWith("/wp-") ||
68
+ isSensitiveBackupFileProbe(normalizedRoute));
69
+ }
70
+ function isSensitiveBackupFileProbe(normalizedRoute) {
71
+ if (!/\.(?:bak|backup|dump|old|orig|save|sql|swp|tar|tar\.gz|zip)$/.test(normalizedRoute)) {
72
+ return false;
73
+ }
74
+ return /(?:^|\/|\.)(?:backup|config|database|db|dump|env|secret|site|www|wp-config)(?:\/|\.|_|-|$)/.test(normalizedRoute);
75
+ }
76
+ function isGenericDirectIpProbeRoute(normalizedRoute) {
77
+ return [
78
+ "/admin",
79
+ "/administrator",
80
+ "/login",
81
+ "/logincheck",
82
+ "/remote/logincheck"
83
+ ].includes(normalizedRoute);
84
+ }
85
+ function isDirectIpRequest(headers) {
86
+ if (headers === null) {
87
+ return false;
88
+ }
89
+ const host = readHeader(headers, "x-forwarded-host") ?? readHeader(headers, "host");
90
+ if (host === null) {
91
+ return false;
92
+ }
93
+ return isIpLikeHost(host);
94
+ }
95
+ function readHeader(headers, name) {
96
+ const direct = headers[name] ?? headers[name.toLowerCase()];
97
+ if (typeof direct === "string") {
98
+ return direct;
99
+ }
100
+ if (Array.isArray(direct) && typeof direct[0] === "string") {
101
+ return direct[0];
102
+ }
103
+ return null;
104
+ }
105
+ function isIpLikeHost(value) {
106
+ const host = value.trim().replace(/:\d+$/, "");
107
+ return (/^(?:\d{1,3}\.){3}\d{1,3}$/.test(host) ||
108
+ /^\[[0-9a-f:]+\]$/i.test(host) ||
109
+ (host.includes(":") && /^[0-9a-f:]+$/i.test(host)));
110
+ }
111
+ //# sourceMappingURL=request-failure-noise.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-failure-noise.js","sourceRoot":"","sources":["../src/request-failure-noise.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@debugbundle/shared-types",
3
- "version": "1.0.1",
3
+ "version": "1.1.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-only",