xypriss 9.6.97 → 9.7.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.
- package/README.md +55 -22
- package/dist/cjs/src/index.js +0 -19
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js +4 -4
- package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/security/HoneypotTarpit.js +510 -0
- package/dist/cjs/src/middleware/built-in/security/HoneypotTarpit.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/SQLInjectionDetector.js +113 -34
- package/dist/cjs/src/middleware/built-in/security/SQLInjectionDetector.js.map +1 -1
- package/dist/cjs/src/middleware/built-in/security/UriNormalizer.js +413 -0
- package/dist/cjs/src/middleware/built-in/security/UriNormalizer.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissCors.js +98 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissCors.js.map +1 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissHPP.js +52 -0
- package/dist/cjs/src/middleware/built-in/security/XyPrissHPP.js.map +1 -0
- package/dist/cjs/src/middleware/safe-json-middleware.js +0 -82
- package/dist/cjs/src/middleware/safe-json-middleware.js.map +1 -1
- package/dist/cjs/src/middleware/security-middleware.js +7 -4
- package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
- package/dist/cjs/src/plugins/builtin/xems/XemsBuiltinPlugin.js +33 -10
- package/dist/cjs/src/plugins/builtin/xems/XemsBuiltinPlugin.js.map +1 -1
- package/dist/cjs/src/plugins/builtin/xems/XemsPlugin.js +34 -3
- package/dist/cjs/src/plugins/builtin/xems/XemsPlugin.js.map +1 -1
- package/dist/cjs/src/plugins/const/OFFICIAL_PLUGINS.js +1 -1
- package/dist/cjs/src/plugins/const/OFFICIAL_PLUGINS.js.map +1 -1
- package/dist/cjs/src/plugins/const/XyprissTempDir.js +72 -9
- package/dist/cjs/src/plugins/const/XyprissTempDir.js.map +1 -1
- package/dist/cjs/src/plugins/core/manager/PluginLoader.js +8 -0
- package/dist/cjs/src/plugins/core/manager/PluginLoader.js.map +1 -1
- package/dist/cjs/src/plugins/core/manager/PluginSecurity.js +87 -0
- package/dist/cjs/src/plugins/core/manager/PluginSecurity.js.map +1 -1
- package/dist/cjs/src/server/FastServer/index.js +5 -0
- package/dist/cjs/src/server/FastServer/index.js.map +1 -1
- package/dist/cjs/src/server/ServerFactory.js +8 -13
- package/dist/cjs/src/server/ServerFactory.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/RedirectManager.js +8 -58
- package/dist/cjs/src/server/components/fastapi/RedirectManager.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/upload/FileUploadManager.js +1 -1
- package/dist/cjs/src/server/components/fastapi/upload/FileUploadManager.js.map +1 -1
- package/dist/cjs/src/server/components/multi-server/MultiServerManager.js +9 -1
- package/dist/cjs/src/server/components/multi-server/MultiServerManager.js.map +1 -1
- package/dist/cjs/src/server/core/HttpServer.js +22 -0
- package/dist/cjs/src/server/core/HttpServer.js.map +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/EngineManager.js +33 -2
- package/dist/cjs/src/server/core/XHSCBridge/EngineManager.js.map +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js +1 -1
- package/dist/cjs/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js.map +1 -1
- package/dist/cjs/src/server/core/XyServerCreator.js +1 -0
- package/dist/cjs/src/server/core/XyServerCreator.js.map +1 -1
- package/dist/cjs/src/shared/logger/quickLogger.js +162 -0
- package/dist/cjs/src/shared/logger/quickLogger.js.map +1 -0
- package/dist/cjs/src/xhsc/PathApi.js +44 -3
- package/dist/cjs/src/xhsc/PathApi.js.map +1 -1
- package/dist/cjs/src/xhsc/System.js +2 -0
- package/dist/cjs/src/xhsc/System.js.map +1 -1
- package/dist/cjs/src/xhsc/UtilsApi.js +52 -0
- package/dist/cjs/src/xhsc/UtilsApi.js.map +1 -0
- package/dist/cjs/src/xhsc/XyPrissRunner.js +30 -2
- package/dist/cjs/src/xhsc/XyPrissRunner.js.map +1 -1
- package/dist/cjs/src/xhsc/fs/FSCore.js +148 -0
- package/dist/cjs/src/xhsc/fs/FSCore.js.map +1 -1
- package/dist/cjs/src/xhsc/fs/FileHandle.js +112 -0
- package/dist/cjs/src/xhsc/fs/FileHandle.js.map +1 -0
- package/dist/cjs/src/xhsc/ipc/XHSCDirectIPC.js +134 -0
- package/dist/cjs/src/xhsc/ipc/XHSCDirectIPC.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/ArrayUtils.js +67 -0
- package/dist/cjs/src/xhsc/utils/ArrayUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/AsyncUtils.js +582 -0
- package/dist/cjs/src/xhsc/utils/AsyncUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/DateUtils.js +959 -0
- package/dist/cjs/src/xhsc/utils/DateUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/FunctionUtils.js +29 -0
- package/dist/cjs/src/xhsc/utils/FunctionUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/IdUtils.js +22 -0
- package/dist/cjs/src/xhsc/utils/IdUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/NumberUtils.js +79 -0
- package/dist/cjs/src/xhsc/utils/NumberUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/ObjectUtils.js +141 -0
- package/dist/cjs/src/xhsc/utils/ObjectUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/StringUtils.js +145 -0
- package/dist/cjs/src/xhsc/utils/StringUtils.js.map +1 -0
- package/dist/cjs/src/xhsc/utils/ValidationUtils.js +49 -0
- package/dist/cjs/src/xhsc/utils/ValidationUtils.js.map +1 -0
- package/dist/cjs/src/xhsc.js +5 -3
- package/dist/cjs/src/xhsc.js.map +1 -1
- package/dist/esm/src/index.js +0 -2
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js +4 -4
- package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
- package/dist/esm/src/middleware/built-in/security/HoneypotTarpit.js +508 -0
- package/dist/esm/src/middleware/built-in/security/HoneypotTarpit.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/SQLInjectionDetector.js +113 -34
- package/dist/esm/src/middleware/built-in/security/SQLInjectionDetector.js.map +1 -1
- package/dist/esm/src/middleware/built-in/security/UriNormalizer.js +391 -0
- package/dist/esm/src/middleware/built-in/security/UriNormalizer.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissCors.js +96 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissCors.js.map +1 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissHPP.js +50 -0
- package/dist/esm/src/middleware/built-in/security/XyPrissHPP.js.map +1 -0
- package/dist/esm/src/middleware/safe-json-middleware.js +1 -79
- package/dist/esm/src/middleware/safe-json-middleware.js.map +1 -1
- package/dist/esm/src/middleware/security-middleware.js +7 -4
- package/dist/esm/src/middleware/security-middleware.js.map +1 -1
- package/dist/esm/src/plugins/builtin/xems/XemsBuiltinPlugin.js +33 -10
- package/dist/esm/src/plugins/builtin/xems/XemsBuiltinPlugin.js.map +1 -1
- package/dist/esm/src/plugins/builtin/xems/XemsPlugin.js +34 -3
- package/dist/esm/src/plugins/builtin/xems/XemsPlugin.js.map +1 -1
- package/dist/esm/src/plugins/const/OFFICIAL_PLUGINS.js +1 -1
- package/dist/esm/src/plugins/const/OFFICIAL_PLUGINS.js.map +1 -1
- package/dist/esm/src/plugins/const/XyprissTempDir.js +70 -9
- package/dist/esm/src/plugins/const/XyprissTempDir.js.map +1 -1
- package/dist/esm/src/plugins/core/manager/PluginLoader.js +8 -0
- package/dist/esm/src/plugins/core/manager/PluginLoader.js.map +1 -1
- package/dist/esm/src/plugins/core/manager/PluginSecurity.js +87 -0
- package/dist/esm/src/plugins/core/manager/PluginSecurity.js.map +1 -1
- package/dist/esm/src/server/FastServer/index.js +5 -0
- package/dist/esm/src/server/FastServer/index.js.map +1 -1
- package/dist/esm/src/server/ServerFactory.js +8 -1
- package/dist/esm/src/server/ServerFactory.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/RedirectManager.js +8 -58
- package/dist/esm/src/server/components/fastapi/RedirectManager.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/upload/FileUploadManager.js +1 -1
- package/dist/esm/src/server/components/fastapi/upload/FileUploadManager.js.map +1 -1
- package/dist/esm/src/server/components/multi-server/MultiServerManager.js +9 -1
- package/dist/esm/src/server/components/multi-server/MultiServerManager.js.map +1 -1
- package/dist/esm/src/server/core/HttpServer.js +22 -0
- package/dist/esm/src/server/core/HttpServer.js.map +1 -1
- package/dist/esm/src/server/core/XHSCBridge/EngineManager.js +33 -2
- package/dist/esm/src/server/core/XHSCBridge/EngineManager.js.map +1 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js +1 -1
- package/dist/esm/src/server/core/XHSCBridge/cmd/buildSecurityArgs.js.map +1 -1
- package/dist/esm/src/server/core/XyServerCreator.js +1 -0
- package/dist/esm/src/server/core/XyServerCreator.js.map +1 -1
- package/dist/esm/src/shared/logger/quickLogger.js +160 -0
- package/dist/esm/src/shared/logger/quickLogger.js.map +1 -0
- package/dist/esm/src/xhsc/PathApi.js +44 -3
- package/dist/esm/src/xhsc/PathApi.js.map +1 -1
- package/dist/esm/src/xhsc/System.js +2 -0
- package/dist/esm/src/xhsc/System.js.map +1 -1
- package/dist/esm/src/xhsc/UtilsApi.js +50 -0
- package/dist/esm/src/xhsc/UtilsApi.js.map +1 -0
- package/dist/esm/src/xhsc/XyPrissRunner.js +30 -2
- package/dist/esm/src/xhsc/XyPrissRunner.js.map +1 -1
- package/dist/esm/src/xhsc/fs/FSCore.js +148 -0
- package/dist/esm/src/xhsc/fs/FSCore.js.map +1 -1
- package/dist/esm/src/xhsc/fs/FileHandle.js +110 -0
- package/dist/esm/src/xhsc/fs/FileHandle.js.map +1 -0
- package/dist/esm/src/xhsc/ipc/XHSCDirectIPC.js +113 -0
- package/dist/esm/src/xhsc/ipc/XHSCDirectIPC.js.map +1 -0
- package/dist/esm/src/xhsc/utils/ArrayUtils.js +65 -0
- package/dist/esm/src/xhsc/utils/ArrayUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/AsyncUtils.js +580 -0
- package/dist/esm/src/xhsc/utils/AsyncUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/DateUtils.js +957 -0
- package/dist/esm/src/xhsc/utils/DateUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/FunctionUtils.js +27 -0
- package/dist/esm/src/xhsc/utils/FunctionUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/IdUtils.js +20 -0
- package/dist/esm/src/xhsc/utils/IdUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/NumberUtils.js +77 -0
- package/dist/esm/src/xhsc/utils/NumberUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/ObjectUtils.js +139 -0
- package/dist/esm/src/xhsc/utils/ObjectUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/StringUtils.js +143 -0
- package/dist/esm/src/xhsc/utils/StringUtils.js.map +1 -0
- package/dist/esm/src/xhsc/utils/ValidationUtils.js +47 -0
- package/dist/esm/src/xhsc/utils/ValidationUtils.js.map +1 -0
- package/dist/esm/src/xhsc.js +6 -5
- package/dist/esm/src/xhsc.js.map +1 -1
- package/dist/index.d.ts +1872 -234
- package/package.json +119 -137
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuiltInMiddleware.js","sources":["../../../../../src/middleware/built-in/BuiltInMiddleware.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;;;AAGG;MA8BU,iBAAiB,CAAA;AAC1B;;AAEG;AACH,IAAA,OAAO,MAAM,CAAC,OAAA,GAAwC,EAAE,EAAA;AACpD,QAAA,MAAM,cAAc,GAAiC;AACjD,YAAA,qBAAqB,EAAE;AACnB,gBAAA,UAAU,EAAE;oBACR,UAAU,EAAE,CAAC,QAAQ,CAAC;oBACtB,SAAS,EAAE,CAAC,QAAQ,CAAC;AACrB,oBAAA,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACvC,oBAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;oBAC3B,OAAO,EAAE,CAAC,QAAQ,CAAC;AACtB,iBAAA;AACJ,aAAA;AACD,YAAA,yBAAyB,EAAE,IAAI;AAC/B,YAAA,uBAAuB,EAAE,IAAI;AAC7B,YAAA,yBAAyB,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;AACpD,YAAA,kBAAkB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;AACpC,YAAA,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;AAC9B,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,IAAI,EAAE;AACF,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,iBAAiB,EAAE,IAAI;AACvB,gBAAA,OAAO,EAAE,KAAK;AACjB,aAAA;AACD,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,kBAAkB,EAAE,IAAI;AACxB,YAAA,4BAA4B,EAAE,KAAK;AACnC,YAAA,cAAc,EAAE,EAAE,MAAM,EAAE,iCAAiC,EAAE;AAC7D,YAAA,SAAS,EAAE,IAAI;SAClB;;AAGD,QAAA,IAAI,YAAY,GAAQ,EAAE,GAAG,cAAc,EAAE;;AAG7C,QAAA,IAAI,OAAO,CAAC,qBAAqB,KAAK,SAAS,EAAE;AAC7C,YAAA,IAAI,OAAO,CAAC,qBAAqB,KAAK,KAAK,EAAE;;AAEzC,gBAAA,YAAY,CAAC,qBAAqB,GAAG,KAAK;YAC9C;AAAO,iBAAA,IACH,OAAO,OAAO,CAAC,qBAAqB,KAAK,QAAQ;AACjD,gBAAA,OAAO,CAAC,qBAAqB,KAAK,IAAI,EACxC;gBACE,YAAY,CAAC,qBAAqB,GAAG;oBACjC,GAAI,cAAc,CAAC,qBAA6B;oBAChD,GAAG,OAAO,CAAC,qBAAqB;iBACnC;;AAGD,gBAAA,IAAI,OAAO,CAAC,qBAAqB,CAAC,UAAU,EAAE;;oBAE1C,MAAM,wBAAwB,GAAQ,EAAE;AACxC,oBAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CACrC,OAAO,CAAC,qBAAqB,CAAC,UAAU,CAC3C,EAAE;;wBAEC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAChD,MAAM,CAAC,WAAW,EAAE,CACvB;AACD,wBAAA,wBAAwB,CAAC,QAAQ,CAAC,GAAG,KAAK;oBAC9C;AAEA,oBAAA,YAAY,CAAC,qBAAqB,CAAC,UAAU,GAAG;;wBAE5C,GAAI,cAAc,CAAC;AACf,8BAAE,UAAU;;AAEhB,wBAAA,GAAG,wBAAwB;qBAC9B;gBACL;YACJ;QACJ;;QAGA,MAAM,EAAE,qBAAqB,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO;QAC1D,YAAY,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,YAAY,EAAE;AAEnD,QAAA,OAAO,MAAM,CAAC,YAAmB,CAAC;IACtC;AAEA;;;;;;;;;;AAUG;AACH,IAAA,OAAO,IAAI,CAAC,OAAA,GAAsC,EAAE,EAAA;AAChD,QAAA,MAAM,cAAc,GAAG;AACnB,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC;;;AAG1D,YAAA,WAAW,EAAE,KAAK;YAClB,MAAM,EAAE,KAAK;SAChB;;;;;;;QAQD,MAAM,MAAM,GAAQ,iBAAiB,CAAC,cAAc,EAAE,OAAc,CAAC;;;;;;QAOrE,MAAM,kBAAkB,GACpB,OAAO,IAAI,IAAI,IAAI,QAAQ,IAAK,OAAkB;QACtD,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,IAAI,CAAC,kBAAkB,EAAE;YACpD,MAAM,CAAC,MAAM,GAAG,CACZ,aAAiC,EACjC,QAA+D,KAC/D;AACA,gBAAA,QAAQ,CAAC,IAAI,EAAE,aAAa,IAAI,KAAK,CAAC;AAC1C,YAAA,CAAC;QACL;;;;AAMA,QAAA,MAAM,iBAAiB,GAAG,CAAC,KAAU,KAAwB;AACzD,YAAA,IAAI,CAAC,KAAK;AAAE,gBAAA,OAAO,SAAS;;YAG5B,IAAI,OAAO,KAAK,KAAK,QAAQ;AAAE,gBAAA,OAAO,KAAK;;AAG3C,YAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACtB,gBAAA,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B;;AAGA,YAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;AACxC,gBAAA,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC;AAEA,YAAA,OAAO,SAAS;AACpB,QAAA,CAAC;;AAGD,QAAA,IAAI,MAAM,CAAC,OAAO,EAAE;YAChB,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC;YACpD,IAAI,UAAU,EAAE;AACZ,gBAAA,MAAM,CAAC,OAAO,GAAG,UAAU;YAC/B;QACJ;;AAGA,QAAA,IAAI,MAAM,CAAC,cAAc,EAAE;YACvB,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC;YAC3D,IAAI,UAAU,EAAE;AACZ,gBAAA,MAAM,CAAC,cAAc,GAAG,UAAU;YACtC;QACJ;;AAGA,QAAA,IAAI,MAAM,CAAC,cAAc,EAAE;YACvB,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,cAAc,CAAC;YAC3D,IAAI,UAAU,EAAE;AACZ,gBAAA,MAAM,CAAC,cAAc,GAAG,UAAU;YACtC;QACJ;;QAGA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YAC9B,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CACrC,CAAC,MAAW,KACR,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,YAAY,MAAM,CAC7D;AAED,YAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC;YACnE;QACJ;AAEA,QAAA,
|
|
1
|
+
{"version":3,"file":"BuiltInMiddleware.js","sources":["../../../../../src/middleware/built-in/BuiltInMiddleware.ts"],"sourcesContent":[null],"names":["cors","hpp"],"mappings":"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"}
|
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
import { UriNormalizer } from './UriNormalizer.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @module HoneypotTarpit
|
|
5
|
+
* @version 2.0.0
|
|
6
|
+
*
|
|
7
|
+
* A hardened, zero-false-positive honeypot tarpit designed to instantly identify
|
|
8
|
+
* and neutralize connections from malicious bots, vulnerability scanners, and
|
|
9
|
+
* automated exploit frameworks (e.g. Shodan crawlers, Nuclei, WPScan, Metasploit).
|
|
10
|
+
*
|
|
11
|
+
* ### Architecture
|
|
12
|
+
* Detection is performed in a layered pipeline, ordered from cheapest to most
|
|
13
|
+
* specific, so the most common attacks are rejected at the very first check:
|
|
14
|
+
*
|
|
15
|
+
* ```
|
|
16
|
+
* raw path
|
|
17
|
+
* │
|
|
18
|
+
* ▼
|
|
19
|
+
* [1] sanitizeInput() — rejects null / non-string / oversized paths
|
|
20
|
+
* │
|
|
21
|
+
* ▼
|
|
22
|
+
* [2] normalizePath() — decodes percent-encoding, collapses traversal
|
|
23
|
+
* sequences, removes redundant slashes
|
|
24
|
+
* │
|
|
25
|
+
* ▼
|
|
26
|
+
* [3] matchesExactTrap() — O(1) Set lookup for highest-confidence paths
|
|
27
|
+
* │
|
|
28
|
+
* ▼
|
|
29
|
+
* [4] matchesPrefixTrap() — catches sub-paths under sensitive directories
|
|
30
|
+
* │
|
|
31
|
+
* ▼
|
|
32
|
+
* [5] matchesSuffixTrap() — catches files by dangerous extension
|
|
33
|
+
* │
|
|
34
|
+
* ▼
|
|
35
|
+
* [6] matchesSegmentTrap() — catches scanner-specific path segments
|
|
36
|
+
* │
|
|
37
|
+
* ▼
|
|
38
|
+
* result → true (trap) | false (safe)
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* ### Design Principles
|
|
42
|
+
* - **Zero false positives**: every rule targets patterns that are *never* used
|
|
43
|
+
* by legitimate production applications. Generic extensions like `.php` are
|
|
44
|
+
* intentionally excluded; only high-signal, context-specific signatures are used.
|
|
45
|
+
* - **Bypass resistance**: the normalizer resolves URL encoding, path traversal
|
|
46
|
+
* (`../`), and duplicate slashes before any rule is evaluated.
|
|
47
|
+
* - **O(1) hot path**: the most common scanner payloads hit a `Set` lookup and
|
|
48
|
+
* return immediately with no iteration cost.
|
|
49
|
+
* - **No public surface expansion**: all detection helpers are `private static`,
|
|
50
|
+
* keeping the public API surface identical to v1.
|
|
51
|
+
*
|
|
52
|
+
* ### Security Benefits
|
|
53
|
+
* - Bypasses all expensive application routing, regex matching, and payload parsing.
|
|
54
|
+
* - Responds with a bare 403 before any middleware, session, or DB code runs.
|
|
55
|
+
* - Saves server CPU and Node.js event-loop headroom under automated attack.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* // Middleware usage (Express / Fastify raw handler)
|
|
60
|
+
* app.use((req, res, next) => {
|
|
61
|
+
* if (HoneypotTarpit.isTrap(req.url)) {
|
|
62
|
+
* return HoneypotTarpit.handleTrap(req, res);
|
|
63
|
+
* }
|
|
64
|
+
* next();
|
|
65
|
+
* });
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
class HoneypotTarpit {
|
|
69
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
70
|
+
// Public API
|
|
71
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
72
|
+
/**
|
|
73
|
+
* Determines whether a raw URI path matches any known honeypot trap signature.
|
|
74
|
+
*
|
|
75
|
+
* The method is intentionally **stateless and synchronous** to guarantee
|
|
76
|
+
* sub-millisecond latency even under high-volume scanner floods. It applies
|
|
77
|
+
* a four-stage pipeline internally (see module-level docs) and returns as
|
|
78
|
+
* soon as the first positive match is found.
|
|
79
|
+
*
|
|
80
|
+
* #### False-positive safeguards
|
|
81
|
+
* - Input is sanitized and validated before any rule is evaluated.
|
|
82
|
+
* - Path normalization resolves all encoding tricks before matching.
|
|
83
|
+
* - All rules are scoped to patterns that are unambiguously malicious.
|
|
84
|
+
* - Broad wildcard rules (e.g. "all `.php` files") are deliberately absent.
|
|
85
|
+
*
|
|
86
|
+
* @param {string} rawPath - The raw, un-normalized URI path from the incoming
|
|
87
|
+
* request (e.g. `req.url` in Node.js `http.IncomingMessage`). Query strings
|
|
88
|
+
* and fragments are accepted but stripped before evaluation.
|
|
89
|
+
* @returns {boolean} `true` if the path matches a trap and the request should
|
|
90
|
+
* be handed to {@link handleTrap}; `false` if the path appears legitimate.
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```typescript
|
|
94
|
+
* HoneypotTarpit.isTrap("/.env"); // true
|
|
95
|
+
* HoneypotTarpit.isTrap("/.env%2elocal"); // true (encoded bypass)
|
|
96
|
+
* HoneypotTarpit.isTrap("/api/v1/users"); // false
|
|
97
|
+
* HoneypotTarpit.isTrap("/assets/logo.png"); // false
|
|
98
|
+
* HoneypotTarpit.isTrap("/../.env"); // true (traversal bypass)
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
static isTrap(rawPath) {
|
|
102
|
+
if (!HoneypotTarpit.sanitizeInput(rawPath)) {
|
|
103
|
+
// Malformed or oversized paths are themselves a signal of probing.
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
const pathPart = rawPath.split(/[?#]/)[0];
|
|
107
|
+
const normalized = UriNormalizer.normalizePath(pathPart).toLowerCase();
|
|
108
|
+
return (HoneypotTarpit.matchesExactTrap(normalized) ||
|
|
109
|
+
HoneypotTarpit.matchesPrefixTrap(normalized) ||
|
|
110
|
+
HoneypotTarpit.matchesSuffixTrap(normalized) ||
|
|
111
|
+
HoneypotTarpit.matchesSegmentTrap(normalized));
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Sends a minimal HTTP 403 Forbidden response and terminates the connection.
|
|
115
|
+
*
|
|
116
|
+
* The response is intentionally bare — no body, no `Content-Type`, no
|
|
117
|
+
* application-level headers — to minimize bandwidth consumption and avoid
|
|
118
|
+
* leaking server fingerprint information to the scanner.
|
|
119
|
+
*
|
|
120
|
+
* #### Why 403 and not a socket destroy?
|
|
121
|
+
* Destroying the raw socket (`req.socket.destroy()`) is tempting but unsafe
|
|
122
|
+
* when the Node.js process sits behind a reverse proxy (nginx, Caddy, HAProxy)
|
|
123
|
+
* or uses keep-alive connection pooling, because the socket may be shared
|
|
124
|
+
* across multiple logical HTTP requests. A 403 + `res.end()` correctly closes
|
|
125
|
+
* only the current HTTP transaction without disrupting the underlying TCP
|
|
126
|
+
* connection pool.
|
|
127
|
+
*
|
|
128
|
+
* @param {object} req - The raw incoming request object. Compatible with
|
|
129
|
+
* `http.IncomingMessage`, `Http2ServerRequest`, and Fastify/Express
|
|
130
|
+
* request wrappers. Not used directly but accepted for API symmetry and
|
|
131
|
+
* future extensibility (e.g. logging, rate-limiting by IP).
|
|
132
|
+
* @param {object} res - The raw outgoing response object. Must expose
|
|
133
|
+
* `writeHead(statusCode: number): void` and `end(): void`. Compatible
|
|
134
|
+
* with `http.ServerResponse`, `Http2ServerResponse`, and most framework
|
|
135
|
+
* response wrappers.
|
|
136
|
+
* @returns {void}
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* app.use((req, res, next) => {
|
|
141
|
+
* if (HoneypotTarpit.isTrap(req.url)) {
|
|
142
|
+
* return HoneypotTarpit.handleTrap(req, res);
|
|
143
|
+
* }
|
|
144
|
+
* next();
|
|
145
|
+
* });
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
static handleTrap(req, res) {
|
|
149
|
+
try {
|
|
150
|
+
if (typeof res.writeHead === "function") {
|
|
151
|
+
res.writeHead(403);
|
|
152
|
+
}
|
|
153
|
+
if (typeof res.end === "function") {
|
|
154
|
+
res.end();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// Failsafe: swallow all errors — the goal is merely to drop the
|
|
159
|
+
// connection. Any exception here means the socket is already gone.
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
163
|
+
// Private — Input Validation
|
|
164
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
165
|
+
/**
|
|
166
|
+
* Validates that the raw path is a non-empty string within the accepted
|
|
167
|
+
* length budget.
|
|
168
|
+
*
|
|
169
|
+
* Paths that fail this check (wrong type, empty, or suspiciously long) are
|
|
170
|
+
* themselves indicators of malicious probing and should be treated as traps
|
|
171
|
+
* by the caller.
|
|
172
|
+
*
|
|
173
|
+
* @param {unknown} value - The raw value received from the request object.
|
|
174
|
+
* @returns {boolean} `true` if the value is a safe, processable string;
|
|
175
|
+
* `false` if it should be rejected immediately.
|
|
176
|
+
*
|
|
177
|
+
* @internal
|
|
178
|
+
*/
|
|
179
|
+
static sanitizeInput(value) {
|
|
180
|
+
return (typeof value === "string" &&
|
|
181
|
+
value.length > 0 &&
|
|
182
|
+
value.length <= HoneypotTarpit.MAX_PATH_LENGTH);
|
|
183
|
+
}
|
|
184
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
185
|
+
// Private — Match Layers
|
|
186
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
187
|
+
/**
|
|
188
|
+
* Layer 1 — Exact path match.
|
|
189
|
+
*
|
|
190
|
+
* Performs an O(1) `Set` lookup against {@link EXACT_TRAPS}. This is the
|
|
191
|
+
* most performant check and handles the vast majority of scanner probes,
|
|
192
|
+
* which tend to request well-known canonical paths verbatim.
|
|
193
|
+
*
|
|
194
|
+
* @param {string} normalizedPath - The fully normalized, lowercase path.
|
|
195
|
+
* @returns {boolean} `true` if the path is an exact trap match.
|
|
196
|
+
*
|
|
197
|
+
* @internal
|
|
198
|
+
*/
|
|
199
|
+
static matchesExactTrap(normalizedPath) {
|
|
200
|
+
return HoneypotTarpit.EXACT_TRAPS.has(normalizedPath);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Layer 2 — Directory prefix match.
|
|
204
|
+
*
|
|
205
|
+
* Tests whether the normalized path starts with any entry from
|
|
206
|
+
* {@link PREFIX_TRAPS}. This catches requests for any sub-resource within
|
|
207
|
+
* a sensitive directory (e.g. `/.git/logs/HEAD`, `/.ssh/known_hosts`).
|
|
208
|
+
*
|
|
209
|
+
* Each prefix entry is stored with a trailing `/` to prevent false positives
|
|
210
|
+
* from partial name collisions (e.g. `/.gitignore` must not match the
|
|
211
|
+
* `/.git/` prefix).
|
|
212
|
+
*
|
|
213
|
+
* @param {string} normalizedPath - The fully normalized, lowercase path.
|
|
214
|
+
* @returns {boolean} `true` if the path falls under a trapped directory.
|
|
215
|
+
*
|
|
216
|
+
* @internal
|
|
217
|
+
*/
|
|
218
|
+
static matchesPrefixTrap(normalizedPath) {
|
|
219
|
+
for (const prefix of HoneypotTarpit.PREFIX_TRAPS) {
|
|
220
|
+
if (normalizedPath.startsWith(prefix)) {
|
|
221
|
+
return true;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Layer 3 — File extension (suffix) match.
|
|
228
|
+
*
|
|
229
|
+
* Extracts the file extension from the final path segment and checks it
|
|
230
|
+
* against {@link SUFFIX_TRAPS}. Only the extension of the *filename* is
|
|
231
|
+
* considered; directory components are ignored to prevent collisions like
|
|
232
|
+
* `/certs-info/page` matching `.certs`.
|
|
233
|
+
*
|
|
234
|
+
* The comparison is performed on the already-lowercased normalized path,
|
|
235
|
+
* so no additional case folding is required here.
|
|
236
|
+
*
|
|
237
|
+
* @param {string} normalizedPath - The fully normalized, lowercase path.
|
|
238
|
+
* @returns {boolean} `true` if the file extension is a known trap extension.
|
|
239
|
+
*
|
|
240
|
+
* @internal
|
|
241
|
+
*/
|
|
242
|
+
static matchesSuffixTrap(normalizedPath) {
|
|
243
|
+
const lastSegment = normalizedPath.split("/").pop() ?? "";
|
|
244
|
+
const dotIndex = lastSegment.lastIndexOf(".");
|
|
245
|
+
if (dotIndex === -1) {
|
|
246
|
+
return false; // No extension present.
|
|
247
|
+
}
|
|
248
|
+
const extension = lastSegment.slice(dotIndex); // e.g. ".pem"
|
|
249
|
+
return HoneypotTarpit.SUFFIX_TRAPS.has(extension);
|
|
250
|
+
}
|
|
251
|
+
/**
|
|
252
|
+
* Layer 4 — Path segment match.
|
|
253
|
+
*
|
|
254
|
+
* Splits the normalized path into discrete segments and checks each one
|
|
255
|
+
* against {@link SEGMENT_TRAPS}. This catches scanner payloads embedded
|
|
256
|
+
* at arbitrary depths (e.g. `/api/v2/actuator`, `/proxy/wp-login.php`).
|
|
257
|
+
*
|
|
258
|
+
* Matching on full segments (rather than substrings) prevents false positives
|
|
259
|
+
* such as `/administration` matching a rule for `admin`.
|
|
260
|
+
*
|
|
261
|
+
* @param {string} normalizedPath - The fully normalized, lowercase path.
|
|
262
|
+
* @returns {boolean} `true` if any path segment matches a known trap segment.
|
|
263
|
+
*
|
|
264
|
+
* @internal
|
|
265
|
+
*/
|
|
266
|
+
static matchesSegmentTrap(normalizedPath) {
|
|
267
|
+
const segments = normalizedPath.split("/").filter(Boolean);
|
|
268
|
+
for (const segment of segments) {
|
|
269
|
+
if (HoneypotTarpit.SEGMENT_TRAPS.has(segment)) {
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return false;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
277
|
+
// Constants
|
|
278
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
279
|
+
/**
|
|
280
|
+
* Maximum accepted path length (bytes).
|
|
281
|
+
* Paths exceeding this length are treated as traps to neutralize buffer-probing
|
|
282
|
+
* attacks before any string processing occurs.
|
|
283
|
+
*
|
|
284
|
+
* @internal
|
|
285
|
+
*/
|
|
286
|
+
HoneypotTarpit.MAX_PATH_LENGTH = 2048;
|
|
287
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
288
|
+
// Trap Signatures — Exact Paths
|
|
289
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
290
|
+
/**
|
|
291
|
+
* High-confidence exact paths that are **never** legitimate in any modern
|
|
292
|
+
* web application. All entries are lowercase; comparison is performed against
|
|
293
|
+
* a lowercased, normalized path.
|
|
294
|
+
*
|
|
295
|
+
* Sources: OWASP Top-10 scanner payloads, Shodan query signatures,
|
|
296
|
+
* Nuclei template library, Metasploit auxiliary scanner modules.
|
|
297
|
+
*
|
|
298
|
+
* @internal
|
|
299
|
+
*/
|
|
300
|
+
HoneypotTarpit.EXACT_TRAPS = new Set([
|
|
301
|
+
// ── Credentials & Secrets ─────────────────────────────────────────
|
|
302
|
+
"/.env",
|
|
303
|
+
"/.env.local",
|
|
304
|
+
"/.env.production",
|
|
305
|
+
"/.env.staging",
|
|
306
|
+
"/.env.development",
|
|
307
|
+
"/.env.test",
|
|
308
|
+
"/.env.backup",
|
|
309
|
+
"/.env.bak",
|
|
310
|
+
"/.env.old",
|
|
311
|
+
"/.env.orig",
|
|
312
|
+
"/.env.example", // may contain real secrets in misconfigured repos
|
|
313
|
+
"/.aws/credentials",
|
|
314
|
+
"/.aws/config",
|
|
315
|
+
"/.ssh/id_rsa",
|
|
316
|
+
"/.ssh/id_dsa",
|
|
317
|
+
"/.ssh/id_ecdsa",
|
|
318
|
+
"/.ssh/id_ed25519",
|
|
319
|
+
"/.ssh/authorized_keys",
|
|
320
|
+
"/.ssh/known_hosts",
|
|
321
|
+
"/.netrc",
|
|
322
|
+
"/.htpasswd",
|
|
323
|
+
"/.pgpass",
|
|
324
|
+
// ── Git / Version Control ─────────────────────────────────────────
|
|
325
|
+
"/.git",
|
|
326
|
+
"/.git/config",
|
|
327
|
+
"/.git/head",
|
|
328
|
+
"/.git/index",
|
|
329
|
+
"/.git/packed-refs",
|
|
330
|
+
"/.git/refs/heads/main",
|
|
331
|
+
"/.git/refs/heads/master",
|
|
332
|
+
"/.gitconfig",
|
|
333
|
+
"/.svn/entries",
|
|
334
|
+
"/.hg/hgrc",
|
|
335
|
+
// ── Cloud & Infrastructure Config ─────────────────────────────────
|
|
336
|
+
"/docker-compose.yml",
|
|
337
|
+
"/docker-compose.yaml",
|
|
338
|
+
"/.dockerenv",
|
|
339
|
+
"/dockerfile",
|
|
340
|
+
"/kubernetes.yml",
|
|
341
|
+
"/k8s.yml",
|
|
342
|
+
"/terraform.tfvars",
|
|
343
|
+
"/.terraform/terraform.tfstate",
|
|
344
|
+
// ── Application Config Files ──────────────────────────────────────
|
|
345
|
+
"/config.json",
|
|
346
|
+
"/config.yml",
|
|
347
|
+
"/config.yaml",
|
|
348
|
+
"/settings.json",
|
|
349
|
+
"/appsettings.json",
|
|
350
|
+
"/appsettings.production.json",
|
|
351
|
+
"/web.config",
|
|
352
|
+
"/app.config",
|
|
353
|
+
"/database.yml",
|
|
354
|
+
"/secrets.yml",
|
|
355
|
+
// ── Dependency & Build Artefacts ──────────────────────────────────
|
|
356
|
+
"/composer.lock",
|
|
357
|
+
"/composer.json",
|
|
358
|
+
"/package.json",
|
|
359
|
+
"/package-lock.json",
|
|
360
|
+
"/yarn.lock",
|
|
361
|
+
"/gemfile.lock",
|
|
362
|
+
"/pipfile.lock",
|
|
363
|
+
"/poetry.lock",
|
|
364
|
+
"/cargo.lock",
|
|
365
|
+
"/go.sum",
|
|
366
|
+
// ── IDE & Editor Files ────────────────────────────────────────────
|
|
367
|
+
"/.vscode/sftp.json",
|
|
368
|
+
"/.vscode/launch.json",
|
|
369
|
+
"/.idea/dataSources.xml",
|
|
370
|
+
"/.idea/workspace.xml",
|
|
371
|
+
// ── PHP / WordPress ───────────────────────────────────────────────
|
|
372
|
+
"/wp-login.php",
|
|
373
|
+
"/wp-admin",
|
|
374
|
+
"/wp-config.php",
|
|
375
|
+
"/wp-config.php.bak",
|
|
376
|
+
"/wp-config.php.orig",
|
|
377
|
+
"/wp-config.php.save",
|
|
378
|
+
"/wp-config-sample.php",
|
|
379
|
+
"/xmlrpc.php",
|
|
380
|
+
"/phpinfo.php",
|
|
381
|
+
"/php.ini",
|
|
382
|
+
"/php-fpm.conf",
|
|
383
|
+
// ── Spring Boot / Java Actuator ───────────────────────────────────
|
|
384
|
+
"/actuator",
|
|
385
|
+
"/actuator/env",
|
|
386
|
+
"/actuator/health",
|
|
387
|
+
"/actuator/info",
|
|
388
|
+
"/actuator/mappings",
|
|
389
|
+
"/actuator/beans",
|
|
390
|
+
"/actuator/configprops",
|
|
391
|
+
"/actuator/dump",
|
|
392
|
+
"/actuator/shutdown",
|
|
393
|
+
"/env", // standalone Spring env endpoint
|
|
394
|
+
"/heapdump",
|
|
395
|
+
"/trace",
|
|
396
|
+
// ── Common CMS / Admin Panels ─────────────────────────────────────
|
|
397
|
+
"/admin",
|
|
398
|
+
"/administrator",
|
|
399
|
+
"/phpmyadmin",
|
|
400
|
+
"/pma",
|
|
401
|
+
"/adminer",
|
|
402
|
+
"/adminer.php",
|
|
403
|
+
"/typo3",
|
|
404
|
+
"/joomla",
|
|
405
|
+
"/drupal",
|
|
406
|
+
"/magento",
|
|
407
|
+
"/manager/html", // Tomcat manager
|
|
408
|
+
// ── macOS / OS Artefacts ──────────────────────────────────────────
|
|
409
|
+
"/.ds_store",
|
|
410
|
+
"/thumbs.db",
|
|
411
|
+
"/desktop.ini",
|
|
412
|
+
// ── Backup & Dump Files ───────────────────────────────────────────
|
|
413
|
+
"/backup.sql",
|
|
414
|
+
"/dump.sql",
|
|
415
|
+
"/database.sql",
|
|
416
|
+
"/db.sql",
|
|
417
|
+
"/backup.zip",
|
|
418
|
+
"/backup.tar.gz",
|
|
419
|
+
"/www.zip",
|
|
420
|
+
"/site.tar.gz",
|
|
421
|
+
]);
|
|
422
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
423
|
+
// Trap Signatures — Directory Prefixes
|
|
424
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
425
|
+
/**
|
|
426
|
+
* Path prefixes whose entire subtree should be considered traps.
|
|
427
|
+
* A request for `/.git/logs/HEAD` is just as dangerous as one for `/.git/config`.
|
|
428
|
+
*
|
|
429
|
+
* Rules are matched with a trailing-slash anchor to avoid collisions
|
|
430
|
+
* (e.g. `/.gitignore` must **not** match the `/.git/` prefix rule).
|
|
431
|
+
*
|
|
432
|
+
* @internal
|
|
433
|
+
*/
|
|
434
|
+
HoneypotTarpit.PREFIX_TRAPS = new Set([
|
|
435
|
+
"/.git/",
|
|
436
|
+
"/.svn/",
|
|
437
|
+
"/.hg/",
|
|
438
|
+
"/.ssh/",
|
|
439
|
+
"/.aws/",
|
|
440
|
+
"/.vscode/",
|
|
441
|
+
"/.idea/",
|
|
442
|
+
"/wp-includes/",
|
|
443
|
+
"/wp-content/plugins/",
|
|
444
|
+
"/wp-admin/",
|
|
445
|
+
"/actuator/",
|
|
446
|
+
"/proc/", // Linux /proc LFI attempts
|
|
447
|
+
"/etc/", // /etc/passwd, /etc/shadow LFI attempts
|
|
448
|
+
"/var/log/", // log file LFI
|
|
449
|
+
]);
|
|
450
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
451
|
+
// Trap Signatures — File Extensions
|
|
452
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
453
|
+
/**
|
|
454
|
+
* File extensions that are exclusively associated with scanner probes or
|
|
455
|
+
* sensitive file types that should **never** be served over HTTP in any
|
|
456
|
+
* legitimate modern application.
|
|
457
|
+
*
|
|
458
|
+
* Deliberately conservative — common extensions like `.php`, `.bak`, or
|
|
459
|
+
* `.log` are excluded because they *may* be intentionally served by some
|
|
460
|
+
* apps. Only zero-ambiguity extensions are listed here.
|
|
461
|
+
*
|
|
462
|
+
* @internal
|
|
463
|
+
*/
|
|
464
|
+
HoneypotTarpit.SUFFIX_TRAPS = new Set([
|
|
465
|
+
".pem", // TLS private keys / certificates
|
|
466
|
+
".p12", // PKCS#12 keystores
|
|
467
|
+
".pfx", // Personal Information Exchange (Windows keystore)
|
|
468
|
+
".key", // Generic private keys
|
|
469
|
+
".crt", // X.509 certificates (when accessed directly)
|
|
470
|
+
".cer", // Alternative certificate extension
|
|
471
|
+
".jks", // Java KeyStore
|
|
472
|
+
".id_rsa", // SSH private key variants with compound extensions
|
|
473
|
+
".htaccess", // Apache access control — never a user-facing resource
|
|
474
|
+
".htpasswd", // Apache password file
|
|
475
|
+
".DS_Store", // macOS metadata (case-normalised before comparison)
|
|
476
|
+
".tfstate", // Terraform state (may contain secrets)
|
|
477
|
+
".tfvars", // Terraform variable files (often contain secrets)
|
|
478
|
+
]);
|
|
479
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
480
|
+
// Trap Signatures — Path Segments
|
|
481
|
+
// ─────────────────────────────────────────────────────────────────────────
|
|
482
|
+
/**
|
|
483
|
+
* Discrete path segments (surrounded by `/` boundaries or at string edges)
|
|
484
|
+
* that indicate well-known scanner probes regardless of their position in
|
|
485
|
+
* the path hierarchy.
|
|
486
|
+
*
|
|
487
|
+
* Each entry is matched as a full segment to prevent substring collisions
|
|
488
|
+
* (e.g. `"admin"` must not trap `/admin-panel` but must trap `/api/admin`).
|
|
489
|
+
*
|
|
490
|
+
* @internal
|
|
491
|
+
*/
|
|
492
|
+
HoneypotTarpit.SEGMENT_TRAPS = new Set([
|
|
493
|
+
"phpmyadmin",
|
|
494
|
+
"pma",
|
|
495
|
+
"adminer",
|
|
496
|
+
"wp-login.php",
|
|
497
|
+
"xmlrpc.php",
|
|
498
|
+
"phpinfo.php",
|
|
499
|
+
".env",
|
|
500
|
+
".git",
|
|
501
|
+
".svn",
|
|
502
|
+
".hg",
|
|
503
|
+
"actuator",
|
|
504
|
+
"heapdump",
|
|
505
|
+
]);
|
|
506
|
+
|
|
507
|
+
export { HoneypotTarpit };
|
|
508
|
+
//# sourceMappingURL=HoneypotTarpit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HoneypotTarpit.js","sources":["../../../../../../src/middleware/built-in/security/HoneypotTarpit.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|