-
Notifications
You must be signed in to change notification settings - Fork 161
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix mp security by Aabu #6403
Fix mp security by Aabu #6403
Conversation
Merci pour le fix (et son déploiement !) Est-ce que tu peux ajouter un test pour ton fix et qui s'assure qu'on n'aura pas de régression, stp ? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Cela corrige bien la faille de sécurité que tu as détaillé !
J'avais envie donc j'ai écrit le test en question : diff --git a/zds/mp/tests/tests_views.py b/zds/mp/tests/tests_views.py
index f1f1886d9..f3700289c 100644
--- a/zds/mp/tests/tests_views.py
+++ b/zds/mp/tests/tests_views.py
@@ -625,6 +625,7 @@ class LeaveViewTest(TestCase):
def setUp(self):
self.profile1 = ProfileFactory()
self.profile2 = ProfileFactory()
+ self.profile3 = ProfileFactory()
self.anonymous_account = UserFactory(username=settings.ZDS_APP["member"]["anonymous_account"])
self.bot_group = Group()
@@ -650,6 +651,14 @@ class LeaveViewTest(TestCase):
response, reverse("member-login") + "?next=" + reverse("mp:leave", args=[1, "private-topic"])
)
+ def test_denies_leave_topic_as_random_member(self):
+ self.client.force_login(self.profile3.user)
+
+ response = self.client.post(reverse("mp:leave", args=[self.topic1.pk, self.topic1.slug()]), follow=True)
+
+ self.assertEqual(403, response.status_code)
+ self.assertEqual(1, PrivateTopic.objects.filter(pk=self.topic1.pk).count())
+
def test_fail_leave_topic_no_exist(self):
response = self.client.post(reverse("mp:leave", args=[999, "private-topic"])) |
Merci pour le test, c'est intégré. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
QA OK ✔️
(J'ai fumé la moquette sur le message de commit cependant, mais trop tard ! :D)
Security breach : voici le rapport
Sous ces conditions :
alors, il est possible de faire quitter le MP à la personne alors qu'on n'est pas cette personne.
J'ai pu le faire en rejouant la requête envoyée lors qu'on quitte le MP, ce qui a eu pour effet de faire quitter l'autre personne. On n'est pas obligé d'être un ancien participant, on peut reprendre n'importe quelle requête qui quitte un MP et changer la cible.
La faille a été fix sur beta et dev avec le code joint.