Unprotected Absence Reasons queries and mutations #41
Labels
No labels
Security
TeX
auto-update
board
done
board
ready
board
todo
check
delete-eslint-rc-js
check
update-builddeps-package-json
check
update-eslint-rc-js
check
update-gitignore
check
update-merge-request-template
check
update-prettier-ignore
check
update-pyproject-toml
check
update-tox-ini
part
backend
part
ci
part
docs
part
frontend
part
i18n
part
non-technical
part
packaging
prio
1
prio
2
prio
3
release-mr-5.x
size
large
size
medium
size
small
source
customer
source
customer::fsmw
source
customer::fss
source
customer::teckids
source
downstream
type
breaking
type
bug
type
feature
type
refactoring
workflow
blocked
workflow
confirmed
workflow
current-todo
workflow
discussing
workflow
new-app
workflow
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
aleksis/AlekSIS-App-Kolego#41
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
CLN-001 — Unprotected Absence Reasons queries and mutations (Kolego)
Vulnerability ID: CLN-001
Vulnerability type: Access Control
Threat level: Moderate
Description:
Authorization and authentication are broken for GraphQL queries related to Absence Reasons.
Technical description:
GraphQL queries and mutations are respectively used to fetch data about Absence Reasons and to update Absence
Reasons.
Queries to fetch Absence Reasons can be successfully performed without any authentication, as in the following simple
curl request:
This request returns all the data for every Absence Reason (gqlabsenceReasons works as well).
This vulnerability is also discoverable if the whoAmI responses from the GraphQL backend to the frontend are
manipulated as in CLN-010 (page 23). Completely unauthenticated users can view the Absence Reasons menu and
its contents if a proxy manipulates the permissions in the whoAmI responses, as in the following screenshot:
A logged-in Student user can also view the Absence Reasons menu by performing the same manipulation, but crucially
a Student user can also edit the Absence Reasons.
The following screenshot shows the Absence Reasons editing interface open for a test Student user:
On editing an Absence Reason, the front end returns an error but the mutation request is successful. As above, these
mutation requests can be sent directly to the GraphQL backend as long as a valid sessionid from a logged-in Student
account is included:
Impact:
The lack of proper authentication and authorization on the Absense Reasons functions results in:
Recommendation:
assigned to @yuha
Action to take: Fetching absence reasons should be possible for all authenticated users, but everything else demands respective permissions.
made the issue visible to everyone
created branch
41-unprotected-absence-reasons-queries-and-mutationsto address this issuementioned in merge request !137
mentioned in issue #43
mentioned in issue AlekSIS/official/AlekSIS-Core#1205