From 28a27fd35a97cc8fa9abd501c1d55f231b4af91f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Wed, 24 Jun 2026 06:10:39 +0000 Subject: [PATCH 1/9] chore: sync contributors list [skip ci] --- README.md | 4 ++-- data/contributors.json | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d28aa6870..7e217aae8 100644 --- a/README.md +++ b/README.md @@ -402,8 +402,8 @@ Found a security vulnerability? Please report it responsibly to **security@learn | Srushti-Kamble14
@Srushti-Kamble14 | HarshaNaidu11
@HarshaNaidu11 | sricharan-213
@sricharan-213 | knoxiboy
@knoxiboy | prakshithamalla-art
@prakshithamalla-art | | Pratyush-Panda-2006
@Pratyush-Panda-2006 | Vaishnav-Hub9
@Vaishnav-Hub9 | basantnema31
@basantnema31 | Sandeep6135
@Sandeep6135 | Arhanabdullah
@Arhanabdullah | | Chakshu-Bamotra-04
@Chakshu-Bamotra-04 | DhruvalBhinsara1
@DhruvalBhinsara1 | paripnj
@paripnj | nancy-verma780
@nancy-verma780 | KRUSHAL2956
@KRUSHAL2956 | -| wyf027
@wyf027 | akashgoudsidduluri
@akashgoudsidduluri | jainiksha
@jainiksha | dynamo-pentester
@dynamo-pentester | pragya0129
@pragya0129 | -| anshul23102
@anshul23102 | siddharth277
@siddharth277 | PRODHOSH
@PRODHOSH | tamannaa-rath
@tamannaa-rath | anshika1179
@anshika1179 | +| wyf027
@wyf027 | akashgoudsidduluri
@akashgoudsidduluri | jainiksha
@jainiksha | tamannaa-rath
@tamannaa-rath | dynamo-pentester
@dynamo-pentester | +| pragya0129
@pragya0129 | anshul23102
@anshul23102 | siddharth277
@siddharth277 | PRODHOSH
@PRODHOSH | anshika1179
@anshika1179 | | paridhijain153
@paridhijain153 | omnipotentchaos
@omnipotentchaos | vedant7007
@vedant7007 | Ayushh-Sharmaa
@Ayushh-Sharmaa | suhaniiz
@suhaniiz | | AMAN194701
@AMAN194701 | Divyanshu227
@Divyanshu227 | thevaibhavtyagi
@thevaibhavtyagi | skypank-coder
@skypank-coder | harshbok69-bit
@harshbok69-bit | | SuhridXSingh
@SuhridXSingh | Sweksha-Kakkar
@Sweksha-Kakkar | Pratikshya32
@Pratikshya32 | adityayadav176
@adityayadav176 | advikdivekar
@advikdivekar | diff --git a/data/contributors.json b/data/contributors.json index b266b9242..a28480fb6 100644 --- a/data/contributors.json +++ b/data/contributors.json @@ -3,7 +3,7 @@ "username": "Premshaw23", "name": "Prem Shaw", "admin": true, - "contributions": 1753 + "contributions": 1754 }, { "username": "ionfwsrijan", @@ -133,6 +133,10 @@ "username": "jainiksha", "contributions": 20 }, + { + "username": "tamannaa-rath", + "contributions": 19 + }, { "username": "dynamo-pentester", "contributions": 18 @@ -153,10 +157,6 @@ "username": "PRODHOSH", "contributions": 17 }, - { - "username": "tamannaa-rath", - "contributions": 17 - }, { "username": "anshika1179", "contributions": 17 From f64bfb7d9648a6b59f74ddd4447624b042cebbac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 25 Jun 2026 06:11:37 +0000 Subject: [PATCH 2/9] chore: sync contributors list [skip ci] --- README.md | 6 +++--- data/contributors.json | 10 +++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7e217aae8..e7a5707db 100644 --- a/README.md +++ b/README.md @@ -421,7 +421,7 @@ Found a security vulnerability? Please report it responsibly to **security@learn | shauryaparth1902-blip
@shauryaparth1902-blip | surya0904shankar
@surya0904shankar | AdityaSekharDas
@AdityaSekharDas | adityack477
@adityack477 | Kirtan-pc
@Kirtan-pc | | ANSHIKATYAGI30
@ANSHIKATYAGI30 | Asifmd45
@Asifmd45 | vaishalig03
@vaishalig03 | ssuyashhhh
@ssuyashhhh | Prashantbhati7
@Prashantbhati7 | | Neelr1912
@Neelr1912 | Neel-Aiprog
@Neel-Aiprog | Nazia012
@Nazia012 | aaradhyasinghai-ux
@aaradhyasinghai-ux | Abhii-afk
@Abhii-afk | -| vansh-09
@vansh-09 | sujal-rana58
@sujal-rana58 | Sha-lini3
@Sha-lini3 | shreyasingh260
@shreyasingh260 | oshin-30
@oshin-30 | +| vansh-09
@vansh-09 | sujal-rana58
@sujal-rana58 | shreyasingh260
@shreyasingh260 | Sha-lini3
@Sha-lini3 | oshin-30
@oshin-30 | | ziyakhan04
@ziyakhan04 | Yashrajsinh-Kanchva
@Yashrajsinh-Kanchva | Subham503
@Subham503 | Smrithi-krishna
@Smrithi-krishna | Shashank-8p
@Shashank-8p | | saniya196
@saniya196 | aanyabansal-22
@aanyabansal-22 | Ankitkr16
@Ankitkr16 | ApekshaRao27
@ApekshaRao27 | dhruv-jani-0808
@dhruv-jani-0808 | | gowthamrdyy
@gowthamrdyy | HarmiBhikadiya
@HarmiBhikadiya | Ketandora
@Ketandora | KhushiYadav-26
@KhushiYadav-26 | Kokila-chandrakar
@Kokila-chandrakar | @@ -434,8 +434,8 @@ Found a security vulnerability? Please report it responsibly to **security@learn | lover3123
@lover3123 | 25032007
@25032007 | pratyuxxhh
@pratyuxxhh | Achiever199
@Achiever199 | aishwary-vansh
@aishwary-vansh | | Anshika-Gupta9
@Anshika-Gupta9 | ARCHITVARMA15
@ARCHITVARMA15 | Ayush2496
@Ayush2496 | Dippp10-ally
@Dippp10-ally | Hussain053
@Hussain053 | | krishsoni-hub
@krishsoni-hub | LalithMadhav-CODING
@LalithMadhav-CODING | sahare-mayur-0071
@sahare-mayur-0071 | Nishita-Thakur
@Nishita-Thakur | Bhavikapatel06
@Bhavikapatel06 | -| PojashriJM
@PojashriJM | Pragya005
@Pragya005 | pritesh-4
@pritesh-4 | priya434960
@priya434960 | Chaudhary8587
@Chaudhary8587 | -| SARTHAKJINDAL1
@SARTHAKJINDAL1 | Sanjay452656
@Sanjay452656 | SatyajeetSahoo08
@SatyajeetSahoo08 | savniagrawal1701
@savniagrawal1701 | | +| Payal430
@Payal430 | PojashriJM
@PojashriJM | Pragya005
@Pragya005 | pritesh-4
@pritesh-4 | priya434960
@priya434960 | +| Chaudhary8587
@Chaudhary8587 | SARTHAKJINDAL1
@SARTHAKJINDAL1 | Sanjay452656
@Sanjay452656 | SatyajeetSahoo08
@SatyajeetSahoo08 | savniagrawal1701
@savniagrawal1701 | --- diff --git a/data/contributors.json b/data/contributors.json index a28480fb6..40725fa23 100644 --- a/data/contributors.json +++ b/data/contributors.json @@ -3,7 +3,7 @@ "username": "Premshaw23", "name": "Prem Shaw", "admin": true, - "contributions": 1754 + "contributions": 1755 }, { "username": "ionfwsrijan", @@ -510,11 +510,11 @@ "contributions": 2 }, { - "username": "Sha-lini3", + "username": "shreyasingh260", "contributions": 2 }, { - "username": "shreyasingh260", + "username": "Sha-lini3", "contributions": 2 }, { @@ -761,6 +761,10 @@ "username": "Bhavikapatel06", "contributions": 1 }, + { + "username": "Payal430", + "contributions": 1 + }, { "username": "PojashriJM", "contributions": 1 From 916c973ad0ae3061683aed5d0fbbfdae17df2878 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 26 Jun 2026 06:14:33 +0000 Subject: [PATCH 3/9] chore: sync contributors list [skip ci] --- data/contributors.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/contributors.json b/data/contributors.json index 40725fa23..949bfb770 100644 --- a/data/contributors.json +++ b/data/contributors.json @@ -3,7 +3,7 @@ "username": "Premshaw23", "name": "Prem Shaw", "admin": true, - "contributions": 1755 + "contributions": 1759 }, { "username": "ionfwsrijan", From 066c196cba5c51d22303d1e68588d45af87f837c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 27 Jun 2026 05:56:13 +0000 Subject: [PATCH 4/9] chore: sync contributors list [skip ci] --- README.md | 4 ++-- data/contributors.json | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index e7a5707db..3222275df 100644 --- a/README.md +++ b/README.md @@ -402,8 +402,8 @@ Found a security vulnerability? Please report it responsibly to **security@learn | Srushti-Kamble14
@Srushti-Kamble14 | HarshaNaidu11
@HarshaNaidu11 | sricharan-213
@sricharan-213 | knoxiboy
@knoxiboy | prakshithamalla-art
@prakshithamalla-art | | Pratyush-Panda-2006
@Pratyush-Panda-2006 | Vaishnav-Hub9
@Vaishnav-Hub9 | basantnema31
@basantnema31 | Sandeep6135
@Sandeep6135 | Arhanabdullah
@Arhanabdullah | | Chakshu-Bamotra-04
@Chakshu-Bamotra-04 | DhruvalBhinsara1
@DhruvalBhinsara1 | paripnj
@paripnj | nancy-verma780
@nancy-verma780 | KRUSHAL2956
@KRUSHAL2956 | -| wyf027
@wyf027 | akashgoudsidduluri
@akashgoudsidduluri | jainiksha
@jainiksha | tamannaa-rath
@tamannaa-rath | dynamo-pentester
@dynamo-pentester | -| pragya0129
@pragya0129 | anshul23102
@anshul23102 | siddharth277
@siddharth277 | PRODHOSH
@PRODHOSH | anshika1179
@anshika1179 | +| wyf027
@wyf027 | anshika1179
@anshika1179 | akashgoudsidduluri
@akashgoudsidduluri | jainiksha
@jainiksha | tamannaa-rath
@tamannaa-rath | +| dynamo-pentester
@dynamo-pentester | pragya0129
@pragya0129 | anshul23102
@anshul23102 | siddharth277
@siddharth277 | PRODHOSH
@PRODHOSH | | paridhijain153
@paridhijain153 | omnipotentchaos
@omnipotentchaos | vedant7007
@vedant7007 | Ayushh-Sharmaa
@Ayushh-Sharmaa | suhaniiz
@suhaniiz | | AMAN194701
@AMAN194701 | Divyanshu227
@Divyanshu227 | thevaibhavtyagi
@thevaibhavtyagi | skypank-coder
@skypank-coder | harshbok69-bit
@harshbok69-bit | | SuhridXSingh
@SuhridXSingh | Sweksha-Kakkar
@Sweksha-Kakkar | Pratikshya32
@Pratikshya32 | adityayadav176
@adityayadav176 | advikdivekar
@advikdivekar | diff --git a/data/contributors.json b/data/contributors.json index 949bfb770..ad34c9d26 100644 --- a/data/contributors.json +++ b/data/contributors.json @@ -3,7 +3,7 @@ "username": "Premshaw23", "name": "Prem Shaw", "admin": true, - "contributions": 1759 + "contributions": 1761 }, { "username": "ionfwsrijan", @@ -125,6 +125,10 @@ "username": "wyf027", "contributions": 21 }, + { + "username": "anshika1179", + "contributions": 21 + }, { "username": "akashgoudsidduluri", "contributions": 20 @@ -157,10 +161,6 @@ "username": "PRODHOSH", "contributions": 17 }, - { - "username": "anshika1179", - "contributions": 17 - }, { "username": "paridhijain153", "contributions": 17 From 06cfc7fd2520a91c73ffb03ca032045221f7f2c3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 28 Jun 2026 06:22:10 +0000 Subject: [PATCH 5/9] chore: sync contributors list [skip ci] --- README.md | 26 ++++++++++---------- data/contributors.json | 56 +++++++++++++++++++++--------------------- 2 files changed, 41 insertions(+), 41 deletions(-) diff --git a/README.md b/README.md index 3222275df..2d9a75c5c 100644 --- a/README.md +++ b/README.md @@ -401,19 +401,19 @@ Found a security vulnerability? Please report it responsibly to **security@learn | leonagoel
@leonagoel | Hrithik-ui753
@Hrithik-ui753 | codedbydollys10
@codedbydollys10 | pranav-cholleti
@pranav-cholleti | sanrishi
@sanrishi | | Srushti-Kamble14
@Srushti-Kamble14 | HarshaNaidu11
@HarshaNaidu11 | sricharan-213
@sricharan-213 | knoxiboy
@knoxiboy | prakshithamalla-art
@prakshithamalla-art | | Pratyush-Panda-2006
@Pratyush-Panda-2006 | Vaishnav-Hub9
@Vaishnav-Hub9 | basantnema31
@basantnema31 | Sandeep6135
@Sandeep6135 | Arhanabdullah
@Arhanabdullah | -| Chakshu-Bamotra-04
@Chakshu-Bamotra-04 | DhruvalBhinsara1
@DhruvalBhinsara1 | paripnj
@paripnj | nancy-verma780
@nancy-verma780 | KRUSHAL2956
@KRUSHAL2956 | -| wyf027
@wyf027 | anshika1179
@anshika1179 | akashgoudsidduluri
@akashgoudsidduluri | jainiksha
@jainiksha | tamannaa-rath
@tamannaa-rath | -| dynamo-pentester
@dynamo-pentester | pragya0129
@pragya0129 | anshul23102
@anshul23102 | siddharth277
@siddharth277 | PRODHOSH
@PRODHOSH | -| paridhijain153
@paridhijain153 | omnipotentchaos
@omnipotentchaos | vedant7007
@vedant7007 | Ayushh-Sharmaa
@Ayushh-Sharmaa | suhaniiz
@suhaniiz | -| AMAN194701
@AMAN194701 | Divyanshu227
@Divyanshu227 | thevaibhavtyagi
@thevaibhavtyagi | skypank-coder
@skypank-coder | harshbok69-bit
@harshbok69-bit | -| SuhridXSingh
@SuhridXSingh | Sweksha-Kakkar
@Sweksha-Kakkar | Pratikshya32
@Pratikshya32 | adityayadav176
@adityayadav176 | advikdivekar
@advikdivekar | -| PanditG4303
@PanditG4303 | NiranjanDoijode23
@NiranjanDoijode23 | vaishnavijha12
@vaishnavijha12 | ishitaajain22-tech
@ishitaajain22-tech | yuvraj-k-singh
@yuvraj-k-singh | -| Vikrant0207
@Vikrant0207 | DebasmitaBose0
@DebasmitaBose0 | Julliet-Mohanta
@Julliet-Mohanta | Shanidhya01
@Shanidhya01 | nimkarprachi17
@nimkarprachi17 | -| thakurakanksha288
@thakurakanksha288 | SOHALIYAJAY
@SOHALIYAJAY | Nihal-Reddy-K
@Nihal-Reddy-K | AdityaNarayanPadhi
@AdityaNarayanPadhi | Dhyeya29
@Dhyeya29 | -| hitdepani
@hitdepani | varun29sharma
@varun29sharma | Vaghasiya-Jemit-kanaiyalal
@Vaghasiya-Jemit-kanaiyalal | udaycodespace
@udaycodespace | PradeepTech-hub
@PradeepTech-hub | -| the-rahul-07
@the-rahul-07 | Meenbudha
@Meenbudha | kanishka-2007-tech
@kanishka-2007-tech | dhiraj-dev-19
@dhiraj-dev-19 | 4nshhh
@4nshhh | -| Ayushia5
@Ayushia5 | VishnuVardhanCodes
@VishnuVardhanCodes | Tanish-Solanki
@Tanish-Solanki | pericharlabindhumadhavi-data
@pericharlabindhumadhavi-data | pracheyyy
@pracheyyy | -| Shrutiii01
@Shrutiii01 | pradeep0153
@pradeep0153 | mxskaaan
@mxskaaan | Kritika200520
@Kritika200520 | zairahussain27
@zairahussain27 | +| Chakshu-Bamotra-04
@Chakshu-Bamotra-04 | anshika1179
@anshika1179 | DhruvalBhinsara1
@DhruvalBhinsara1 | paripnj
@paripnj | KRUSHAL2956
@KRUSHAL2956 | +| nancy-verma780
@nancy-verma780 | wyf027
@wyf027 | jainiksha
@jainiksha | akashgoudsidduluri
@akashgoudsidduluri | tamannaa-rath
@tamannaa-rath | +| siddharth277
@siddharth277 | anshul23102
@anshul23102 | pragya0129
@pragya0129 | dynamo-pentester
@dynamo-pentester | PRODHOSH
@PRODHOSH | +| paridhijain153
@paridhijain153 | omnipotentchaos
@omnipotentchaos | vedant7007
@vedant7007 | Divyanshu227
@Divyanshu227 | AMAN194701
@AMAN194701 | +| Ayushh-Sharmaa
@Ayushh-Sharmaa | suhaniiz
@suhaniiz | thevaibhavtyagi
@thevaibhavtyagi | skypank-coder
@skypank-coder | harshbok69-bit
@harshbok69-bit | +| Sweksha-Kakkar
@Sweksha-Kakkar | SuhridXSingh
@SuhridXSingh | Pratikshya32
@Pratikshya32 | adityayadav176
@adityayadav176 | advikdivekar
@advikdivekar | +| PanditG4303
@PanditG4303 | NiranjanDoijode23
@NiranjanDoijode23 | ishitaajain22-tech
@ishitaajain22-tech | vaishnavijha12
@vaishnavijha12 | yuvraj-k-singh
@yuvraj-k-singh | +| Vikrant0207
@Vikrant0207 | pradeep0153
@pradeep0153 | DebasmitaBose0
@DebasmitaBose0 | Julliet-Mohanta
@Julliet-Mohanta | Shanidhya01
@Shanidhya01 | +| nimkarprachi17
@nimkarprachi17 | thakurakanksha288
@thakurakanksha288 | SOHALIYAJAY
@SOHALIYAJAY | Nihal-Reddy-K
@Nihal-Reddy-K | AdityaNarayanPadhi
@AdityaNarayanPadhi | +| Dhyeya29
@Dhyeya29 | hitdepani
@hitdepani | varun29sharma
@varun29sharma | Vaghasiya-Jemit-kanaiyalal
@Vaghasiya-Jemit-kanaiyalal | udaycodespace
@udaycodespace | +| PradeepTech-hub
@PradeepTech-hub | the-rahul-07
@the-rahul-07 | Meenbudha
@Meenbudha | kanishka-2007-tech
@kanishka-2007-tech | dhiraj-dev-19
@dhiraj-dev-19 | +| Ayushia5
@Ayushia5 | 4nshhh
@4nshhh | VishnuVardhanCodes
@VishnuVardhanCodes | Tanish-Solanki
@Tanish-Solanki | pericharlabindhumadhavi-data
@pericharlabindhumadhavi-data | +| pracheyyy
@pracheyyy | Shrutiii01
@Shrutiii01 | mxskaaan
@mxskaaan | Kritika200520
@Kritika200520 | zairahussain27
@zairahussain27 | | tanishksinha
@tanishksinha | Shayan-Bhowmik
@Shayan-Bhowmik | NiravaM
@NiravaM | namrarafique93-del
@namrarafique93-del | yashvi-3106
@yashvi-3106 | | riddhimagupta2
@riddhimagupta2 | Copilot
@Copilot | priyanshi-coder-2
@priyanshi-coder-2 | khushi897920-lang
@khushi897920-lang | Animesh-86
@Animesh-86 | | anujsharma8d
@anujsharma8d | Bhavex
@Bhavex | ash1shkumar
@ash1shkumar | dchokshi28
@dchokshi28 | parakramgambhir2025
@parakramgambhir2025 | diff --git a/data/contributors.json b/data/contributors.json index ad34c9d26..e0518afd8 100644 --- a/data/contributors.json +++ b/data/contributors.json @@ -3,7 +3,7 @@ "username": "Premshaw23", "name": "Prem Shaw", "admin": true, - "contributions": 1761 + "contributions": 1767 }, { "username": "ionfwsrijan", @@ -105,6 +105,10 @@ "username": "Chakshu-Bamotra-04", "contributions": 24 }, + { + "username": "anshika1179", + "contributions": 24 + }, { "username": "DhruvalBhinsara1", "contributions": 23 @@ -114,11 +118,11 @@ "contributions": 22 }, { - "username": "nancy-verma780", + "username": "KRUSHAL2956", "contributions": 22 }, { - "username": "KRUSHAL2956", + "username": "nancy-verma780", "contributions": 22 }, { @@ -126,15 +130,11 @@ "contributions": 21 }, { - "username": "anshika1179", - "contributions": 21 - }, - { - "username": "akashgoudsidduluri", + "username": "jainiksha", "contributions": 20 }, { - "username": "jainiksha", + "username": "akashgoudsidduluri", "contributions": 20 }, { @@ -142,19 +142,19 @@ "contributions": 19 }, { - "username": "dynamo-pentester", + "username": "siddharth277", "contributions": 18 }, { - "username": "pragya0129", + "username": "anshul23102", "contributions": 18 }, { - "username": "anshul23102", + "username": "pragya0129", "contributions": 18 }, { - "username": "siddharth277", + "username": "dynamo-pentester", "contributions": 18 }, { @@ -174,19 +174,19 @@ "contributions": 15 }, { - "username": "Ayushh-Sharmaa", + "username": "Divyanshu227", "contributions": 14 }, { - "username": "suhaniiz", + "username": "AMAN194701", "contributions": 14 }, { - "username": "AMAN194701", + "username": "Ayushh-Sharmaa", "contributions": 14 }, { - "username": "Divyanshu227", + "username": "suhaniiz", "contributions": 14 }, { @@ -202,11 +202,11 @@ "contributions": 13 }, { - "username": "SuhridXSingh", + "username": "Sweksha-Kakkar", "contributions": 12 }, { - "username": "Sweksha-Kakkar", + "username": "SuhridXSingh", "contributions": 12 }, { @@ -230,11 +230,11 @@ "contributions": 10 }, { - "username": "vaishnavijha12", - "contributions": 9 + "username": "ishitaajain22-tech", + "contributions": 10 }, { - "username": "ishitaajain22-tech", + "username": "vaishnavijha12", "contributions": 9 }, { @@ -245,6 +245,10 @@ "username": "Vikrant0207", "contributions": 8 }, + { + "username": "pradeep0153", + "contributions": 8 + }, { "username": "DebasmitaBose0", "contributions": 8 @@ -318,11 +322,11 @@ "contributions": 6 }, { - "username": "4nshhh", + "username": "Ayushia5", "contributions": 6 }, { - "username": "Ayushia5", + "username": "4nshhh", "contributions": 6 }, { @@ -345,10 +349,6 @@ "username": "Shrutiii01", "contributions": 5 }, - { - "username": "pradeep0153", - "contributions": 5 - }, { "username": "mxskaaan", "contributions": 5 From 17b6e02f0645a85600ce1b5c3be13af86ae2c16b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 29 Jun 2026 06:52:46 +0000 Subject: [PATCH 6/9] chore: sync contributors list [skip ci] --- README.md | 4 ++-- data/contributors.json | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 2d9a75c5c..2cbcdec87 100644 --- a/README.md +++ b/README.md @@ -406,8 +406,8 @@ Found a security vulnerability? Please report it responsibly to **security@learn | siddharth277
@siddharth277 | anshul23102
@anshul23102 | pragya0129
@pragya0129 | dynamo-pentester
@dynamo-pentester | PRODHOSH
@PRODHOSH | | paridhijain153
@paridhijain153 | omnipotentchaos
@omnipotentchaos | vedant7007
@vedant7007 | Divyanshu227
@Divyanshu227 | AMAN194701
@AMAN194701 | | Ayushh-Sharmaa
@Ayushh-Sharmaa | suhaniiz
@suhaniiz | thevaibhavtyagi
@thevaibhavtyagi | skypank-coder
@skypank-coder | harshbok69-bit
@harshbok69-bit | -| Sweksha-Kakkar
@Sweksha-Kakkar | SuhridXSingh
@SuhridXSingh | Pratikshya32
@Pratikshya32 | adityayadav176
@adityayadav176 | advikdivekar
@advikdivekar | -| PanditG4303
@PanditG4303 | NiranjanDoijode23
@NiranjanDoijode23 | ishitaajain22-tech
@ishitaajain22-tech | vaishnavijha12
@vaishnavijha12 | yuvraj-k-singh
@yuvraj-k-singh | +| Sweksha-Kakkar
@Sweksha-Kakkar | SuhridXSingh
@SuhridXSingh | ishitaajain22-tech
@ishitaajain22-tech | Pratikshya32
@Pratikshya32 | adityayadav176
@adityayadav176 | +| advikdivekar
@advikdivekar | PanditG4303
@PanditG4303 | NiranjanDoijode23
@NiranjanDoijode23 | vaishnavijha12
@vaishnavijha12 | yuvraj-k-singh
@yuvraj-k-singh | | Vikrant0207
@Vikrant0207 | pradeep0153
@pradeep0153 | DebasmitaBose0
@DebasmitaBose0 | Julliet-Mohanta
@Julliet-Mohanta | Shanidhya01
@Shanidhya01 | | nimkarprachi17
@nimkarprachi17 | thakurakanksha288
@thakurakanksha288 | SOHALIYAJAY
@SOHALIYAJAY | Nihal-Reddy-K
@Nihal-Reddy-K | AdityaNarayanPadhi
@AdityaNarayanPadhi | | Dhyeya29
@Dhyeya29 | hitdepani
@hitdepani | varun29sharma
@varun29sharma | Vaghasiya-Jemit-kanaiyalal
@Vaghasiya-Jemit-kanaiyalal | udaycodespace
@udaycodespace | diff --git a/data/contributors.json b/data/contributors.json index e0518afd8..86ae5e401 100644 --- a/data/contributors.json +++ b/data/contributors.json @@ -3,7 +3,7 @@ "username": "Premshaw23", "name": "Prem Shaw", "admin": true, - "contributions": 1767 + "contributions": 1768 }, { "username": "ionfwsrijan", @@ -209,6 +209,10 @@ "username": "SuhridXSingh", "contributions": 12 }, + { + "username": "ishitaajain22-tech", + "contributions": 11 + }, { "username": "Pratikshya32", "contributions": 11 @@ -229,10 +233,6 @@ "username": "NiranjanDoijode23", "contributions": 10 }, - { - "username": "ishitaajain22-tech", - "contributions": 10 - }, { "username": "vaishnavijha12", "contributions": 9 From d896130b1600a5a904214e8c17bdd2d991db14ea Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 30 Jun 2026 06:15:38 +0000 Subject: [PATCH 7/9] chore: sync contributors list [skip ci] --- README.md | 11 ++++++----- data/contributors.json | 22 +++++++++++++--------- 2 files changed, 19 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 2cbcdec87..fa88b12bb 100644 --- a/README.md +++ b/README.md @@ -400,8 +400,8 @@ Found a security vulnerability? Please report it responsibly to **security@learn | Aditya8369
@Aditya8369 | Prateek2007-cmd
@Prateek2007-cmd | RUSHILPATEL33
@RUSHILPATEL33 | Siddh2024
@Siddh2024 | nivedha2025cse-gif
@nivedha2025cse-gif | | leonagoel
@leonagoel | Hrithik-ui753
@Hrithik-ui753 | codedbydollys10
@codedbydollys10 | pranav-cholleti
@pranav-cholleti | sanrishi
@sanrishi | | Srushti-Kamble14
@Srushti-Kamble14 | HarshaNaidu11
@HarshaNaidu11 | sricharan-213
@sricharan-213 | knoxiboy
@knoxiboy | prakshithamalla-art
@prakshithamalla-art | -| Pratyush-Panda-2006
@Pratyush-Panda-2006 | Vaishnav-Hub9
@Vaishnav-Hub9 | basantnema31
@basantnema31 | Sandeep6135
@Sandeep6135 | Arhanabdullah
@Arhanabdullah | -| Chakshu-Bamotra-04
@Chakshu-Bamotra-04 | anshika1179
@anshika1179 | DhruvalBhinsara1
@DhruvalBhinsara1 | paripnj
@paripnj | KRUSHAL2956
@KRUSHAL2956 | +| Pratyush-Panda-2006
@Pratyush-Panda-2006 | Vaishnav-Hub9
@Vaishnav-Hub9 | basantnema31
@basantnema31 | Sandeep6135
@Sandeep6135 | anshika1179
@anshika1179 | +| Arhanabdullah
@Arhanabdullah | Chakshu-Bamotra-04
@Chakshu-Bamotra-04 | DhruvalBhinsara1
@DhruvalBhinsara1 | paripnj
@paripnj | KRUSHAL2956
@KRUSHAL2956 | | nancy-verma780
@nancy-verma780 | wyf027
@wyf027 | jainiksha
@jainiksha | akashgoudsidduluri
@akashgoudsidduluri | tamannaa-rath
@tamannaa-rath | | siddharth277
@siddharth277 | anshul23102
@anshul23102 | pragya0129
@pragya0129 | dynamo-pentester
@dynamo-pentester | PRODHOSH
@PRODHOSH | | paridhijain153
@paridhijain153 | omnipotentchaos
@omnipotentchaos | vedant7007
@vedant7007 | Divyanshu227
@Divyanshu227 | AMAN194701
@AMAN194701 | @@ -433,9 +433,10 @@ Found a security vulnerability? Please report it responsibly to **security@learn | Sagun-Bajpai
@Sagun-Bajpai | sarthakshruti999-code
@sarthakshruti999-code | shambhavivartika06-cmyk
@shambhavivartika06-cmyk | suhanimaurya05
@suhanimaurya05 | workwithme67
@workwithme67 | | lover3123
@lover3123 | 25032007
@25032007 | pratyuxxhh
@pratyuxxhh | Achiever199
@Achiever199 | aishwary-vansh
@aishwary-vansh | | Anshika-Gupta9
@Anshika-Gupta9 | ARCHITVARMA15
@ARCHITVARMA15 | Ayush2496
@Ayush2496 | Dippp10-ally
@Dippp10-ally | Hussain053
@Hussain053 | -| krishsoni-hub
@krishsoni-hub | LalithMadhav-CODING
@LalithMadhav-CODING | sahare-mayur-0071
@sahare-mayur-0071 | Nishita-Thakur
@Nishita-Thakur | Bhavikapatel06
@Bhavikapatel06 | -| Payal430
@Payal430 | PojashriJM
@PojashriJM | Pragya005
@Pragya005 | pritesh-4
@pritesh-4 | priya434960
@priya434960 | -| Chaudhary8587
@Chaudhary8587 | SARTHAKJINDAL1
@SARTHAKJINDAL1 | Sanjay452656
@Sanjay452656 | SatyajeetSahoo08
@SatyajeetSahoo08 | savniagrawal1701
@savniagrawal1701 | +| krishsoni-hub
@krishsoni-hub | LalithMadhav-CODING
@LalithMadhav-CODING | sahare-mayur-0071
@sahare-mayur-0071 | Mohit-001-hash
@Mohit-001-hash | Nishita-Thakur
@Nishita-Thakur | +| Bhavikapatel06
@Bhavikapatel06 | Payal430
@Payal430 | PojashriJM
@PojashriJM | Pragya005
@Pragya005 | pritesh-4
@pritesh-4 | +| priya434960
@priya434960 | Chaudhary8587
@Chaudhary8587 | SARTHAKJINDAL1
@SARTHAKJINDAL1 | Sanjay452656
@Sanjay452656 | SatyajeetSahoo08
@SatyajeetSahoo08 | +| savniagrawal1701
@savniagrawal1701 | | | | | --- diff --git a/data/contributors.json b/data/contributors.json index 86ae5e401..5055dc487 100644 --- a/data/contributors.json +++ b/data/contributors.json @@ -3,7 +3,7 @@ "username": "Premshaw23", "name": "Prem Shaw", "admin": true, - "contributions": 1768 + "contributions": 1780 }, { "username": "ionfwsrijan", @@ -11,7 +11,7 @@ }, { "username": "atul-upadhyay-7", - "contributions": 66 + "contributions": 70 }, { "username": "pithva007", @@ -35,7 +35,7 @@ }, { "username": "Siddh2024", - "contributions": 45 + "contributions": 49 }, { "username": "nivedha2025cse-gif", @@ -98,20 +98,20 @@ "contributions": 25 }, { - "username": "Arhanabdullah", - "contributions": 24 + "username": "anshika1179", + "contributions": 25 }, { - "username": "Chakshu-Bamotra-04", + "username": "Arhanabdullah", "contributions": 24 }, { - "username": "anshika1179", + "username": "Chakshu-Bamotra-04", "contributions": 24 }, { "username": "DhruvalBhinsara1", - "contributions": 23 + "contributions": 24 }, { "username": "paripnj", @@ -211,7 +211,7 @@ }, { "username": "ishitaajain22-tech", - "contributions": 11 + "contributions": 12 }, { "username": "Pratikshya32", @@ -753,6 +753,10 @@ "username": "sahare-mayur-0071", "contributions": 1 }, + { + "username": "Mohit-001-hash", + "contributions": 1 + }, { "username": "Nishita-Thakur", "contributions": 1 From 1c726f64dbbd9e1c2ae7b64c8caf000ef1694d9d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 2 Jul 2026 06:02:59 +0000 Subject: [PATCH 8/9] chore: sync contributors list [skip ci] --- README.md | 2 +- data/contributors.json | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fa88b12bb..63e241c58 100644 --- a/README.md +++ b/README.md @@ -397,7 +397,7 @@ Found a security vulnerability? Please report it responsibly to **security@learn | Premshaw23
**Prem Shaw** | ionfwsrijan
@ionfwsrijan | atul-upadhyay-7
@atul-upadhyay-7 | pithva007
@pithva007 | mrdeyroy
@mrdeyroy | | :---: | :---: | :---: | :---: | :---: | -| Aditya8369
@Aditya8369 | Prateek2007-cmd
@Prateek2007-cmd | RUSHILPATEL33
@RUSHILPATEL33 | Siddh2024
@Siddh2024 | nivedha2025cse-gif
@nivedha2025cse-gif | +| Aditya8369
@Aditya8369 | Prateek2007-cmd
@Prateek2007-cmd | Siddh2024
@Siddh2024 | RUSHILPATEL33
@RUSHILPATEL33 | nivedha2025cse-gif
@nivedha2025cse-gif | | leonagoel
@leonagoel | Hrithik-ui753
@Hrithik-ui753 | codedbydollys10
@codedbydollys10 | pranav-cholleti
@pranav-cholleti | sanrishi
@sanrishi | | Srushti-Kamble14
@Srushti-Kamble14 | HarshaNaidu11
@HarshaNaidu11 | sricharan-213
@sricharan-213 | knoxiboy
@knoxiboy | prakshithamalla-art
@prakshithamalla-art | | Pratyush-Panda-2006
@Pratyush-Panda-2006 | Vaishnav-Hub9
@Vaishnav-Hub9 | basantnema31
@basantnema31 | Sandeep6135
@Sandeep6135 | anshika1179
@anshika1179 | diff --git a/data/contributors.json b/data/contributors.json index 5055dc487..03b21e2e2 100644 --- a/data/contributors.json +++ b/data/contributors.json @@ -3,7 +3,7 @@ "username": "Premshaw23", "name": "Prem Shaw", "admin": true, - "contributions": 1780 + "contributions": 1781 }, { "username": "ionfwsrijan", @@ -30,12 +30,12 @@ "contributions": 53 }, { - "username": "RUSHILPATEL33", + "username": "Siddh2024", "contributions": 51 }, { - "username": "Siddh2024", - "contributions": 49 + "username": "RUSHILPATEL33", + "contributions": 51 }, { "username": "nivedha2025cse-gif", From 4c92a1aa4af0005da373960f6d21a46d4cab9a73 Mon Sep 17 00:00:00 2001 From: atul-upadhyay-7 Date: Sat, 4 Jul 2026 09:35:18 +0530 Subject: [PATCH 9/9] fix: encrypt webhook secrets before storage in MongoDB - Add webhook crypto utility with AES-256-GCM encryption and HMAC-SHA256 hashing - Encrypt webhook secrets before storing in database - Strip secrets from all API responses (GET, list) - Return raw secret only once at creation time with save warning - Add getWebhookSecretForSigning function for dispatcher to retrieve decrypted secrets - Update dispatcher to use decrypted secrets for signing Fixes #3956 --- app/api/webhooks/route.js | 6 +++- lib/models/webhookModel.js | 26 ++++++++++++++-- lib/webhook/crypto.js | 64 ++++++++++++++++++++++++++++++++++++++ lib/webhook/dispatcher.js | 8 ++++- 4 files changed, 99 insertions(+), 5 deletions(-) create mode 100644 lib/webhook/crypto.js diff --git a/app/api/webhooks/route.js b/app/api/webhooks/route.js index be611c8b1..bcd9fdd08 100644 --- a/app/api/webhooks/route.js +++ b/app/api/webhooks/route.js @@ -50,7 +50,11 @@ export const POST = withErrorHandler(async (request) => { createdBy: decodedToken.uid, }); - return jsonSuccess({ webhook }, 201); + return jsonSuccess({ + webhook, + secret, + message: "Save this secret securely. It will not be shown again.", + }, 201); }); export const GET = withErrorHandler(async (request) => { diff --git a/lib/models/webhookModel.js b/lib/models/webhookModel.js index 0120d0dd7..6c61cf88f 100644 --- a/lib/models/webhookModel.js +++ b/lib/models/webhookModel.js @@ -1,5 +1,6 @@ import { randomUUID } from "crypto"; import { connectDb } from "@/lib/mongodb"; +import { encryptSecret, decryptSecret, hashSecret } from "@/lib/webhook/crypto"; const COLLECTION = "webhooks"; let indexesEnsured = false; @@ -15,7 +16,8 @@ async function ensureIndexes(db) { export function serializeWebhook(doc) { if (!doc) return null; - return { ...doc, _id: doc._id?.toString?.() || doc._id }; + const { _id, secret, secretHash, ...rest } = doc; + return { ...rest, _id: _id?.toString?.() || _id }; } export async function createWebhook(data) { @@ -25,7 +27,8 @@ export async function createWebhook(data) { const doc = { webhookId: randomUUID(), url: data.url, - secret: data.secret, + encryptedSecret: encryptSecret(data.secret), + secretHash: hashSecret(data.secret), events: data.events, status: data.status || "active", description: data.description || "", @@ -43,13 +46,30 @@ export async function getWebhookById(webhookId) { return serializeWebhook(doc); } +export async function getWebhookSecretForSigning(webhookId) { + const db = await connectDb(); + const doc = await db.collection(COLLECTION).findOne({ webhookId }); + if (!doc || !doc.encryptedSecret) return null; + try { + return decryptSecret(doc.encryptedSecret); + } catch { + return null; + } +} + export async function updateWebhook(webhookId, updates) { const db = await connectDb(); - const allowed = ["url", "secret", "events", "status", "description"]; + const allowed = ["url", "events", "status", "description"]; const setFields = {}; for (const key of allowed) { if (updates[key] !== undefined) setFields[key] = updates[key]; } + + if (updates.secret !== undefined) { + setFields.encryptedSecret = encryptSecret(updates.secret); + setFields.secretHash = hashSecret(updates.secret); + } + setFields.updatedAt = new Date().toISOString(); await db.collection(COLLECTION).updateOne({ webhookId }, { $set: setFields }); return getWebhookById(webhookId); diff --git a/lib/webhook/crypto.js b/lib/webhook/crypto.js new file mode 100644 index 000000000..944bdd403 --- /dev/null +++ b/lib/webhook/crypto.js @@ -0,0 +1,64 @@ +import { createHmac, randomBytes, createCipheriv, createDecipheriv, scryptSync } from "crypto"; + +const ALGORITHM = "aes-256-gcm"; +const KEY_LENGTH = 32; +const IV_LENGTH = 16; +const AUTH_TAG_LENGTH = 16; + +function getEncryptionKey() { + const secret = process.env.WEBHOOK_ENCRYPTION_KEY || process.env.CRON_SECRET; + if (!secret) { + throw new Error("WEBHOOK_ENCRYPTION_KEY or CRON_SECRET must be set"); + } + return scryptSync(secret, "webhook-salt", KEY_LENGTH); +} + +export function encryptSecret(plaintext) { + const key = getEncryptionKey(); + const iv = randomBytes(IV_LENGTH); + const cipher = createCipheriv(ALGORITHM, key, iv); + + let encrypted = cipher.update(plaintext, "utf8", "hex"); + encrypted += cipher.final("hex"); + + const authTag = cipher.getAuthTag(); + + return `${iv.toString("hex")}:${authTag.toString("hex")}:${encrypted}`; +} + +export function decryptSecret(encryptedValue) { + const key = getEncryptionKey(); + const parts = encryptedValue.split(":"); + + if (parts.length !== 3) { + throw new Error("Invalid encrypted value format"); + } + + const iv = Buffer.from(parts[0], "hex"); + const authTag = Buffer.from(parts[1], "hex"); + const encrypted = parts[2]; + + const decipher = createDecipheriv(ALGORITHM, key, iv); + decipher.setAuthTag(authTag); + + let decrypted = decipher.update(encrypted, "hex", "utf8"); + decrypted += decipher.final("utf8"); + + return decrypted; +} + +export function hashSecret(secret) { + const pepper = process.env.WEBHOOK_SECRET_PEPPER || process.env.CRON_SECRET || "default-pepper"; + return createHmac("sha256", pepper).update(secret).digest("hex"); +} + +export function verifySecretHash(secret, hash) { + const computed = hashSecret(secret); + if (computed.length !== hash.length) return false; + + let result = 0; + for (let i = 0; i < computed.length; i++) { + result |= computed.charCodeAt(i) ^ hash.charCodeAt(i); + } + return result === 0; +} diff --git a/lib/webhook/dispatcher.js b/lib/webhook/dispatcher.js index 544b6e095..ef3a5ccf5 100644 --- a/lib/webhook/dispatcher.js +++ b/lib/webhook/dispatcher.js @@ -1,5 +1,6 @@ import { getActiveWebhooksByEvent, + getWebhookSecretForSigning, } from "@/lib/models/webhookModel"; import { createDeliveryLog, @@ -60,7 +61,12 @@ export async function emitWebhookEvent(eventType, data) { }; for (const webhook of webhooks) { - const signature = signPayload(payload, webhook.secret); + const signingSecret = await getWebhookSecretForSigning(webhook.webhookId); + if (!signingSecret) { + console.error(`[webhook] Failed to decrypt secret for webhook ${webhook.webhookId}, skipping`); + continue; + } + const signature = signPayload(payload, signingSecret); const deliveryLog = await createDeliveryLog({ webhookId: webhook.webhookId, eventType,