-
Notifications
You must be signed in to change notification settings - Fork 196
Description
Summary
Security audit identified 10 vulnerabilities (1 CRITICAL, 6 HIGH, 2 MEDIUM, 1 LOW) in the Claroline LMS platform, primarily around missing authentication on several controller endpoints.
Critical Finding: Unauthenticated File Upload (CWE-306)
FileController.php:166 — POST /file/public/upload accepts file uploads with zero authentication:
#[Route(path: '/public/upload', name: 'claro_public_file_upload', methods: ['POST'])]
public function uploadPublicAction(Request $request): JsonResponse
{
// No @IsGranted, no authentication check
$file = $request->files->get('file');
// ... processes and stores file
}Any anonymous user can upload files to the server.
High Findings
-
Missing auth on training session cancel (
SessionController.php:130):POST /cursus_session/cancel— any unauthenticated user can cancel training sessions. -
Missing auth on user listing endpoints (
SessionUserController.php:46,EventUserController.php:44): List all registered users/event registrations without authentication. -
Path traversal / SSRF (
EventPresenceController.php:310):file[url]query parameter passed tofile_get_contents()— enables reading arbitrary files or SSRF. -
Missing auth on training list endpoints (
EventController.php:96,SessionController.php:71): List training events/sessions without authentication.
Medium Findings
-
AbstractVoter default allow (
AbstractVoter.php:160): Default CRUD behavior allows all operations unless explicitly denied — fail-open pattern. -
Missing auth on import sample (
ImportController.php:126): Potential path traversal via sample file download.
Pattern
Multiple Cursus (training management) plugin controllers are missing authentication annotations (@IsGranted) while core controllers properly enforce them — a 1-of-N inconsistency between the plugin and core.
Recommended Fixes
- Add
#[IsGranted('IS_AUTHENTICATED_FULLY')]touploadPublicActionor restrict to authenticated users - Add authentication checks to all Cursus plugin controllers
- Validate
file[url]parameter against path traversal and SSRF - Change
AbstractVoterdefault from allow to deny
Found during security research. This report describes vulnerability classes and fixes without providing exploit code.