ETLaban handles students' ETLab logins, so security problems matter a lot. Thank you for helping keep it safe.
Please don't open a public issue for security problems.
Report it privately instead:
- Go to the repository's Security tab.
- Click Report a vulnerability (direct link).
- Describe what you found, how to reproduce it, and what someone could do with it.
Only the maintainer can see the report. You'll get a reply as soon as possible. This is a student project, so please allow a few days.
For example:
- Seeing, changing or deleting another student's data or session.
- Getting a student's ETLab password or raw ETLab session from the app or server.
- Making the server request pages outside
cet.etlab.in. - Running your own script inside the app (XSS), or getting around the Content Security Policy.
- Forging or decrypting the
be_sessioncookie (it may contain a password). - Anything that makes the server log passwords or cookies.
These are not security problems here (a normal issue is fine):
- ETLab's own security. Report that to ETLab or the college, not here.
- Bugs that only affect your own data in your own browser.
- Missing rate limiting, unless you can show real harm from it.
- Only test with your own ETLab account.
- Never try to access another student's account or data.
- Don't run heavy automated scans against the live site or against ETLab.
In short:
- Passwords are never logged and never stored on the server. By default they are sent to ETLab once and thrown away.
- ETLab sessions are encrypted into an
HttpOnly,Secure,SameSite=Laxcookie in the student's own browser. The server keeps no sessions and no data. - Only if a student ticks Keep me signed in is their password sealed into that
same encrypted cookie, so the server can log back in to ETLab when the session ends.
It can only be read with the server's
SESSION_SECRET. Logging out, or ETLab rejecting the saved password, deletes it. - The server only fetches
https://cet.etlab.inpages. - A strict Content Security Policy and other security headers are set on every response.
The full explanation is in docs/how-it-works.md.
Only the latest version on the main branch (and its deployment) gets security fixes.