From efa7e01465a446a1bc6a361bf16a0b74f4c1706f Mon Sep 17 00:00:00 2001 From: Baptiste Jonglez Date: Fri, 17 Jul 2020 17:43:33 +0200 Subject: [PATCH] Fix unauthorized access and modification of project data (CVE-2020-15120) An authenticated member of one project can modify and delete members of another project, without knowledge of this other project's private code. This can be further exploited to access all bills of another project without knowledge of this other project's private code. With the default configuration, anybody is allowed to create a new project. An attacker can create a new project and then use it to become authenticated and exploit this flaw. As such, the exposure is similar to an unauthenticated attack, because it is trivial to become authenticated. This issue was caused by a wrong database queries in PersonQuery. For more details, see https://github.com/spiral-project/ihatemoney/security/advisories/GHSA-67j9-c52g-w2q9 --- ihatemoney/models.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ihatemoney/models.py b/ihatemoney/models.py index fe7b5196..5691c75e 100644 --- a/ihatemoney/models.py +++ b/ihatemoney/models.py @@ -380,7 +380,7 @@ class Person(db.Model): def get_by_name(self, name, project): return ( Person.query.filter(Person.name == name) - .filter(Project.id == project.id) + .filter(Person.project_id == project.id) .one() ) @@ -389,7 +389,7 @@ class Person(db.Model): project = g.project return ( Person.query.filter(Person.id == id) - .filter(Project.id == project.id) + .filter(Person.project_id == project.id) .one() )