From 1b008a5241091ffc416800438a1746d71179c5a2 Mon Sep 17 00:00:00 2001 From: EhsanParsania <75175231+EhsanParsania@users.noreply.github.com> Date: Sat, 9 Sep 2023 11:32:03 +0300 Subject: [PATCH 1/4] fix postgres's regex sanitizater --- src/Adapters/Storage/Postgres/PostgresStorageAdapter.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js index 3ad59ec77f..efbe985bf9 100644 --- a/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js +++ b/src/Adapters/Storage/Postgres/PostgresStorageAdapter.js @@ -2656,7 +2656,7 @@ function literalizeRegexPart(s: string) { .replace(/([^\\])(\\Q)/, '$1') .replace(/^\\E/, '') .replace(/^\\Q/, '') - .replace(/([^'])'/, `$1''`) + .replace(/([^'])'/g, `$1''`) .replace(/^'([^'])/, `''$1`); } From 5153658e4306815baa8af436bb1d38033e415104 Mon Sep 17 00:00:00 2001 From: EhsanParsania <75175231+EhsanParsania@users.noreply.github.com> Date: Sun, 17 Sep 2023 12:56:51 +0300 Subject: [PATCH 2/4] add sql test case --- spec/vulnerabilities.spec.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/spec/vulnerabilities.spec.js b/spec/vulnerabilities.spec.js index c499eb015f..4d45464834 100644 --- a/spec/vulnerabilities.spec.js +++ b/spec/vulnerabilities.spec.js @@ -459,3 +459,28 @@ describe('Vulnerabilities', () => { }); }); }); + +fdescribe('Postgres regex sanitizater', () => { + it('sanitizes the regex correctly to prevent Injection', async () => { + const user = new Parse.User(); + user.set('username', 'username'); + user.set('password', 'password'); + user.set('email', 'email@example.com'); + await user.signUp(); + + const response = await request({ + method: 'GET', + url: + "http://localhost:8378/1/classes/_User?where[username][$regex]=A'B'%3BSELECT+PG_SLEEP(3)%3B--", + headers: { + 'Content-Type': 'application/json', + 'X-Parse-Application-Id': 'test', + 'X-Parse-REST-API-Key': 'rest', + }, + }); + + expect(response.status).toBe(200); + expect(response.data.results).toEqual(jasmine.any(Array)); + expect(response.data.results.length).toBe(0); + }); +}); From 6e08e4c4c6b15dbc4c991ed23e7c7f383a4cd088 Mon Sep 17 00:00:00 2001 From: EhsanParsania <75175231+EhsanParsania@users.noreply.github.com> Date: Mon, 18 Sep 2023 09:29:43 +0300 Subject: [PATCH 3/4] remove extra char --- spec/vulnerabilities.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/vulnerabilities.spec.js b/spec/vulnerabilities.spec.js index 4d45464834..d6c7971cad 100644 --- a/spec/vulnerabilities.spec.js +++ b/spec/vulnerabilities.spec.js @@ -460,7 +460,7 @@ describe('Vulnerabilities', () => { }); }); -fdescribe('Postgres regex sanitizater', () => { +describe('Postgres regex sanitizater', () => { it('sanitizes the regex correctly to prevent Injection', async () => { const user = new Parse.User(); user.set('username', 'username'); From 50522af4c35e56f03b30c3bc3684b7d4167d7c70 Mon Sep 17 00:00:00 2001 From: Manuel Trezza <5673677+mtrezza@users.noreply.github.com> Date: Fri, 1 Mar 2024 15:25:58 +0100 Subject: [PATCH 4/4] empty