From bcff2156bbc70a827a2bf8560e9e1124f9e8b820 Mon Sep 17 00:00:00 2001 From: yuriiShmal Date: Thu, 12 Mar 2026 00:18:44 +0000 Subject: [PATCH 1/6] Installed and ran snyk. Output in txt file. --- test_results/snyk_testing_results.txt | 1316 +++++++++++++++++++++++++ 1 file changed, 1316 insertions(+) create mode 100644 test_results/snyk_testing_results.txt diff --git a/test_results/snyk_testing_results.txt b/test_results/snyk_testing_results.txt new file mode 100644 index 0000000000..795dcb748d --- /dev/null +++ b/test_results/snyk_testing_results.txt @@ -0,0 +1,1316 @@ +node ➜ /workspaces/nodebb-spring-26-clean-code (test-snyk) $ snyk code test --org=0f32a4e6-7d4e-46c7-b1f2-53a4ceb27745 + +Testing /workspaces/nodebb-spring-26-clean-code ... + +Open Issues + + ✗ [LOW] Sensitive Cookie in HTTPS Session Without 'Secure' Attribute + Finding ID: 06577045-3e35-4708-a717-17e41da96cc4 + Path: src/webserver.js, line 178 + Info: Cookie misses the Secure attribute (it is false by default). Set it to true to protect the cookie from man-in-the-middle attacks. + + ✗ [LOW] Improper Type Validation + Finding ID: 379824d1-43bf-4664-9b51-5e15f925645f + Path: src/controllers/well-known.js, line 21 + Info: The type of this object, coming from query and the value of its slice property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: 79ed9c53-3398-4dfc-9b4e-a1353811ec56 + Path: src/controllers/well-known.js, line 21 + Info: The type of this object, coming from query and the value of its length property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: df888ed9-7fcb-4eeb-9806-2af85268f27a + Path: src/middleware/assert.js, line 92 + Info: The type of this object, coming from body and the value of its slice property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: 32421233-f894-4cad-86e3-38bb3fac8bfc + Path: src/middleware/assert.js, line 111 + Info: The type of this object, coming from body and the value of its trim property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: e4ab4b9e-5af8-4f1d-bb80-af7c4d1c2e9f + Path: src/controllers/authentication.js, line 105 + Info: The type of this object, coming from body and the value of its length property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: 0592c00c-b94e-441b-8ea3-d1320708be58 + Path: src/controllers/write/users.js, line 204 + Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: c0692103-480b-4618-a425-c6619cf5d619 + Path: src/image.js, line 148 + Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: edd8fd22-a77b-4217-9e83-e9f727e14646 + Path: src/posts/uploads.js, line 23 + Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: d426097f-b4d2-436a-af90-6fafe826983b + Path: src/upgrades/1.10.0/hash_recent_ip_addresses.js, line 26 + Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: c48c0537-6dfe-4603-8fb4-55acaeac6029 + Path: src/upgrades/1.19.3/fix_user_uploads_zset.js, line 8 + Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: 3327bbb8-33f1-4357-991f-60a25809e5cb + Path: src/upgrades/1.19.3/rename_post_upload_hashes.js, line 10 + Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: 24b1fbaf-75a0-4862-a6b7-86a3e1174545 + Path: src/upgrades/1.6.0/clear-stale-digest-template.js, line 16 + Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: a033b18f-0e41-43a0-8acb-b93ccac0b934 + Path: src/upgrades/4.3.0/normalize_thumbs_uploads.js, line 28 + Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: 5007a14f-a213-4fb9-8896-e9df0dee0672 + Path: src/user/uploads.js, line 13 + Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: 0eeec5d0-9981-4cce-ad86-abfdc4349395 + Path: src/upgrades/1.19.3/rename_post_upload_hashes.js, line 41 + Info: MD5 hash (used in md5) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: 41a4ca15-0f72-4415-8960-575351367bfd + Path: src/upgrades/1.19.3/rename_post_upload_hashes.js, line 42 + Info: MD5 hash (used in md5) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: 42d73fd5-d783-4288-b88d-fc8482f3cd0f + Path: test/posts/uploads.js, line 136 + Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Use of Password Hash With Insufficient Computational Effort + Finding ID: 497baca1-9aa0-4606-a21e-d47c89099bca + Path: test/user/uploads.js, line 17 + Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. + + ✗ [LOW] Insecure TLS Configuration + Finding ID: 7709e779-2d87-40cb-a276-ca07e6742032 + Path: test/socket.io.js, line 6 + Info: Setting the 'NODE_TLS_REJECT_UNAUTHORIZED' to '0' makes TLS connections and HTTPS requests insecure. + + ✗ [LOW] Insufficient postMessage Validation + Finding ID: 7f92a835-54dd-4231-bc93-738263eefe3e + Path: public/src/app.js, line 359 + Info: The origin of the received message is not checked. This means any site (even malicious) can send message to this window. If you don't expect this, consider checking the origin of sender. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: a6efa4d2-8172-489f-acdd-675e8f8c4911 + Path: test/authentication.js, line 30 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 32d0a91b-76b2-423a-980c-bf13c7771cee + Path: test/authentication.js, line 53 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: aff0af49-1d43-458c-b6c8-420aa82df676 + Path: test/authentication.js, line 105 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 987b4096-3479-4406-887f-dba0c48e8a12 + Path: test/authentication.js, line 276 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 4ba8ee98-e511-46dc-bfb4-30f18953a40f + Path: test/authentication.js, line 340 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: e99e1031-2305-4935-a040-53fcc359dcdc + Path: test/authentication.js, line 350 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 7977e6ce-b1ac-4486-b6f1-97e6033613a7 + Path: test/authentication.js, line 359 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 43294f80-079f-4985-b043-97ca7764c1e9 + Path: test/authentication.js, line 360 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 1bfc4c93-983f-44a5-a291-310872409b66 + Path: test/authentication.js, line 385 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 05e0f5e6-abf2-4c0f-8acf-db5857ba292b + Path: test/controllers-admin.js, line 39 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 8469d170-a7fe-4c81-bd9f-5f6c533f45b2 + Path: test/controllers-admin.js, line 45 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 790eaa2c-fb91-46b1-9174-38636d33ba08 + Path: test/flags.js, line 41 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 71f6d8f9-ac25-451b-8f5c-806f6a52f14f + Path: test/flags.js, line 43 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: d1bd9a35-5db9-48e6-8edc-b90f4b5427b0 + Path: test/flags.js, line 57 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 03677171-5e1c-4cfa-805b-afc6c1cf02e5 + Path: test/flags.js, line 61 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: dd9d565e-2b38-4dce-9309-16b40c61ea9d + Path: test/flags.js, line 1061 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 7570e9fb-a7a6-4d5e-8182-80f082c5acc3 + Path: test/flags.js, line 1064 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: ce221561-e7fa-4c77-9d72-b9c4c6bc91f9 + Path: test/messaging.js, line 59 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 0adbed38-aafe-4a9b-80eb-62951166616b + Path: test/messaging.js, line 60 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 4ce0c7f5-ecf6-497e-9de7-90f6ab0ae085 + Path: test/meta.js, line 24 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 88232b0e-27b9-44c6-b4ed-a02754faf068 + Path: test/meta.js, line 25 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 877b5d14-f57c-4d4f-80ef-9df6663cf05f + Path: test/post-answer.js, line 37 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: b3dbe5f9-93c0-429d-8bb7-1c2d47236689 + Path: test/posts.js, line 39 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 368c649c-88ac-4755-ac07-93cd04a0101b + Path: test/posts/uploads.js, line 38 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 143eaf9b-acea-459a-9320-eed49689adae + Path: test/posts/uploads.js, line 321 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 70b3d552-0afa-4359-94e9-55b00987244e + Path: test/socket.io.js, line 34 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: b523fed5-360b-41ec-9956-d00901516185 + Path: test/socket.io.js, line 35 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 0f9d2d3a-bde3-456a-a5cf-13ab0874a981 + Path: test/socket.io.js, line 702 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: d47af60f-d6c0-43ec-b791-a4fa5870a2f3 + Path: test/uploads.js, line 50 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 89fde2f3-743d-410b-a465-5c87ac3dfa0c + Path: test/uploads.js, line 53 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 5688e9b7-d18f-4725-800f-d05f3789c3af + Path: test/user.js, line 65 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 8fa82a4a-fd98-41e1-8131-20fc3bbc9d75 + Path: test/user.js, line 838 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 070bfbce-e394-42b6-808c-d27b4c8e32bf + Path: test/user.js, line 849 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 709940eb-9e32-46ac-89d4-93d9edef859b + Path: test/user.js, line 861 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 4ad2d6c2-f079-4954-b30b-dbc6f1f24a55 + Path: test/user.js, line 871 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: b708c954-889d-45f6-969f-f167b8adcb20 + Path: test/user.js, line 1600 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: bbea5301-1b9a-4e2b-b1d4-6a3ceae35c32 + Path: test/user.js, line 1652 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 13ee28db-2f96-4dce-b651-e91fec63c7a8 + Path: test/user/emails.js, line 146 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 661cc2c0-ff62-4167-a1ef-c381989a5845 + Path: test/user/emails.js, line 153 + Info: Do not hardcode passwords in code. Found hardcoded password used in password. + + ✗ [LOW] Improper Type Validation + Finding ID: 2e50137f-6ba5-4948-8ddf-c0dcd7a1da33 + Path: src/controllers/authentication.js, line 97 + Info: The type of this object, coming from body and the value of its length property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 16a5e1d2-8469-46bc-827e-1cc7e2eed9f5 + Path: test/user.js, line 820 + Info: Do not hardcode passwords in code. Found hardcoded password used in newPassword. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 9b5be12a-f6c5-446a-a5a0-0b0b30734704 + Path: test/user.js, line 841 + Info: Do not hardcode passwords in code. Found hardcoded password used in newPassword. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: b137cfd6-5aeb-46b2-a542-bce885afa10b + Path: test/user.js, line 853 + Info: Do not hardcode passwords in code. Found hardcoded password used in newPassword. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 17a9c876-8f19-4d20-832a-6feec2d76284 + Path: test/user.js, line 865 + Info: Do not hardcode passwords in code. Found hardcoded password used in newPassword. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 04e65646-dd23-4693-ab54-faaeba6beae7 + Path: test/user.js, line 875 + Info: Do not hardcode passwords in code. Found hardcoded password used in newPassword. + + ✗ [LOW] Use of Hardcoded Passwords + Finding ID: 04966df6-5857-4b43-8c4b-1e77ef4ec648 + Path: test/user.js, line 875 + Info: Do not hardcode passwords in code. Found hardcoded password used in currentPassword. + + ✗ [LOW] Improper Type Validation + Finding ID: 1d2adadf-83fc-40c7-ad64-bcc3c2bd6443 + Path: src/controllers/authentication.js, line 91 + Info: The type of this object, coming from body and the value of its length property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: 85501412-661e-47d2-a793-0a6c9c0bebcd + Path: src/controllers/admin/users.js, line 267 + Info: The type of this object, coming from query and the value of its forEach property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: a718d802-34f1-47e5-a259-0406352cf854 + Path: src/controllers/admin/users.js, line 62 + Info: The type of this object, coming from query and the value of its includes property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: f4359312-99b8-4a79-ba57-8754bca8c068 + Path: src/controllers/admin/users.js, line 59 + Info: The type of this object, coming from query and the value of its includes property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: 26501f94-5e98-48f0-9e2b-267c294a1c7e + Path: src/controllers/admin/users.js, line 56 + Info: The type of this object, coming from query and the value of its includes property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: 41db5ec9-8c40-47e3-94cb-d70354c94c4e + Path: src/controllers/unread.js, line 84 + Info: The type of this object, coming from query and the value of its filter property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: 580f8596-7a05-466b-b79d-d6acd30dec84 + Path: src/controllers/unread.js, line 19 + Info: The type of this object, coming from query and the value of its filter property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: 8fffcae0-e635-44d5-acd7-1f511711bf67 + Path: src/controllers/recent.js, line 29 + Info: The type of this object, coming from query and the value of its filter property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: df19beeb-165e-4dcb-a571-3e5dbcc6eb4e + Path: src/controllers/accounts/notifications.js, line 31 + Info: The type of this object, coming from query and the value of its filter property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [LOW] Improper Type Validation + Finding ID: 7ef87dd6-0227-4006-b9e9-11a764a7079d + Path: src/activitypub/inbox.js, line 706 + Info: The type of this object, coming from body and the value of its map property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 3a92b2c4-26c7-415c-864d-438be35fa951 + Path: src/controllers/admin/logger.js, line 5 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 7d8abb87-fdb0-458f-8b38-4ce40044059b + Path: src/controllers/groups.js, line 131 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: baf387ea-c5cf-4102-879b-1132c56b6048 + Path: src/controllers/accounts/groups.js, line 13 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 939f9f72-e2ec-4509-a283-3a76cb75b570 + Path: src/controllers/accounts/info.js, line 10 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 526cf4f3-1a08-41f4-b279-f0d29d5d2271 + Path: src/controllers/accounts/notifications.js, line 10 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: d9286c2c-6cbc-431f-91f7-f4169c82095c + Path: src/controllers/accounts/posts.js, line 160 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 53941f21-aa5b-4d6d-9838-eb1d8d08a2d9 + Path: src/controllers/accounts/posts.js, line 164 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: ca1335b7-8469-4cf1-bfd8-535c42a90ec3 + Path: src/controllers/accounts/posts.js, line 168 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 26984f21-5f3e-44b1-b73b-96fe9475ec5a + Path: src/controllers/accounts/posts.js, line 172 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: d33e9ce0-e37d-4427-bbad-5cd1f2eb7388 + Path: src/controllers/accounts/posts.js, line 176 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: b20bb449-1363-4d27-8893-1235095d506f + Path: src/controllers/accounts/posts.js, line 180 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 888bacf7-8553-4837-8432-57e12f9488aa + Path: src/controllers/accounts/posts.js, line 184 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 90311362-658f-414e-9491-aba00da87615 + Path: src/controllers/accounts/posts.js, line 188 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 0437750d-21a2-4b10-b7ee-119975c8efa2 + Path: src/controllers/accounts/posts.js, line 192 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: f7b5ec51-0b2c-45cf-aea5-d628664a27a9 + Path: src/controllers/accounts/posts.js, line 196 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 063719fd-489d-4952-9614-def30d2b0770 + Path: src/controllers/accounts/posts.js, line 200 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: df9bb1cc-8a0a-481e-a0be-d1f6e8e1d02c + Path: src/controllers/accounts/posts.js, line 204 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 8871aba4-ef7c-4b77-95cd-17f151401513 + Path: src/controllers/accounts/profile.js, line 21 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 0bcd0912-830b-4f8c-85a9-397b52018fcd + Path: src/controllers/accounts/sessions.js, line 8 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: caa656d2-e010-4a39-9acc-3bfa802223df + Path: src/controllers/accounts/settings.js, line 20 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 04a75150-5080-4745-acb7-5902df50fa7c + Path: src/controllers/accounts/settings.js, line 129 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: fbbf2a93-6bb8-4b2e-add7-faa655fe6200 + Path: src/controllers/accounts/tags.js, line 8 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 4e2bf728-1d58-4c5f-a683-79ee36ac7867 + Path: src/controllers/accounts/uploads.js, line 14 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 7acfc816-c4be-42e5-8240-06ee64178e08 + Path: src/controllers/activitypub/topics.js, line 21 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 3d02fcad-d756-4d2b-a44b-7ec9bcbca72d + Path: src/controllers/admin/admins-mods.js, line 15 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 857d02d7-b499-4ca1-82c4-0530d1c0a4a8 + Path: src/controllers/admin/appearance.js, line 5 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 7b5ddeaf-cec6-4964-9068-5ac2ceda6171 + Path: src/controllers/admin/appearance.js, line 9 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 7bee2fde-49c4-4a5e-a881-a8c6b5ee0f70 + Path: src/controllers/admin/appearance.js, line 13 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 451b8c69-b744-49ef-849f-7f2cd277e611 + Path: src/controllers/admin/cache.js, line 8 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: be372d82-eba4-42c2-be37-6ad66cbc3afa + Path: src/controllers/admin/categories.js, line 20 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 9ecffa3c-9ac3-45af-a23f-3dbd37ccfe52 + Path: src/controllers/admin/categories.js, line 51 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 6562eb7c-fb49-4439-a71c-c12cbb1d821f + Path: src/controllers/admin/categories.js, line 147 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: cca1f3fc-d809-43db-bab2-b16a64ba8ef2 + Path: src/controllers/admin/categories.js, line 160 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 52c2fad6-4661-44c5-b236-0ae440edc32e + Path: src/controllers/admin/dashboard.js, line 21 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: cafde908-e55f-47da-a17f-086ca4021d15 + Path: src/controllers/admin/dashboard.js, line 253 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 96e8e07c-e403-42e6-95c1-8c893b29411e + Path: src/controllers/admin/dashboard.js, line 289 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: dc4cf812-8b08-4381-9905-1679d868841f + Path: src/controllers/admin/dashboard.js, line 316 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: d6e836aa-786e-4420-8077-fbd73d705500 + Path: src/controllers/admin/dashboard.js, line 343 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 28e05774-8f20-4a6c-9333-ccf81b8c0521 + Path: src/controllers/admin/database.js, line 7 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 6e9da6c0-ce1a-4f85-ad97-65e13ef3e0c1 + Path: src/controllers/admin/digest.js, line 9 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 820b5ea6-3967-4c5f-934d-ee73a64117f4 + Path: src/controllers/admin/errors.js, line 11 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 489a9152-a621-427c-b062-22c869a876df + Path: src/controllers/admin/events.js, line 12 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 341f9c90-d8d6-4456-8457-9c041bc7ac1e + Path: src/controllers/admin/groups.js, line 15 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 4f02d64a-74dd-48fc-b3a5-eb564869cb3d + Path: src/controllers/admin/groups.js, line 33 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 0399c816-6b72-4462-b5eb-dd683251fe56 + Path: src/controllers/admin/hooks.js, line 8 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Code Injection + Finding ID: 16507a33-c07f-4c9b-bb6d-fdc032e99c38 + Path: public/src/ajaxify.js, line 517 + Info: Unsanitized input from data from a remote resource flows into Function, where it is executed as JavaScript code. This may result in a Code Injection vulnerability. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: e0cbb45c-459d-406b-bcad-87264e1283b3 + Path: src/controllers/admin/logs.js, line 11 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 9089aff1-013a-477e-97b8-f68b7ac2001d + Path: src/controllers/admin/plugins.js, line 10 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: e89d5893-4c44-4571-8b1f-64f570685d1a + Path: src/controllers/admin/privileges.js, line 9 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 9ce72d21-83ce-4c6a-acb8-2948219ff840 + Path: src/controllers/admin/rewards.js, line 7 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 4dc4a5db-5556-4a3d-a528-e866bec823ae + Path: src/controllers/admin/settings.js, line 20 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: e00150e5-fc43-432b-abe7-14174ed457c4 + Path: src/controllers/admin/settings.js, line 37 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 93ab0710-36cf-44f9-a3d5-9ea4c0bfb127 + Path: src/controllers/admin/settings.js, line 67 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: f7e5afd2-727f-4418-9290-406bdbe0d6d3 + Path: src/controllers/admin/settings.js, line 83 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 08404109-8c39-4205-b04d-ec270a377a4a + Path: src/controllers/admin/settings.js, line 89 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: ce9cc524-b286-49f1-bff3-36e617cc50e1 + Path: src/controllers/admin/settings.js, line 95 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: ae494121-f431-4577-92b9-e638273ca091 + Path: src/controllers/admin/settings.js, line 101 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: e5f55746-5b0a-4ac4-8f13-bb622db5d775 + Path: src/controllers/admin/settings.js, line 110 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 9c17fb1e-cbf0-43a5-b006-0e6dca85e862 + Path: src/controllers/admin/settings.js, line 116 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 06ac7456-7d87-4130-aeae-285bd7aba27c + Path: src/controllers/admin/settings.js, line 127 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 81c9e76c-3d55-481f-8421-2d06b317d644 + Path: src/controllers/admin/settings.js, line 133 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: a08f14fa-a59e-4e25-971f-152530dbeed2 + Path: src/controllers/admin/settings.js, line 139 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: eb705039-327b-444e-9d9c-945589e5535b + Path: src/controllers/admin/settings.js, line 145 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: de0cb601-5358-43ca-8ed0-5f56879f37dc + Path: src/controllers/admin/settings.js, line 162 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: d0e552b5-31ca-430e-a816-3b8d114435b9 + Path: src/controllers/admin/settings.js, line 177 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 6a7faf71-f4c9-4a77-af71-9c739f253b7d + Path: src/controllers/admin/settings.js, line 183 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 1373b2e6-28de-4b21-ae7e-20c745721bda + Path: src/controllers/admin/settings.js, line 189 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 40846da7-fa7d-4aab-a9c0-5e617dae5477 + Path: src/controllers/admin/tags.js, line 7 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 6f04c7dd-fce2-44f5-961d-0116a53505a3 + Path: src/controllers/admin/themes.js, line 13 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 4e941a07-6046-4d12-88c8-ed5a31b81f38 + Path: src/controllers/admin/uploads.js, line 21 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 107c700b-7ab9-4240-8843-b433c384b379 + Path: src/controllers/admin/users.js, line 21 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 03d30639-a6fe-4b18-8ce0-76256ae488ce + Path: src/controllers/admin/users.js, line 29 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 1599332c-0646-4bb3-bda7-600d407ad8a9 + Path: src/controllers/admin/users.js, line 119 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 394cb934-3e03-49eb-a599-16cf6bfaca18 + Path: src/controllers/admin/users.js, line 209 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: fbf1118f-eab8-4fd5-b76b-0aa3c0d0acaf + Path: src/controllers/admin/users.js, line 255 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: d0fa0d60-d6dc-4176-a54f-e38414280b87 + Path: src/controllers/admin/users.js, line 305 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: daae9fcb-d03a-4191-95bb-0436bff23b5a + Path: src/controllers/admin/widgets.js, line 6 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: a8063aad-989b-4c47-90e3-3ff69c79be10 + Path: src/controllers/categories.js, line 14 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 177eecf0-1afb-4999-9535-74800ab4e2d7 + Path: src/controllers/category.js, line 29 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 6817a1ba-dc7c-4566-bdc5-6f810e456db0 + Path: src/controllers/composer.js, line 11 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 81f795ed-5e1a-43e1-bc2b-18f3861cae90 + Path: src/controllers/globalmods.js, line 13 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 7eb03e24-7368-480a-9be1-6f6a34ed326c + Path: src/controllers/groups.js, line 17 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 8e7b8e09-47ba-42c1-8665-c3a2e5243691 + Path: src/controllers/groups.js, line 70 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 88eb6655-9894-49e3-b44c-aa82afa7aa5b + Path: src/controllers/accounts/follow.js, line 17 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: b7ec23c6-d1e2-431c-91ca-5923dd4c9ec7 + Path: src/controllers/index.js, line 46 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: c36453e4-03a6-445c-90d2-ad090dd842b7 + Path: src/controllers/index.js, line 98 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 9bd145b9-0286-4499-a238-21ea26f682d8 + Path: src/controllers/index.js, line 146 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 88b81d02-26f0-47cf-b6e1-6da314869d5b + Path: src/controllers/index.js, line 195 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 59ec5164-0091-4d25-9d10-405d56fd69db + Path: src/controllers/index.js, line 226 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 0070252e-c75d-4d0c-a9de-25eb0d392730 + Path: src/controllers/index.js, line 345 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 988bcc32-b205-4674-a5f2-329f37cd6626 + Path: src/controllers/index.js, line 366 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: cb0a3a9a-8e0d-4bdb-8d3d-53cfe871ad70 + Path: src/controllers/mods.js, line 24 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 9c163785-a7d5-4e75-95b4-37e0b208920c + Path: src/controllers/mods.js, line 133 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 77140356-095b-45aa-b04b-821b102c7e67 + Path: src/controllers/mods.js, line 216 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: c7694e67-f94e-41b9-b046-6d8382b0e8b6 + Path: src/controllers/popular.js, line 12 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: d5d35301-c82f-4e98-9d4a-dd3d9e61c810 + Path: src/controllers/recent.js, line 16 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 20e22c10-d762-4b28-a6e0-40dd1555b699 + Path: src/controllers/search.js, line 22 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 41c9e29f-775a-40e3-a68c-4cfef8daeb4c + Path: src/controllers/service-worker.js, line 11 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 9ab6a95d-95c5-4c10-bb5e-11b98cae8780 + Path: src/controllers/tags.js, line 19 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: a70cd10a-45a3-4bf0-8083-8e7b9e49e4b6 + Path: src/controllers/tags.js, line 88 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 4135b621-d407-44a8-a108-060a56ce3736 + Path: src/controllers/top.js, line 12 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 1e8bb251-1e2b-41d1-a377-f1fc56c7a6f8 + Path: src/controllers/topics.js, line 25 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 61cb94ad-5448-4de7-85f1-6e2d71594554 + Path: src/controllers/unread.js, line 17 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 77bf6057-cc97-402d-8d38-f8062864de21 + Path: src/controllers/users.js, line 39 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: b61afab0-d096-4f32-b9b6-5d15898e02f5 + Path: src/controllers/users.js, line 50 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 260f7cd3-92d6-472b-9eeb-867f55e10ebf + Path: src/controllers/users.js, line 103 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: bddeab30-1242-41dd-b671-9dcfa4704197 + Path: src/controllers/users.js, line 195 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 51c9d4fe-b626-4b6e-a46e-728530fc1531 + Path: src/middleware/index.js, line 147 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 8a33d0c5-25be-4ea2-a401-0fe6219343b6 + Path: src/middleware/index.js, line 223 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 60a94e1e-761f-412b-9c3c-38aade14af84 + Path: src/middleware/maintenance.js, line 12 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: f43afbc9-6a2b-443b-9f2c-b11720988ef8 + Path: src/routes/debug.js, line 17 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 61fd3a8a-19b7-48ff-ac21-f788c3cd72f9 + Path: vendor/nodebb-plugin-composer-default/controllers.js, line 5 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: da59df81-e4b2-4b4b-8cbe-61e8ca2c1598 + Path: vendor/nodebb-theme-harmony-2.1.35/lib/controllers.js, line 8 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 26ba79bc-d363-4754-ae11-82214752d7f2 + Path: vendor/nodebb-theme-harmony-2.1.35/lib/controllers.js, line 14 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 5d2feead-f6f4-4572-9966-86104b6ac931 + Path: install/web.js, line 178 + Info: Expensive operation (a system command execution) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits for Login Operations + Finding ID: c0a8d388-731b-40a9-a256-d5c82f2cb7bb + Path: src/controllers/authentication.js, line 280 + Info: Call to passport.authenticate performs user authentication, but is not protected by any rate-limiting mechanism. This may enable the attackers to bruteforce users' passwords. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits for Login Operations + Finding ID: 5d67b2fc-4744-497d-b804-f5e4f6e2b48a + Path: src/middleware/user.js, line 28 + Info: Call to passport.authenticate performs user authentication, but is not protected by any rate-limiting mechanism. This may enable the attackers to bruteforce users' passwords. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits for Login Operations + Finding ID: a759ed9a-e695-4e8c-8ea6-e76e1e4733ad + Path: src/routes/authentication.js, line 106 + Info: Call to passport.authenticate performs user authentication, but is not protected by any rate-limiting mechanism. This may enable the attackers to bruteforce users' passwords. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits for Login Operations + Finding ID: c25a40f5-dcbc-4f1d-bc35-28f2c7322f55 + Path: src/routes/authentication.js, line 124 + Info: Call to passport.authenticate performs user authentication, but is not protected by any rate-limiting mechanism. This may enable the attackers to bruteforce users' passwords. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Open Redirect + Finding ID: 8bbbfcc8-7f13-4281-9c38-5dbd2d72aa16 + Path: public/src/ajaxify.js, line 176 + Info: Unsanitized input from data from a remote resource flows into window.open, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. + + ✗ [MEDIUM] Open Redirect + Finding ID: 8de631ea-7f99-4a4d-af7b-51f0626ca7c7 + Path: public/src/modules/logout.js, line 20 + Info: Unsanitized input from data from a remote resource flows into window.location, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. + + ✗ [MEDIUM] Open Redirect + Finding ID: 6a007425-a109-49db-ab98-9492848a329b + Path: src/controllers/errors.js, line 22 + Info: Unsanitized input from the request URL flows into redirect, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. + + ✗ [MEDIUM] Open Redirect + Finding ID: d72f0193-53ee-4634-a3f1-cf960cb377b6 + Path: src/controllers/errors.js, line 24 + Info: Unsanitized input from the request URL flows into redirect, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. + + ✗ [MEDIUM] Open Redirect + Finding ID: af966cd4-8ee3-4b87-a16a-f57824b9d163 + Path: src/middleware/index.js, line 75 + Info: Unsanitized input from the request URL flows into redirect, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. + + ✗ [MEDIUM] Open Redirect + Finding ID: af60fe69-17b7-4774-b5fe-21a58e29c417 + Path: src/middleware/user.js, line 265 + Info: Unsanitized input from an HTTP parameter flows into redirect, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. + + ✗ [MEDIUM] DOM-based Cross-site Scripting (XSS) + Finding ID: f6af20db-369f-4bcf-871b-e6fd45c70bb4 + Path: public/src/client/category/tools.js, line 299 + Info: Unsanitized input from data from a remote resource flows into replaceWith, where it is used to dynamically construct the HTML page on client side. This may result in a DOM Based Cross-Site Scripting attack (DOMXSS). + + ✗ [MEDIUM] Cleartext Transmission - HTTP Instead of HTTPS + Finding ID: 7f0553d2-ca28-45cd-84cd-83c963ac5146 + Path: src/webserver.js, line 47 + Info: http.createServer uses HTTP which is an insecure protocol and should not be used in code due to cleartext transmission of information. Data in cleartext in a communication channel can be sniffed by unauthorized actors. Consider using the https module instead. + + ✗ [MEDIUM] DOM-based Cross-site Scripting (XSS) + Finding ID: ad784ac7-965f-45d6-a670-cd09e6f715a3 + Path: public/src/client/chats.js, line 736 + Info: Unsanitized input from data from a remote resource flows into html, where it is used to dynamically construct the HTML page on client side. This may result in a DOM Based Cross-Site Scripting attack (DOMXSS). + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 358f3dc8-8fb1-472c-bd86-85a507cf3d48 + Path: install/web.js, line 149 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: c71f1869-fe3e-49af-8f3f-3dea912042f2 + Path: src/controllers/404.js, line 55 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 3c6eb060-9f97-4ef3-9ce2-1f890d71ddea + Path: src/controllers/accounts/blocks.js, line 10 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 0c58fb50-83eb-4206-acb5-b620db1445d6 + Path: src/controllers/accounts/categories.js, line 11 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: d0528864-95d1-4478-8956-3421ace15462 + Path: src/controllers/accounts/chats.js, line 12 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: d138327d-491c-42ce-822d-0079efe71f06 + Path: src/controllers/accounts/consent.js, line 9 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: b9a06d1e-e092-4425-9afd-00b5e86cf9fa + Path: src/controllers/accounts/edit.js, line 14 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Information Exposure - X-Powered-By Header + Finding ID: cb301ca9-34ff-43b0-834a-1cd04b4d761a + Path: install/web.js, line 22 + Info: Disable X-Powered-By header for your Express app (consider using Helmet middleware), because it exposes information about the used framework to potential attackers. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 387b7b7d-61c6-413a-8ae1-db8339c2a9d0 + Path: src/controllers/accounts/edit.js, line 88 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: c6d16fae-144f-401b-b8ec-2e8d2c8ea001 + Path: src/controllers/accounts/edit.js, line 92 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: a506187a-941e-46dd-ad76-2a7f4c544cca + Path: src/controllers/accounts/edit.js, line 109 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Cross-site Scripting (XSS) + Finding ID: c276c79d-93d7-40e7-9fa6-851d2e240914 + Path: src/controllers/errors.js, line 116 + Info: Unsanitized input from an exception flows into send, where it is used to render an HTML page returned to the user. This may result in a Cross-Site Scripting attack (XSS). + + ✗ [MEDIUM] Cross-site Scripting (XSS) + Finding ID: facb0813-c4a4-44d3-b308-01b0ed19b44b + Path: src/controllers/composer.js, line 96 + Info: Unsanitized input from an exception flows into send, where it is used to render an HTML page returned to the user. This may result in a Cross-Site Scripting attack (XSS). + + ✗ [MEDIUM] Cross-site Scripting (XSS) + Finding ID: b79d9ba6-5bee-4628-b4ad-653cc6b5ab1d + Path: src/controllers/authentication.js, line 499 + Info: Unsanitized input from an exception flows into send, where it is used to render an HTML page returned to the user. This may result in a Cross-Site Scripting attack (XSS). + + ✗ [MEDIUM] Cross-site Scripting (XSS) + Finding ID: ff10b5c9-4fd0-4ec1-b019-83ea42c99cb2 + Path: src/controllers/authentication.js, line 124 + Info: Unsanitized input from an exception flows into send, where it is used to render an HTML page returned to the user. This may result in a Cross-Site Scripting attack (XSS). + + ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling + Finding ID: 2a3368fe-3166-4365-acde-316467b7967f + Path: src/controllers/accounts/follow.js, line 13 + Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. + + ✗ [MEDIUM] Cross-Site Request Forgery (CSRF) + Finding ID: 1da0b819-0b24-40c7-a113-a3498c93956c + Path: src/webserver.js, line 11 + Info: CSRF protection is disabled for your Express app. This allows the attackers to execute requests on a user's behalf. + + ✗ [MEDIUM] Information Exposure - Server Error Message + Finding ID: 4c09a4bd-51af-4ff3-ac15-6d78af445a6a + Path: src/controllers/authentication.js, line 283 + Info: An error object flows to send and is leaked to the attacker. This may disclose important information about the application to an attacker. + + ✗ [MEDIUM] Information Exposure - Server Error Message + Finding ID: d6c581da-2bc5-400d-921e-dd83dd3c7d05 + Path: src/controllers/helpers.js, line 26 + Info: An error object flows to send and is leaked to the attacker. This may disclose important information about the application to an attacker. + + ✗ [MEDIUM] Cross-Site Request Forgery (CSRF) + Finding ID: 8ebf1d94-07a5-4351-a443-aab4a57d852f + Path: install/web.js, line 22 + Info: CSRF protection is disabled for your Express app. This allows the attackers to execute requests on a user's behalf. + + ✗ [HIGH] Path Traversal + Finding ID: 172f599f-34d6-4b92-ac55-79a7d103c513 + Path: src/controllers/admin/themes.js, line 19 + Info: Unsanitized input from an HTTP parameter flows into readFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: 42d61a8e-73f4-4408-b4ce-a094f548606d + Path: src/controllers/admin/uploads.js, line 306 + Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: 92df1caa-6f95-43c4-93c2-bf909e240d33 + Path: src/controllers/admin/uploads.js, line 192 + Info: Unsanitized input from an uploaded file flows into readFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: 681f8265-a8a5-4fe1-8547-3c26930afaff + Path: src/controllers/uploads.js, line 202 + Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: 8f1a6793-977a-4e01-96e3-5420e212352d + Path: src/controllers/admin/uploads.js, line 214 + Info: Unsanitized input from an uploaded file flows into copyFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: ffe5d7eb-0f5d-4ecb-9fb3-ab7dd57a8397 + Path: src/controllers/admin/uploads.js, line 188 + Info: Unsanitized input from an uploaded file flows into copyFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: 14e124a8-1c32-426f-8e74-74dd2654b151 + Path: src/controllers/admin/uploads.js, line 172 + Info: Unsanitized input from an uploaded file flows into copyFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: 7e29b203-e118-424f-b549-33660834bddd + Path: src/controllers/admin/uploads.js, line 94 + Info: Unsanitized input from an HTTP parameter flows into readdir, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to list arbitrary directories. + + ✗ [HIGH] Path Traversal + Finding ID: 5aca0809-046e-4753-8e41-ebc0673dc7e2 + Path: src/controllers/admin/uploads.js, line 284 + Info: Unsanitized input from an uploaded file flows into readFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: e5e773b1-1e29-4178-a240-11cd1086e51b + Path: src/controllers/admin/uploads.js, line 237 + Info: Unsanitized input from an uploaded file flows into copyFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to overwrite arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: 53684a7d-8912-40b5-a2ea-eae0ab35dd95 + Path: src/controllers/admin/uploads.js, line 279 + Info: Unsanitized input from an uploaded file flows into copyFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: b175f9c2-5c9f-4ddc-818c-3e46b342a9cc + Path: src/controllers/admin/uploads.js, line 268 + Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: 3ea3f2dd-35d6-4c05-b990-c8dfe0ed76d3 + Path: src/controllers/admin/uploads.js, line 242 + Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: b8618b47-b1db-459d-bbaa-6f69115c8dc8 + Path: src/controllers/admin/uploads.js, line 229 + Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: 8f548504-3595-4dc2-b066-a028cb63bbb7 + Path: src/controllers/admin/uploads.js, line 219 + Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: c5cfffec-ebd0-4fd8-86dc-5b9eec98e99b + Path: src/controllers/admin/uploads.js, line 203 + Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: c403aab6-40f0-4209-aff9-48dc7b0eac84 + Path: src/controllers/admin/uploads.js, line 177 + Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: 6aeb75c6-f21e-4db5-98fe-5425804a3092 + Path: src/controllers/admin/uploads.js, line 157 + Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. + + ✗ [HIGH] Path Traversal + Finding ID: 1635818f-0fc8-4df9-b96c-0bdf749e51a2 + Path: src/controllers/accounts/edit.js, line 168 + Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. + + + +╭─────────────────────────────────────────────────────────────────╮ +│ Test Summary │ +│ │ +│ Organization: yuriishmal │ +│ Test type: Static code analysis │ +│ Project path: /workspaces/nodebb-spring-26-clean-code │ +│ │ +│ Total issues: 244 │ +│ Ignored issues: 0 [ 0 HIGH 0 MEDIUM 0 LOW ] │ +│ Open issues: 244 [ 19 HIGH 148 MEDIUM 77 LOW ] │ +╰─────────────────────────────────────────────────────────────────╯ + +💡 Tip + + To view ignored issues, use the --include-ignores option. + + +node ➜ /workspaces/nodebb-spring-26-clean-code (test-snyk) $ snyk test + +Testing /workspaces/nodebb-spring-26-clean-code... + +Tested 827 dependencies for known issues, found 13 issues, 29 vulnerable paths. + + +Issues to fix by upgrading: + + Upgrade lodash@4.17.21 to lodash@4.17.23 to fix + ✗ Prototype Pollution [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-LODASH-15053838] in lodash@4.17.21 + introduced by lodash@4.17.21 and 9 other path(s) + + Upgrade multer@2.0.2 to multer@2.1.1 to fix + ✗ Uncontrolled Recursion (new) [High Severity][https://security.snyk.io/vuln/SNYK-JS-MULTER-15417528] in multer@2.0.2 + introduced by multer@2.0.2 and 1 other path(s) + ✗ Missing Release of Resource after Effective Lifetime (new) [High Severity][https://security.snyk.io/vuln/SNYK-JS-MULTER-15365916] in multer@2.0.2 + introduced by multer@2.0.2 and 1 other path(s) + ✗ Incomplete Cleanup (new) [High Severity][https://security.snyk.io/vuln/SNYK-JS-MULTER-15365918] in multer@2.0.2 + introduced by multer@2.0.2 and 1 other path(s) + + Upgrade nodebb-plugin-dbsearch@6.3.4 to nodebb-plugin-dbsearch@6.4.1 to fix + ✗ Prototype Pollution [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-LODASH-15053838] in lodash@4.17.21 + introduced by lodash@4.17.21 and 9 other path(s) + + Upgrade nodebb-plugin-mentions@4.8.5 to nodebb-plugin-mentions@4.8.17 to fix + ✗ Prototype Pollution [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-LODASH-15053838] in lodash@4.17.21 + introduced by lodash@4.17.21 and 9 other path(s) + + Upgrade terser-webpack-plugin@5.3.16 to terser-webpack-plugin@5.3.17 to fix + ✗ Arbitrary Code Injection [High Severity][https://security.snyk.io/vuln/SNYK-JS-SERIALIZEJAVASCRIPT-570062] in serialize-javascript@6.0.2 + introduced by terser-webpack-plugin@5.3.16 > serialize-javascript@6.0.2 and 1 other path(s) + + +Issues with no direct upgrade or patch: + ✗ Cross-site Scripting (XSS) [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-BOOTBOX-174704] in bootbox@6.0.4 + introduced by bootbox@6.0.4 + No upgrade or patch available + ✗ Use of a Cryptographic Primitive with a Risky Implementation [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-ELLIPTIC-14908844] in elliptic@6.6.1 + introduced by nodebb-plugin-2factor@7.6.1 > fido2-lib@2.8.3 > jwk-to-pem@2.0.7 > elliptic@6.6.1 + No upgrade or patch available + ✗ Prototype Pollution [Critical Severity][https://security.snyk.io/vuln/SNYK-JS-IMMUTABLE-15423650] in immutable@5.1.4 + introduced by sass@1.97.2 > immutable@5.1.4 and 3 other path(s) + This issue was fixed in versions: 3.8.3, 4.3.8, 5.1.5 + ✗ Cross-site Scripting (XSS) [Critical Severity][https://security.snyk.io/vuln/SNYK-JS-JQUERYFORM-574783] in jquery-form@4.3.0 + introduced by jquery-form@4.3.0 + No upgrade or patch available + ✗ Regular Expression Denial of Service (ReDoS) [High Severity][https://security.snyk.io/vuln/SNYK-JS-MINIMATCH-15309438] in minimatch@9.0.1 + introduced by pretty@2.0.0 > js-beautify@1.15.4 > editorconfig@1.0.4 > minimatch@9.0.1 + This issue was fixed in versions: 3.1.3, 4.2.4, 5.1.7, 6.2.1, 7.4.7, 8.0.5, 9.0.6, 10.2.1 + ✗ Regular Expression Denial of Service (ReDoS) [High Severity][https://security.snyk.io/vuln/SNYK-JS-MINIMATCH-15353387] in minimatch@9.0.1 + introduced by pretty@2.0.0 > js-beautify@1.15.4 > editorconfig@1.0.4 > minimatch@9.0.1 + This issue was fixed in versions: 8.0.6, 9.0.7, 10.2.3 + ✗ Inefficient Algorithmic Complexity [High Severity][https://security.snyk.io/vuln/SNYK-JS-MINIMATCH-15353389] in minimatch@9.0.1 + introduced by pretty@2.0.0 > js-beautify@1.15.4 > editorconfig@1.0.4 > minimatch@9.0.1 + This issue was fixed in versions: 3.1.3, 4.2.5, 5.1.8, 6.2.2, 7.4.8, 8.0.6, 9.0.7, 10.2.3 + ✗ Regular Expression Denial of Service (ReDoS) [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-ZXCVBN-3257741] in zxcvbn@4.4.2 + introduced by zxcvbn@4.4.2 + No upgrade or patch available + + + +Organization: yuriishmal +Package manager: npm +Target file: package-lock.json +Project name: nodebb +Open source: no +Project path: /workspaces/nodebb-spring-26-clean-code +Licenses: enabled + +Tip: Detected multiple supported manifests (3), use --all-projects to scan all of them at once. \ No newline at end of file From 1ad618c797358853947f6bd859ac2a8386a99336 Mon Sep 17 00:00:00 2001 From: Yurii Shmal <115579239+yuriiShmal@users.noreply.github.com> Date: Wed, 11 Mar 2026 20:27:59 -0400 Subject: [PATCH 2/6] Added evidence of snyk installation The evidence wasn't visible before, as package.json at project root (which is what was used to run snyk) is not and should not be tracked. --- .../Screenshot from 2026-03-11 20-26-26.png | Bin 0 -> 123132 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test_results/Screenshot from 2026-03-11 20-26-26.png diff --git a/test_results/Screenshot from 2026-03-11 20-26-26.png b/test_results/Screenshot from 2026-03-11 20-26-26.png new file mode 100644 index 0000000000000000000000000000000000000000..bb1824dcf492002dd7835fcf6dbc3d1c91394019 GIT binary patch literal 123132 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

aMFl@*ivy63 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

cKcq$0z63wuOq{;fG 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 literal 0 HcmV?d00001 From a3ffc70d8b183dfae8ea7809ec75b20a77a77c90 Mon Sep 17 00:00:00 2001 From: Yurii Shmal <115579239+yuriiShmal@users.noreply.github.com> Date: Wed, 11 Mar 2026 22:20:05 -0400 Subject: [PATCH 3/6] Delete test_results/Screenshot from 2026-03-11 20-26-26.png Wasteful - including a useless image. better just attach it to the pull request --- .../Screenshot from 2026-03-11 20-26-26.png | Bin 123132 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test_results/Screenshot from 2026-03-11 20-26-26.png diff --git a/test_results/Screenshot from 2026-03-11 20-26-26.png b/test_results/Screenshot from 2026-03-11 20-26-26.png deleted file mode 100644 index bb1824dcf492002dd7835fcf6dbc3d1c91394019..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123132 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

aMFl@*ivy63 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

cKcq$0z63wuOq{;fG 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 From b54ad2d0a278ff3375e261c71f7e0656336fb0ec Mon Sep 17 00:00:00 2001 From: yuriiShmal Date: Thu, 12 Mar 2026 02:37:12 +0000 Subject: [PATCH 4/6] Added snyk to version controlled package.json --- install/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install/package.json b/install/package.json index 2b96dc8d08..39914edf7f 100644 --- a/install/package.json +++ b/install/package.json @@ -137,9 +137,9 @@ "serve-favicon": "2.5.1", "sharp": "0.34.5", "sitemap": "9.0.0", + "snyk": "^1.1303.1", "socket.io": "4.8.3", "socket.io-client": "4.8.3", - "@socket.io/redis-adapter": "8.3.0", "sortablejs": "1.15.6", "spdx-license-list": "6.11.0", "terser-webpack-plugin": "5.3.16", @@ -164,9 +164,9 @@ "@apidevtools/swagger-parser": "10.1.0", "@commitlint/cli": "20.3.1", "@commitlint/config-angular": "20.3.1", - "coveralls": "3.1.1", "@eslint/js": "9.39.2", "@stylistic/eslint-plugin": "5.7.0", + "coveralls": "3.1.1", "eslint-config-nodebb": "1.1.11", "eslint-plugin-import": "2.32.0", "grunt": "1.6.1", @@ -204,4 +204,4 @@ "url": "https://github.com/barisusakli" } ] -} \ No newline at end of file +} From 3420eb6648257c907b86cb08288314b1e6f945d6 Mon Sep 17 00:00:00 2001 From: Yurii Shmal <115579239+yuriiShmal@users.noreply.github.com> Date: Wed, 11 Mar 2026 22:40:30 -0400 Subject: [PATCH 5/6] Delete test_results directory --- test_results/snyk_testing_results.txt | 1316 ------------------------- 1 file changed, 1316 deletions(-) delete mode 100644 test_results/snyk_testing_results.txt diff --git a/test_results/snyk_testing_results.txt b/test_results/snyk_testing_results.txt deleted file mode 100644 index 795dcb748d..0000000000 --- a/test_results/snyk_testing_results.txt +++ /dev/null @@ -1,1316 +0,0 @@ -node ➜ /workspaces/nodebb-spring-26-clean-code (test-snyk) $ snyk code test --org=0f32a4e6-7d4e-46c7-b1f2-53a4ceb27745 - -Testing /workspaces/nodebb-spring-26-clean-code ... - -Open Issues - - ✗ [LOW] Sensitive Cookie in HTTPS Session Without 'Secure' Attribute - Finding ID: 06577045-3e35-4708-a717-17e41da96cc4 - Path: src/webserver.js, line 178 - Info: Cookie misses the Secure attribute (it is false by default). Set it to true to protect the cookie from man-in-the-middle attacks. - - ✗ [LOW] Improper Type Validation - Finding ID: 379824d1-43bf-4664-9b51-5e15f925645f - Path: src/controllers/well-known.js, line 21 - Info: The type of this object, coming from query and the value of its slice property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: 79ed9c53-3398-4dfc-9b4e-a1353811ec56 - Path: src/controllers/well-known.js, line 21 - Info: The type of this object, coming from query and the value of its length property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: df888ed9-7fcb-4eeb-9806-2af85268f27a - Path: src/middleware/assert.js, line 92 - Info: The type of this object, coming from body and the value of its slice property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: 32421233-f894-4cad-86e3-38bb3fac8bfc - Path: src/middleware/assert.js, line 111 - Info: The type of this object, coming from body and the value of its trim property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: e4ab4b9e-5af8-4f1d-bb80-af7c4d1c2e9f - Path: src/controllers/authentication.js, line 105 - Info: The type of this object, coming from body and the value of its length property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: 0592c00c-b94e-441b-8ea3-d1320708be58 - Path: src/controllers/write/users.js, line 204 - Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: c0692103-480b-4618-a425-c6619cf5d619 - Path: src/image.js, line 148 - Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: edd8fd22-a77b-4217-9e83-e9f727e14646 - Path: src/posts/uploads.js, line 23 - Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: d426097f-b4d2-436a-af90-6fafe826983b - Path: src/upgrades/1.10.0/hash_recent_ip_addresses.js, line 26 - Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: c48c0537-6dfe-4603-8fb4-55acaeac6029 - Path: src/upgrades/1.19.3/fix_user_uploads_zset.js, line 8 - Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: 3327bbb8-33f1-4357-991f-60a25809e5cb - Path: src/upgrades/1.19.3/rename_post_upload_hashes.js, line 10 - Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: 24b1fbaf-75a0-4862-a6b7-86a3e1174545 - Path: src/upgrades/1.6.0/clear-stale-digest-template.js, line 16 - Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: a033b18f-0e41-43a0-8acb-b93ccac0b934 - Path: src/upgrades/4.3.0/normalize_thumbs_uploads.js, line 28 - Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: 5007a14f-a213-4fb9-8896-e9df0dee0672 - Path: src/user/uploads.js, line 13 - Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: 0eeec5d0-9981-4cce-ad86-abfdc4349395 - Path: src/upgrades/1.19.3/rename_post_upload_hashes.js, line 41 - Info: MD5 hash (used in md5) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: 41a4ca15-0f72-4415-8960-575351367bfd - Path: src/upgrades/1.19.3/rename_post_upload_hashes.js, line 42 - Info: MD5 hash (used in md5) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: 42d73fd5-d783-4288-b88d-fc8482f3cd0f - Path: test/posts/uploads.js, line 136 - Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Use of Password Hash With Insufficient Computational Effort - Finding ID: 497baca1-9aa0-4606-a21e-d47c89099bca - Path: test/user/uploads.js, line 17 - Info: crypto.createHash hash (used in crypto.createHash) is insecure. Consider changing it to a secure hashing algorithm. - - ✗ [LOW] Insecure TLS Configuration - Finding ID: 7709e779-2d87-40cb-a276-ca07e6742032 - Path: test/socket.io.js, line 6 - Info: Setting the 'NODE_TLS_REJECT_UNAUTHORIZED' to '0' makes TLS connections and HTTPS requests insecure. - - ✗ [LOW] Insufficient postMessage Validation - Finding ID: 7f92a835-54dd-4231-bc93-738263eefe3e - Path: public/src/app.js, line 359 - Info: The origin of the received message is not checked. This means any site (even malicious) can send message to this window. If you don't expect this, consider checking the origin of sender. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: a6efa4d2-8172-489f-acdd-675e8f8c4911 - Path: test/authentication.js, line 30 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 32d0a91b-76b2-423a-980c-bf13c7771cee - Path: test/authentication.js, line 53 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: aff0af49-1d43-458c-b6c8-420aa82df676 - Path: test/authentication.js, line 105 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 987b4096-3479-4406-887f-dba0c48e8a12 - Path: test/authentication.js, line 276 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 4ba8ee98-e511-46dc-bfb4-30f18953a40f - Path: test/authentication.js, line 340 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: e99e1031-2305-4935-a040-53fcc359dcdc - Path: test/authentication.js, line 350 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 7977e6ce-b1ac-4486-b6f1-97e6033613a7 - Path: test/authentication.js, line 359 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 43294f80-079f-4985-b043-97ca7764c1e9 - Path: test/authentication.js, line 360 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 1bfc4c93-983f-44a5-a291-310872409b66 - Path: test/authentication.js, line 385 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 05e0f5e6-abf2-4c0f-8acf-db5857ba292b - Path: test/controllers-admin.js, line 39 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 8469d170-a7fe-4c81-bd9f-5f6c533f45b2 - Path: test/controllers-admin.js, line 45 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 790eaa2c-fb91-46b1-9174-38636d33ba08 - Path: test/flags.js, line 41 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 71f6d8f9-ac25-451b-8f5c-806f6a52f14f - Path: test/flags.js, line 43 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: d1bd9a35-5db9-48e6-8edc-b90f4b5427b0 - Path: test/flags.js, line 57 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 03677171-5e1c-4cfa-805b-afc6c1cf02e5 - Path: test/flags.js, line 61 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: dd9d565e-2b38-4dce-9309-16b40c61ea9d - Path: test/flags.js, line 1061 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 7570e9fb-a7a6-4d5e-8182-80f082c5acc3 - Path: test/flags.js, line 1064 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: ce221561-e7fa-4c77-9d72-b9c4c6bc91f9 - Path: test/messaging.js, line 59 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 0adbed38-aafe-4a9b-80eb-62951166616b - Path: test/messaging.js, line 60 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 4ce0c7f5-ecf6-497e-9de7-90f6ab0ae085 - Path: test/meta.js, line 24 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 88232b0e-27b9-44c6-b4ed-a02754faf068 - Path: test/meta.js, line 25 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 877b5d14-f57c-4d4f-80ef-9df6663cf05f - Path: test/post-answer.js, line 37 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: b3dbe5f9-93c0-429d-8bb7-1c2d47236689 - Path: test/posts.js, line 39 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 368c649c-88ac-4755-ac07-93cd04a0101b - Path: test/posts/uploads.js, line 38 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 143eaf9b-acea-459a-9320-eed49689adae - Path: test/posts/uploads.js, line 321 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 70b3d552-0afa-4359-94e9-55b00987244e - Path: test/socket.io.js, line 34 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: b523fed5-360b-41ec-9956-d00901516185 - Path: test/socket.io.js, line 35 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 0f9d2d3a-bde3-456a-a5cf-13ab0874a981 - Path: test/socket.io.js, line 702 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: d47af60f-d6c0-43ec-b791-a4fa5870a2f3 - Path: test/uploads.js, line 50 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 89fde2f3-743d-410b-a465-5c87ac3dfa0c - Path: test/uploads.js, line 53 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 5688e9b7-d18f-4725-800f-d05f3789c3af - Path: test/user.js, line 65 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 8fa82a4a-fd98-41e1-8131-20fc3bbc9d75 - Path: test/user.js, line 838 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 070bfbce-e394-42b6-808c-d27b4c8e32bf - Path: test/user.js, line 849 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 709940eb-9e32-46ac-89d4-93d9edef859b - Path: test/user.js, line 861 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 4ad2d6c2-f079-4954-b30b-dbc6f1f24a55 - Path: test/user.js, line 871 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: b708c954-889d-45f6-969f-f167b8adcb20 - Path: test/user.js, line 1600 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: bbea5301-1b9a-4e2b-b1d4-6a3ceae35c32 - Path: test/user.js, line 1652 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 13ee28db-2f96-4dce-b651-e91fec63c7a8 - Path: test/user/emails.js, line 146 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 661cc2c0-ff62-4167-a1ef-c381989a5845 - Path: test/user/emails.js, line 153 - Info: Do not hardcode passwords in code. Found hardcoded password used in password. - - ✗ [LOW] Improper Type Validation - Finding ID: 2e50137f-6ba5-4948-8ddf-c0dcd7a1da33 - Path: src/controllers/authentication.js, line 97 - Info: The type of this object, coming from body and the value of its length property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 16a5e1d2-8469-46bc-827e-1cc7e2eed9f5 - Path: test/user.js, line 820 - Info: Do not hardcode passwords in code. Found hardcoded password used in newPassword. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 9b5be12a-f6c5-446a-a5a0-0b0b30734704 - Path: test/user.js, line 841 - Info: Do not hardcode passwords in code. Found hardcoded password used in newPassword. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: b137cfd6-5aeb-46b2-a542-bce885afa10b - Path: test/user.js, line 853 - Info: Do not hardcode passwords in code. Found hardcoded password used in newPassword. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 17a9c876-8f19-4d20-832a-6feec2d76284 - Path: test/user.js, line 865 - Info: Do not hardcode passwords in code. Found hardcoded password used in newPassword. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 04e65646-dd23-4693-ab54-faaeba6beae7 - Path: test/user.js, line 875 - Info: Do not hardcode passwords in code. Found hardcoded password used in newPassword. - - ✗ [LOW] Use of Hardcoded Passwords - Finding ID: 04966df6-5857-4b43-8c4b-1e77ef4ec648 - Path: test/user.js, line 875 - Info: Do not hardcode passwords in code. Found hardcoded password used in currentPassword. - - ✗ [LOW] Improper Type Validation - Finding ID: 1d2adadf-83fc-40c7-ad64-bcc3c2bd6443 - Path: src/controllers/authentication.js, line 91 - Info: The type of this object, coming from body and the value of its length property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: 85501412-661e-47d2-a793-0a6c9c0bebcd - Path: src/controllers/admin/users.js, line 267 - Info: The type of this object, coming from query and the value of its forEach property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: a718d802-34f1-47e5-a259-0406352cf854 - Path: src/controllers/admin/users.js, line 62 - Info: The type of this object, coming from query and the value of its includes property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: f4359312-99b8-4a79-ba57-8754bca8c068 - Path: src/controllers/admin/users.js, line 59 - Info: The type of this object, coming from query and the value of its includes property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: 26501f94-5e98-48f0-9e2b-267c294a1c7e - Path: src/controllers/admin/users.js, line 56 - Info: The type of this object, coming from query and the value of its includes property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: 41db5ec9-8c40-47e3-94cb-d70354c94c4e - Path: src/controllers/unread.js, line 84 - Info: The type of this object, coming from query and the value of its filter property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: 580f8596-7a05-466b-b79d-d6acd30dec84 - Path: src/controllers/unread.js, line 19 - Info: The type of this object, coming from query and the value of its filter property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: 8fffcae0-e635-44d5-acd7-1f511711bf67 - Path: src/controllers/recent.js, line 29 - Info: The type of this object, coming from query and the value of its filter property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: df19beeb-165e-4dcb-a571-3e5dbcc6eb4e - Path: src/controllers/accounts/notifications.js, line 31 - Info: The type of this object, coming from query and the value of its filter property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [LOW] Improper Type Validation - Finding ID: 7ef87dd6-0227-4006-b9e9-11a764a7079d - Path: src/activitypub/inbox.js, line 706 - Info: The type of this object, coming from body and the value of its map property can be controlled by the user. An attacker may craft the properties of the object to crash the application or bypass its logic. Consider checking the type of the object. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 3a92b2c4-26c7-415c-864d-438be35fa951 - Path: src/controllers/admin/logger.js, line 5 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 7d8abb87-fdb0-458f-8b38-4ce40044059b - Path: src/controllers/groups.js, line 131 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: baf387ea-c5cf-4102-879b-1132c56b6048 - Path: src/controllers/accounts/groups.js, line 13 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 939f9f72-e2ec-4509-a283-3a76cb75b570 - Path: src/controllers/accounts/info.js, line 10 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 526cf4f3-1a08-41f4-b279-f0d29d5d2271 - Path: src/controllers/accounts/notifications.js, line 10 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: d9286c2c-6cbc-431f-91f7-f4169c82095c - Path: src/controllers/accounts/posts.js, line 160 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 53941f21-aa5b-4d6d-9838-eb1d8d08a2d9 - Path: src/controllers/accounts/posts.js, line 164 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: ca1335b7-8469-4cf1-bfd8-535c42a90ec3 - Path: src/controllers/accounts/posts.js, line 168 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 26984f21-5f3e-44b1-b73b-96fe9475ec5a - Path: src/controllers/accounts/posts.js, line 172 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: d33e9ce0-e37d-4427-bbad-5cd1f2eb7388 - Path: src/controllers/accounts/posts.js, line 176 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: b20bb449-1363-4d27-8893-1235095d506f - Path: src/controllers/accounts/posts.js, line 180 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 888bacf7-8553-4837-8432-57e12f9488aa - Path: src/controllers/accounts/posts.js, line 184 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 90311362-658f-414e-9491-aba00da87615 - Path: src/controllers/accounts/posts.js, line 188 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 0437750d-21a2-4b10-b7ee-119975c8efa2 - Path: src/controllers/accounts/posts.js, line 192 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: f7b5ec51-0b2c-45cf-aea5-d628664a27a9 - Path: src/controllers/accounts/posts.js, line 196 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 063719fd-489d-4952-9614-def30d2b0770 - Path: src/controllers/accounts/posts.js, line 200 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: df9bb1cc-8a0a-481e-a0be-d1f6e8e1d02c - Path: src/controllers/accounts/posts.js, line 204 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 8871aba4-ef7c-4b77-95cd-17f151401513 - Path: src/controllers/accounts/profile.js, line 21 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 0bcd0912-830b-4f8c-85a9-397b52018fcd - Path: src/controllers/accounts/sessions.js, line 8 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: caa656d2-e010-4a39-9acc-3bfa802223df - Path: src/controllers/accounts/settings.js, line 20 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 04a75150-5080-4745-acb7-5902df50fa7c - Path: src/controllers/accounts/settings.js, line 129 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: fbbf2a93-6bb8-4b2e-add7-faa655fe6200 - Path: src/controllers/accounts/tags.js, line 8 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 4e2bf728-1d58-4c5f-a683-79ee36ac7867 - Path: src/controllers/accounts/uploads.js, line 14 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 7acfc816-c4be-42e5-8240-06ee64178e08 - Path: src/controllers/activitypub/topics.js, line 21 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 3d02fcad-d756-4d2b-a44b-7ec9bcbca72d - Path: src/controllers/admin/admins-mods.js, line 15 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 857d02d7-b499-4ca1-82c4-0530d1c0a4a8 - Path: src/controllers/admin/appearance.js, line 5 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 7b5ddeaf-cec6-4964-9068-5ac2ceda6171 - Path: src/controllers/admin/appearance.js, line 9 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 7bee2fde-49c4-4a5e-a881-a8c6b5ee0f70 - Path: src/controllers/admin/appearance.js, line 13 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 451b8c69-b744-49ef-849f-7f2cd277e611 - Path: src/controllers/admin/cache.js, line 8 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: be372d82-eba4-42c2-be37-6ad66cbc3afa - Path: src/controllers/admin/categories.js, line 20 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 9ecffa3c-9ac3-45af-a23f-3dbd37ccfe52 - Path: src/controllers/admin/categories.js, line 51 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 6562eb7c-fb49-4439-a71c-c12cbb1d821f - Path: src/controllers/admin/categories.js, line 147 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: cca1f3fc-d809-43db-bab2-b16a64ba8ef2 - Path: src/controllers/admin/categories.js, line 160 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 52c2fad6-4661-44c5-b236-0ae440edc32e - Path: src/controllers/admin/dashboard.js, line 21 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: cafde908-e55f-47da-a17f-086ca4021d15 - Path: src/controllers/admin/dashboard.js, line 253 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 96e8e07c-e403-42e6-95c1-8c893b29411e - Path: src/controllers/admin/dashboard.js, line 289 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: dc4cf812-8b08-4381-9905-1679d868841f - Path: src/controllers/admin/dashboard.js, line 316 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: d6e836aa-786e-4420-8077-fbd73d705500 - Path: src/controllers/admin/dashboard.js, line 343 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 28e05774-8f20-4a6c-9333-ccf81b8c0521 - Path: src/controllers/admin/database.js, line 7 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 6e9da6c0-ce1a-4f85-ad97-65e13ef3e0c1 - Path: src/controllers/admin/digest.js, line 9 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 820b5ea6-3967-4c5f-934d-ee73a64117f4 - Path: src/controllers/admin/errors.js, line 11 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 489a9152-a621-427c-b062-22c869a876df - Path: src/controllers/admin/events.js, line 12 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 341f9c90-d8d6-4456-8457-9c041bc7ac1e - Path: src/controllers/admin/groups.js, line 15 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 4f02d64a-74dd-48fc-b3a5-eb564869cb3d - Path: src/controllers/admin/groups.js, line 33 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 0399c816-6b72-4462-b5eb-dd683251fe56 - Path: src/controllers/admin/hooks.js, line 8 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Code Injection - Finding ID: 16507a33-c07f-4c9b-bb6d-fdc032e99c38 - Path: public/src/ajaxify.js, line 517 - Info: Unsanitized input from data from a remote resource flows into Function, where it is executed as JavaScript code. This may result in a Code Injection vulnerability. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: e0cbb45c-459d-406b-bcad-87264e1283b3 - Path: src/controllers/admin/logs.js, line 11 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 9089aff1-013a-477e-97b8-f68b7ac2001d - Path: src/controllers/admin/plugins.js, line 10 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: e89d5893-4c44-4571-8b1f-64f570685d1a - Path: src/controllers/admin/privileges.js, line 9 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 9ce72d21-83ce-4c6a-acb8-2948219ff840 - Path: src/controllers/admin/rewards.js, line 7 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 4dc4a5db-5556-4a3d-a528-e866bec823ae - Path: src/controllers/admin/settings.js, line 20 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: e00150e5-fc43-432b-abe7-14174ed457c4 - Path: src/controllers/admin/settings.js, line 37 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 93ab0710-36cf-44f9-a3d5-9ea4c0bfb127 - Path: src/controllers/admin/settings.js, line 67 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: f7e5afd2-727f-4418-9290-406bdbe0d6d3 - Path: src/controllers/admin/settings.js, line 83 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 08404109-8c39-4205-b04d-ec270a377a4a - Path: src/controllers/admin/settings.js, line 89 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: ce9cc524-b286-49f1-bff3-36e617cc50e1 - Path: src/controllers/admin/settings.js, line 95 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: ae494121-f431-4577-92b9-e638273ca091 - Path: src/controllers/admin/settings.js, line 101 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: e5f55746-5b0a-4ac4-8f13-bb622db5d775 - Path: src/controllers/admin/settings.js, line 110 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 9c17fb1e-cbf0-43a5-b006-0e6dca85e862 - Path: src/controllers/admin/settings.js, line 116 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 06ac7456-7d87-4130-aeae-285bd7aba27c - Path: src/controllers/admin/settings.js, line 127 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 81c9e76c-3d55-481f-8421-2d06b317d644 - Path: src/controllers/admin/settings.js, line 133 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: a08f14fa-a59e-4e25-971f-152530dbeed2 - Path: src/controllers/admin/settings.js, line 139 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: eb705039-327b-444e-9d9c-945589e5535b - Path: src/controllers/admin/settings.js, line 145 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: de0cb601-5358-43ca-8ed0-5f56879f37dc - Path: src/controllers/admin/settings.js, line 162 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: d0e552b5-31ca-430e-a816-3b8d114435b9 - Path: src/controllers/admin/settings.js, line 177 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 6a7faf71-f4c9-4a77-af71-9c739f253b7d - Path: src/controllers/admin/settings.js, line 183 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 1373b2e6-28de-4b21-ae7e-20c745721bda - Path: src/controllers/admin/settings.js, line 189 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 40846da7-fa7d-4aab-a9c0-5e617dae5477 - Path: src/controllers/admin/tags.js, line 7 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 6f04c7dd-fce2-44f5-961d-0116a53505a3 - Path: src/controllers/admin/themes.js, line 13 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 4e941a07-6046-4d12-88c8-ed5a31b81f38 - Path: src/controllers/admin/uploads.js, line 21 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 107c700b-7ab9-4240-8843-b433c384b379 - Path: src/controllers/admin/users.js, line 21 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 03d30639-a6fe-4b18-8ce0-76256ae488ce - Path: src/controllers/admin/users.js, line 29 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 1599332c-0646-4bb3-bda7-600d407ad8a9 - Path: src/controllers/admin/users.js, line 119 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 394cb934-3e03-49eb-a599-16cf6bfaca18 - Path: src/controllers/admin/users.js, line 209 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: fbf1118f-eab8-4fd5-b76b-0aa3c0d0acaf - Path: src/controllers/admin/users.js, line 255 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: d0fa0d60-d6dc-4176-a54f-e38414280b87 - Path: src/controllers/admin/users.js, line 305 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: daae9fcb-d03a-4191-95bb-0436bff23b5a - Path: src/controllers/admin/widgets.js, line 6 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: a8063aad-989b-4c47-90e3-3ff69c79be10 - Path: src/controllers/categories.js, line 14 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 177eecf0-1afb-4999-9535-74800ab4e2d7 - Path: src/controllers/category.js, line 29 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 6817a1ba-dc7c-4566-bdc5-6f810e456db0 - Path: src/controllers/composer.js, line 11 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 81f795ed-5e1a-43e1-bc2b-18f3861cae90 - Path: src/controllers/globalmods.js, line 13 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 7eb03e24-7368-480a-9be1-6f6a34ed326c - Path: src/controllers/groups.js, line 17 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 8e7b8e09-47ba-42c1-8665-c3a2e5243691 - Path: src/controllers/groups.js, line 70 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 88eb6655-9894-49e3-b44c-aa82afa7aa5b - Path: src/controllers/accounts/follow.js, line 17 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: b7ec23c6-d1e2-431c-91ca-5923dd4c9ec7 - Path: src/controllers/index.js, line 46 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: c36453e4-03a6-445c-90d2-ad090dd842b7 - Path: src/controllers/index.js, line 98 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 9bd145b9-0286-4499-a238-21ea26f682d8 - Path: src/controllers/index.js, line 146 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 88b81d02-26f0-47cf-b6e1-6da314869d5b - Path: src/controllers/index.js, line 195 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 59ec5164-0091-4d25-9d10-405d56fd69db - Path: src/controllers/index.js, line 226 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 0070252e-c75d-4d0c-a9de-25eb0d392730 - Path: src/controllers/index.js, line 345 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 988bcc32-b205-4674-a5f2-329f37cd6626 - Path: src/controllers/index.js, line 366 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: cb0a3a9a-8e0d-4bdb-8d3d-53cfe871ad70 - Path: src/controllers/mods.js, line 24 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 9c163785-a7d5-4e75-95b4-37e0b208920c - Path: src/controllers/mods.js, line 133 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 77140356-095b-45aa-b04b-821b102c7e67 - Path: src/controllers/mods.js, line 216 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: c7694e67-f94e-41b9-b046-6d8382b0e8b6 - Path: src/controllers/popular.js, line 12 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: d5d35301-c82f-4e98-9d4a-dd3d9e61c810 - Path: src/controllers/recent.js, line 16 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 20e22c10-d762-4b28-a6e0-40dd1555b699 - Path: src/controllers/search.js, line 22 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 41c9e29f-775a-40e3-a68c-4cfef8daeb4c - Path: src/controllers/service-worker.js, line 11 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 9ab6a95d-95c5-4c10-bb5e-11b98cae8780 - Path: src/controllers/tags.js, line 19 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: a70cd10a-45a3-4bf0-8083-8e7b9e49e4b6 - Path: src/controllers/tags.js, line 88 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 4135b621-d407-44a8-a108-060a56ce3736 - Path: src/controllers/top.js, line 12 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 1e8bb251-1e2b-41d1-a377-f1fc56c7a6f8 - Path: src/controllers/topics.js, line 25 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 61cb94ad-5448-4de7-85f1-6e2d71594554 - Path: src/controllers/unread.js, line 17 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 77bf6057-cc97-402d-8d38-f8062864de21 - Path: src/controllers/users.js, line 39 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: b61afab0-d096-4f32-b9b6-5d15898e02f5 - Path: src/controllers/users.js, line 50 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 260f7cd3-92d6-472b-9eeb-867f55e10ebf - Path: src/controllers/users.js, line 103 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: bddeab30-1242-41dd-b671-9dcfa4704197 - Path: src/controllers/users.js, line 195 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 51c9d4fe-b626-4b6e-a46e-728530fc1531 - Path: src/middleware/index.js, line 147 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 8a33d0c5-25be-4ea2-a401-0fe6219343b6 - Path: src/middleware/index.js, line 223 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 60a94e1e-761f-412b-9c3c-38aade14af84 - Path: src/middleware/maintenance.js, line 12 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: f43afbc9-6a2b-443b-9f2c-b11720988ef8 - Path: src/routes/debug.js, line 17 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 61fd3a8a-19b7-48ff-ac21-f788c3cd72f9 - Path: vendor/nodebb-plugin-composer-default/controllers.js, line 5 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: da59df81-e4b2-4b4b-8cbe-61e8ca2c1598 - Path: vendor/nodebb-theme-harmony-2.1.35/lib/controllers.js, line 8 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 26ba79bc-d363-4754-ae11-82214752d7f2 - Path: vendor/nodebb-theme-harmony-2.1.35/lib/controllers.js, line 14 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 5d2feead-f6f4-4572-9966-86104b6ac931 - Path: install/web.js, line 178 - Info: Expensive operation (a system command execution) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits for Login Operations - Finding ID: c0a8d388-731b-40a9-a256-d5c82f2cb7bb - Path: src/controllers/authentication.js, line 280 - Info: Call to passport.authenticate performs user authentication, but is not protected by any rate-limiting mechanism. This may enable the attackers to bruteforce users' passwords. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits for Login Operations - Finding ID: 5d67b2fc-4744-497d-b804-f5e4f6e2b48a - Path: src/middleware/user.js, line 28 - Info: Call to passport.authenticate performs user authentication, but is not protected by any rate-limiting mechanism. This may enable the attackers to bruteforce users' passwords. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits for Login Operations - Finding ID: a759ed9a-e695-4e8c-8ea6-e76e1e4733ad - Path: src/routes/authentication.js, line 106 - Info: Call to passport.authenticate performs user authentication, but is not protected by any rate-limiting mechanism. This may enable the attackers to bruteforce users' passwords. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits for Login Operations - Finding ID: c25a40f5-dcbc-4f1d-bc35-28f2c7322f55 - Path: src/routes/authentication.js, line 124 - Info: Call to passport.authenticate performs user authentication, but is not protected by any rate-limiting mechanism. This may enable the attackers to bruteforce users' passwords. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Open Redirect - Finding ID: 8bbbfcc8-7f13-4281-9c38-5dbd2d72aa16 - Path: public/src/ajaxify.js, line 176 - Info: Unsanitized input from data from a remote resource flows into window.open, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. - - ✗ [MEDIUM] Open Redirect - Finding ID: 8de631ea-7f99-4a4d-af7b-51f0626ca7c7 - Path: public/src/modules/logout.js, line 20 - Info: Unsanitized input from data from a remote resource flows into window.location, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. - - ✗ [MEDIUM] Open Redirect - Finding ID: 6a007425-a109-49db-ab98-9492848a329b - Path: src/controllers/errors.js, line 22 - Info: Unsanitized input from the request URL flows into redirect, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. - - ✗ [MEDIUM] Open Redirect - Finding ID: d72f0193-53ee-4634-a3f1-cf960cb377b6 - Path: src/controllers/errors.js, line 24 - Info: Unsanitized input from the request URL flows into redirect, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. - - ✗ [MEDIUM] Open Redirect - Finding ID: af966cd4-8ee3-4b87-a16a-f57824b9d163 - Path: src/middleware/index.js, line 75 - Info: Unsanitized input from the request URL flows into redirect, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. - - ✗ [MEDIUM] Open Redirect - Finding ID: af60fe69-17b7-4774-b5fe-21a58e29c417 - Path: src/middleware/user.js, line 265 - Info: Unsanitized input from an HTTP parameter flows into redirect, where it is used as input for request redirection. This may result in an Open Redirect vulnerability. - - ✗ [MEDIUM] DOM-based Cross-site Scripting (XSS) - Finding ID: f6af20db-369f-4bcf-871b-e6fd45c70bb4 - Path: public/src/client/category/tools.js, line 299 - Info: Unsanitized input from data from a remote resource flows into replaceWith, where it is used to dynamically construct the HTML page on client side. This may result in a DOM Based Cross-Site Scripting attack (DOMXSS). - - ✗ [MEDIUM] Cleartext Transmission - HTTP Instead of HTTPS - Finding ID: 7f0553d2-ca28-45cd-84cd-83c963ac5146 - Path: src/webserver.js, line 47 - Info: http.createServer uses HTTP which is an insecure protocol and should not be used in code due to cleartext transmission of information. Data in cleartext in a communication channel can be sniffed by unauthorized actors. Consider using the https module instead. - - ✗ [MEDIUM] DOM-based Cross-site Scripting (XSS) - Finding ID: ad784ac7-965f-45d6-a670-cd09e6f715a3 - Path: public/src/client/chats.js, line 736 - Info: Unsanitized input from data from a remote resource flows into html, where it is used to dynamically construct the HTML page on client side. This may result in a DOM Based Cross-Site Scripting attack (DOMXSS). - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 358f3dc8-8fb1-472c-bd86-85a507cf3d48 - Path: install/web.js, line 149 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: c71f1869-fe3e-49af-8f3f-3dea912042f2 - Path: src/controllers/404.js, line 55 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 3c6eb060-9f97-4ef3-9ce2-1f890d71ddea - Path: src/controllers/accounts/blocks.js, line 10 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 0c58fb50-83eb-4206-acb5-b620db1445d6 - Path: src/controllers/accounts/categories.js, line 11 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: d0528864-95d1-4478-8956-3421ace15462 - Path: src/controllers/accounts/chats.js, line 12 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: d138327d-491c-42ce-822d-0079efe71f06 - Path: src/controllers/accounts/consent.js, line 9 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: b9a06d1e-e092-4425-9afd-00b5e86cf9fa - Path: src/controllers/accounts/edit.js, line 14 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Information Exposure - X-Powered-By Header - Finding ID: cb301ca9-34ff-43b0-834a-1cd04b4d761a - Path: install/web.js, line 22 - Info: Disable X-Powered-By header for your Express app (consider using Helmet middleware), because it exposes information about the used framework to potential attackers. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 387b7b7d-61c6-413a-8ae1-db8339c2a9d0 - Path: src/controllers/accounts/edit.js, line 88 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: c6d16fae-144f-401b-b8ec-2e8d2c8ea001 - Path: src/controllers/accounts/edit.js, line 92 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: a506187a-941e-46dd-ad76-2a7f4c544cca - Path: src/controllers/accounts/edit.js, line 109 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Cross-site Scripting (XSS) - Finding ID: c276c79d-93d7-40e7-9fa6-851d2e240914 - Path: src/controllers/errors.js, line 116 - Info: Unsanitized input from an exception flows into send, where it is used to render an HTML page returned to the user. This may result in a Cross-Site Scripting attack (XSS). - - ✗ [MEDIUM] Cross-site Scripting (XSS) - Finding ID: facb0813-c4a4-44d3-b308-01b0ed19b44b - Path: src/controllers/composer.js, line 96 - Info: Unsanitized input from an exception flows into send, where it is used to render an HTML page returned to the user. This may result in a Cross-Site Scripting attack (XSS). - - ✗ [MEDIUM] Cross-site Scripting (XSS) - Finding ID: b79d9ba6-5bee-4628-b4ad-653cc6b5ab1d - Path: src/controllers/authentication.js, line 499 - Info: Unsanitized input from an exception flows into send, where it is used to render an HTML page returned to the user. This may result in a Cross-Site Scripting attack (XSS). - - ✗ [MEDIUM] Cross-site Scripting (XSS) - Finding ID: ff10b5c9-4fd0-4ec1-b019-83ea42c99cb2 - Path: src/controllers/authentication.js, line 124 - Info: Unsanitized input from an exception flows into send, where it is used to render an HTML page returned to the user. This may result in a Cross-Site Scripting attack (XSS). - - ✗ [MEDIUM] Allocation of Resources Without Limits or Throttling - Finding ID: 2a3368fe-3166-4365-acde-316467b7967f - Path: src/controllers/accounts/follow.js, line 13 - Info: Expensive operation (a file system operation) is performed by an endpoint handler which does not use a rate-limiting mechanism. It may enable the attackers to perform Denial-of-service attacks. Consider using a rate-limiting middleware such as express-limit. - - ✗ [MEDIUM] Cross-Site Request Forgery (CSRF) - Finding ID: 1da0b819-0b24-40c7-a113-a3498c93956c - Path: src/webserver.js, line 11 - Info: CSRF protection is disabled for your Express app. This allows the attackers to execute requests on a user's behalf. - - ✗ [MEDIUM] Information Exposure - Server Error Message - Finding ID: 4c09a4bd-51af-4ff3-ac15-6d78af445a6a - Path: src/controllers/authentication.js, line 283 - Info: An error object flows to send and is leaked to the attacker. This may disclose important information about the application to an attacker. - - ✗ [MEDIUM] Information Exposure - Server Error Message - Finding ID: d6c581da-2bc5-400d-921e-dd83dd3c7d05 - Path: src/controllers/helpers.js, line 26 - Info: An error object flows to send and is leaked to the attacker. This may disclose important information about the application to an attacker. - - ✗ [MEDIUM] Cross-Site Request Forgery (CSRF) - Finding ID: 8ebf1d94-07a5-4351-a443-aab4a57d852f - Path: install/web.js, line 22 - Info: CSRF protection is disabled for your Express app. This allows the attackers to execute requests on a user's behalf. - - ✗ [HIGH] Path Traversal - Finding ID: 172f599f-34d6-4b92-ac55-79a7d103c513 - Path: src/controllers/admin/themes.js, line 19 - Info: Unsanitized input from an HTTP parameter flows into readFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: 42d61a8e-73f4-4408-b4ce-a094f548606d - Path: src/controllers/admin/uploads.js, line 306 - Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: 92df1caa-6f95-43c4-93c2-bf909e240d33 - Path: src/controllers/admin/uploads.js, line 192 - Info: Unsanitized input from an uploaded file flows into readFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: 681f8265-a8a5-4fe1-8547-3c26930afaff - Path: src/controllers/uploads.js, line 202 - Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: 8f1a6793-977a-4e01-96e3-5420e212352d - Path: src/controllers/admin/uploads.js, line 214 - Info: Unsanitized input from an uploaded file flows into copyFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: ffe5d7eb-0f5d-4ecb-9fb3-ab7dd57a8397 - Path: src/controllers/admin/uploads.js, line 188 - Info: Unsanitized input from an uploaded file flows into copyFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: 14e124a8-1c32-426f-8e74-74dd2654b151 - Path: src/controllers/admin/uploads.js, line 172 - Info: Unsanitized input from an uploaded file flows into copyFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: 7e29b203-e118-424f-b549-33660834bddd - Path: src/controllers/admin/uploads.js, line 94 - Info: Unsanitized input from an HTTP parameter flows into readdir, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to list arbitrary directories. - - ✗ [HIGH] Path Traversal - Finding ID: 5aca0809-046e-4753-8e41-ebc0673dc7e2 - Path: src/controllers/admin/uploads.js, line 284 - Info: Unsanitized input from an uploaded file flows into readFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: e5e773b1-1e29-4178-a240-11cd1086e51b - Path: src/controllers/admin/uploads.js, line 237 - Info: Unsanitized input from an uploaded file flows into copyFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to overwrite arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: 53684a7d-8912-40b5-a2ea-eae0ab35dd95 - Path: src/controllers/admin/uploads.js, line 279 - Info: Unsanitized input from an uploaded file flows into copyFile, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to read arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: b175f9c2-5c9f-4ddc-818c-3e46b342a9cc - Path: src/controllers/admin/uploads.js, line 268 - Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: 3ea3f2dd-35d6-4c05-b990-c8dfe0ed76d3 - Path: src/controllers/admin/uploads.js, line 242 - Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: b8618b47-b1db-459d-bbaa-6f69115c8dc8 - Path: src/controllers/admin/uploads.js, line 229 - Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: 8f548504-3595-4dc2-b066-a028cb63bbb7 - Path: src/controllers/admin/uploads.js, line 219 - Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: c5cfffec-ebd0-4fd8-86dc-5b9eec98e99b - Path: src/controllers/admin/uploads.js, line 203 - Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: c403aab6-40f0-4209-aff9-48dc7b0eac84 - Path: src/controllers/admin/uploads.js, line 177 - Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: 6aeb75c6-f21e-4db5-98fe-5425804a3092 - Path: src/controllers/admin/uploads.js, line 157 - Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. - - ✗ [HIGH] Path Traversal - Finding ID: 1635818f-0fc8-4df9-b96c-0bdf749e51a2 - Path: src/controllers/accounts/edit.js, line 168 - Info: Unsanitized input from an uploaded file flows into unlink, where it is used as a path. This may result in a Path Traversal vulnerability and allow an attacker to delete arbitrary files. - - - -╭─────────────────────────────────────────────────────────────────╮ -│ Test Summary │ -│ │ -│ Organization: yuriishmal │ -│ Test type: Static code analysis │ -│ Project path: /workspaces/nodebb-spring-26-clean-code │ -│ │ -│ Total issues: 244 │ -│ Ignored issues: 0 [ 0 HIGH 0 MEDIUM 0 LOW ] │ -│ Open issues: 244 [ 19 HIGH 148 MEDIUM 77 LOW ] │ -╰─────────────────────────────────────────────────────────────────╯ - -💡 Tip - - To view ignored issues, use the --include-ignores option. - - -node ➜ /workspaces/nodebb-spring-26-clean-code (test-snyk) $ snyk test - -Testing /workspaces/nodebb-spring-26-clean-code... - -Tested 827 dependencies for known issues, found 13 issues, 29 vulnerable paths. - - -Issues to fix by upgrading: - - Upgrade lodash@4.17.21 to lodash@4.17.23 to fix - ✗ Prototype Pollution [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-LODASH-15053838] in lodash@4.17.21 - introduced by lodash@4.17.21 and 9 other path(s) - - Upgrade multer@2.0.2 to multer@2.1.1 to fix - ✗ Uncontrolled Recursion (new) [High Severity][https://security.snyk.io/vuln/SNYK-JS-MULTER-15417528] in multer@2.0.2 - introduced by multer@2.0.2 and 1 other path(s) - ✗ Missing Release of Resource after Effective Lifetime (new) [High Severity][https://security.snyk.io/vuln/SNYK-JS-MULTER-15365916] in multer@2.0.2 - introduced by multer@2.0.2 and 1 other path(s) - ✗ Incomplete Cleanup (new) [High Severity][https://security.snyk.io/vuln/SNYK-JS-MULTER-15365918] in multer@2.0.2 - introduced by multer@2.0.2 and 1 other path(s) - - Upgrade nodebb-plugin-dbsearch@6.3.4 to nodebb-plugin-dbsearch@6.4.1 to fix - ✗ Prototype Pollution [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-LODASH-15053838] in lodash@4.17.21 - introduced by lodash@4.17.21 and 9 other path(s) - - Upgrade nodebb-plugin-mentions@4.8.5 to nodebb-plugin-mentions@4.8.17 to fix - ✗ Prototype Pollution [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-LODASH-15053838] in lodash@4.17.21 - introduced by lodash@4.17.21 and 9 other path(s) - - Upgrade terser-webpack-plugin@5.3.16 to terser-webpack-plugin@5.3.17 to fix - ✗ Arbitrary Code Injection [High Severity][https://security.snyk.io/vuln/SNYK-JS-SERIALIZEJAVASCRIPT-570062] in serialize-javascript@6.0.2 - introduced by terser-webpack-plugin@5.3.16 > serialize-javascript@6.0.2 and 1 other path(s) - - -Issues with no direct upgrade or patch: - ✗ Cross-site Scripting (XSS) [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-BOOTBOX-174704] in bootbox@6.0.4 - introduced by bootbox@6.0.4 - No upgrade or patch available - ✗ Use of a Cryptographic Primitive with a Risky Implementation [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-ELLIPTIC-14908844] in elliptic@6.6.1 - introduced by nodebb-plugin-2factor@7.6.1 > fido2-lib@2.8.3 > jwk-to-pem@2.0.7 > elliptic@6.6.1 - No upgrade or patch available - ✗ Prototype Pollution [Critical Severity][https://security.snyk.io/vuln/SNYK-JS-IMMUTABLE-15423650] in immutable@5.1.4 - introduced by sass@1.97.2 > immutable@5.1.4 and 3 other path(s) - This issue was fixed in versions: 3.8.3, 4.3.8, 5.1.5 - ✗ Cross-site Scripting (XSS) [Critical Severity][https://security.snyk.io/vuln/SNYK-JS-JQUERYFORM-574783] in jquery-form@4.3.0 - introduced by jquery-form@4.3.0 - No upgrade or patch available - ✗ Regular Expression Denial of Service (ReDoS) [High Severity][https://security.snyk.io/vuln/SNYK-JS-MINIMATCH-15309438] in minimatch@9.0.1 - introduced by pretty@2.0.0 > js-beautify@1.15.4 > editorconfig@1.0.4 > minimatch@9.0.1 - This issue was fixed in versions: 3.1.3, 4.2.4, 5.1.7, 6.2.1, 7.4.7, 8.0.5, 9.0.6, 10.2.1 - ✗ Regular Expression Denial of Service (ReDoS) [High Severity][https://security.snyk.io/vuln/SNYK-JS-MINIMATCH-15353387] in minimatch@9.0.1 - introduced by pretty@2.0.0 > js-beautify@1.15.4 > editorconfig@1.0.4 > minimatch@9.0.1 - This issue was fixed in versions: 8.0.6, 9.0.7, 10.2.3 - ✗ Inefficient Algorithmic Complexity [High Severity][https://security.snyk.io/vuln/SNYK-JS-MINIMATCH-15353389] in minimatch@9.0.1 - introduced by pretty@2.0.0 > js-beautify@1.15.4 > editorconfig@1.0.4 > minimatch@9.0.1 - This issue was fixed in versions: 3.1.3, 4.2.5, 5.1.8, 6.2.2, 7.4.8, 8.0.6, 9.0.7, 10.2.3 - ✗ Regular Expression Denial of Service (ReDoS) [Medium Severity][https://security.snyk.io/vuln/SNYK-JS-ZXCVBN-3257741] in zxcvbn@4.4.2 - introduced by zxcvbn@4.4.2 - No upgrade or patch available - - - -Organization: yuriishmal -Package manager: npm -Target file: package-lock.json -Project name: nodebb -Open source: no -Project path: /workspaces/nodebb-spring-26-clean-code -Licenses: enabled - -Tip: Detected multiple supported manifests (3), use --all-projects to scan all of them at once. \ No newline at end of file From 2c4cfcb8b763af59c25c4185116849d40a0bd946 Mon Sep 17 00:00:00 2001 From: Yurii Shmal <115579239+yuriiShmal@users.noreply.github.com> Date: Thu, 12 Mar 2026 18:42:00 -0400 Subject: [PATCH 6/6] Put back @socket.io/redis-adapter dependency --- install/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/install/package.json b/install/package.json index 39914edf7f..d39792760f 100644 --- a/install/package.json +++ b/install/package.json @@ -140,6 +140,7 @@ "snyk": "^1.1303.1", "socket.io": "4.8.3", "socket.io-client": "4.8.3", + "@socket.io/redis-adapter": "8.3.0", "sortablejs": "1.15.6", "spdx-license-list": "6.11.0", "terser-webpack-plugin": "5.3.16",