Εν συντομία: Η ασφάλεια του Moodle εξαρτάται μετά το PHP2Shell από την PHP του διακομιστή και όχι από το Moodle. Επειδή οι πλατφόρμες εκμάθησης επεξεργάζονται δεδομένα μαθητών, φοιτητών και εργαζομένων, η γρήγορη δράση είναι σημαντική. Κάντε patch στην PHP για web και cron, επανεκκινήστε όλες τις διεργασίες και ελέγξτε τα config.php, moodledata, τα plugins και τους λογαριασμούς admin.
Τι σημαίνει το PHP2Shell για τους διαχειριστές Moodle
Το Moodle είναι διαδεδομένο σε σχολεία, πανεπιστήμια, στην επιμόρφωση και για εσωτερικές εκπαιδεύσεις σε επιχειρήσεις. Η πλατφόρμα διαχειρίζεται ονόματα, διευθύνσεις email, συμμετοχές σε μαθήματα, βαθμούς, εργασίες εξετάσεων και αναρτήσεις φόρουμ, στα σχολεία συχνά ανηλίκων. Οι ευπάθειες PHP CVE-2026-109618 και CVE-2026-109619 επιτρέπουν, σύμφωνα με την ομάδα της PHP, εξ αποστάσεως εκτέλεση κακόβουλου κώδικα χωρίς σύνδεση.
Οι διακομιστές Moodle είναι σχεδόν πάντα προσβάσιμοι από το διαδίκτυο, επειδή οι εκπαιδευόμενοι εργάζονται από το σπίτι. Το BSI (Ομοσπονδιακή Υπηρεσία Ασφάλειας Πληροφοριών της Γερμανίας) συνιστά στο επίπεδο προειδοποίησης 3 άμεση ενημέρωση και, αν αυτό δεν είναι δυνατό, προσωρινή αποσύνδεση των διακομιστών ιστού από το δίκτυο. Για σχολεία και φορείς εκπαίδευσης αυτό είναι οργανωτικά δύσκολο, αλλά μπορεί να προγραμματιστεί. Ειδικές για τον κλάδο υποδείξεις θα βρείτε στο Ασφάλεια IT για σχολεία και φορείς εκπαίδευσης.
Ασφάλεια Moodle: έλεγχος της έκδοσης PHP για web και cron
Στη Διαχείριση ιστοτόπου > Διακομιστής > Περιβάλλον το Moodle ελέγχει την έκδοση PHP και άλλες απαιτήσεις. Στο Διακομιστής > Πληροφορίες PHP οι διαχειριστές βλέπουν επιπλέον τα πλήρη στοιχεία PHP. Και τα δύο περιγράφουν την PHP του ιστού.
Το Moodle χρειάζεται επιπλέον ένα cronjob που εκτελεί τακτικά το admin/cli/cron.php μέσω της PHP γραμμής εντολών. Αυτή η έκδοση μπορεί να διαφέρει και πρέπει επίσης να έχει patch. Οι διορθωμένες εκδόσεις upstream είναι οι 8.5.12, 8.4.27, 8.3.36 και 8.2.35· τα backports φέρουν συχνά παλαιότερους αριθμούς. Ποιες εκδόσεις PHP υποστηρίζει η έκδοση του Moodle σας, ελέγξτε σύμφωνα με τις απαιτήσεις συστήματος στην τεκμηρίωση στο moodle.org. Πώς επανεκκινείτε στη συνέχεια σωστά όλες τις διεργασίες, περιγράφεται στο Επανεκκίνηση του PHP-FPM και όλων των workers.
Φάκελοι και διαμόρφωση στο Moodle
| Θέση | Περιεχόμενο | Σημείο ελέγχου |
|---|---|---|
config.php |
Στοιχεία πρόσβασης στη βάση δεδομένων, wwwroot, διαδρομή προς το moodledata |
Εισαγόμενος κώδικας, αλλαγή κωδικού μετά από υποψία |
moodledata/ |
Αποθήκευση αρχείων, εργασίες, συνεδρίες, caches | Εκτός της ρίζας εγγράφων, κανένα αρχείο PHP |
mod/, blocks/, local/, theme/ |
Δραστηριότητες, μπλοκ, τοπικές επεκτάσεις, σχεδιασμοί | Άγνωστα ή αλλαγμένα plugins |
admin/cli/ |
Σενάρια γραμμής εντολών | Χρησιμοποιούνται μόνο μέσω CLI |
Το Moodle προσφέρει μια ρύθμιση που αποτρέπει την αλλαγή διαδρομών προγραμμάτων μέσω της διεπαφής ιστού. Ανήκει στο config.php και δυσκολεύει την κλήση προγραμμάτων στον διακομιστή μέσω ενός κλεμμένου λογαριασμού admin:
$CFG->preventexecpath = true;
Ακίνδυνοι έλεγχοι στη γραμμή εντολών, ως χρήστης του διακομιστή ιστού:
# Εμφάνιση των ελέγχων κατάστασης και ασφάλειας του ίδιου του Moodle
php admin/cli/checks.php
php admin/cli/checks.php --type=security
# Αναζήτηση αρχείων PHP στον κατάλογο δεδομένων (προσαρμόστε τη διαδρομή)
find /pfad/zu/moodledata -type f -name "*.php"
Σε περίπτωση υποψίας διαρροής δεδομένων σε σχολείο ή πανεπιστήμιο εμπλέκονται γρήγορα περισσότεροι φορείς: διεύθυνση του σχολείου, φορέας, υπεύθυνοι προστασίας δεδομένων και, ενδεχομένως, η εποπτική αρχή. Διασώστε logs από τις 20/10/2026 και τεκμηριώστε κάθε μέτρο με ώρα.
Plugins, λογαριασμοί admin και uploads
Μια πρακτική υπόδειξη για τον προγραμματισμό: οι ενημερώσεις της PHP και οι επανεκκινήσεις δεν πρέπει να πέφτουν σε περιόδους εξετάσεων ή σε τρέχοντα online τεστ. Το Moodle έχει λειτουργία συντήρησης, που ενημερώνει νωρίτερα τους χρήστες. Απέναντι στο PHP2Shell όμως δεν προστατεύει, επειδή και η σελίδα συντήρησης παραδίδεται από την PHP.
Το Moodle ζει από plugins: δραστηριότητες, εργαλεία εξετάσεων, συνδέσεις με βιντεοδιασκέψεις και διοίκηση σχολείου. Κάθε plugin είναι πρόσθετος κώδικας PHP και πρέπει να ταιριάζει με την έκδοση του Moodle. Στη Διαχείριση ιστοτόπου το Moodle δείχνει διαθέσιμες ενημερώσεις για το core και τα plugins. Αφαιρέστε πλήρως τα plugins που κανείς δεν χρησιμοποιεί πια.
Ελέγξτε τη λίστα των διαχειριστών του ιστοτόπου και τους καθολικούς ρόλους με εκτεταμένα δικαιώματα. Οι εκπαιδευτικοί και οι δημιουργοί μαθημάτων δεν χρειάζονται συνήθως καθολικά δικαιώματα. Ενεργοποιήστε τη σύνδεση δύο παραγόντων τουλάχιστον για τους διαχειριστές. Οι επιτρεπόμενοι τύποι αρχείων για uploads πρέπει να είναι όσο γίνεται πιο περιορισμένοι· υποδείξεις προσφέρει το Ασφαλής υλοποίηση uploads αρχείων σε PHP.
Τι μπορεί μια ενημέρωση του Moodle και τι όχι
Μια ενημέρωση του Moodle κλείνει σφάλματα στο Moodle και επιτρέπει συχνά νεότερες εκδόσεις PHP. Δεν κάνει patch στην PHP, δεν επανεκκινεί ούτε διεργασίες web ούτε cron και δεν αφαιρεί ξένα αρχεία από το moodledata, πρόσθετους διαχειριστές και αλλαγμένα plugins. Ούτε το αν διέρρευσαν δεδομένα το διάστημα πριν από το patch απαντά μια ενημέρωση.
Το Moodle καταγράφει επιπλέον συνδέσεις και ενέργειες σε δικά του logs, που οι διαχειριστές βλέπουν στη Διαχείριση ιστοτόπου > Αναφορές. Αναζητήστε εκεί στοχευμένα ανησυχητικές συνδέσεις διαχειριστών, νέους λογαριασμούς με καθολικούς ρόλους και εγκαταστάσεις plugins από τις 17/10/2026. Εξαγάγετε αυτές τις εγγραφές προτού οι αυτόματοι καθαρισμοί διαγράψουν παλαιότερα δεδομένα. Οι αναφορές συμπληρώνουν τα logs του διακομιστή ιστού, δεν τα αντικαθιστούν.
Πώς βοηθά συγκεκριμένα η PHP SOS;
- Διευκρινίζουμε την αρμοδιότητα για την PHP και ζητάμε επιβεβαίωση του επιπέδου patch και της επανεκκίνησης για web και cron.
- Διασώζουμε logs, βάση δεδομένων και
moodledataπριν από κάθε αλλαγή. - Ελέγχουμε τη διαμόρφωση, τα plugins, τους διαχειριστές, τους ρόλους και τα uploads.
- Αν το επιθυμείτε, φροντίζουμε μόνιμα την πλατφόρμα στη σύμβαση συντήρησης ασφαλείας, σε συντονισμό με το σχολικό έτος και τις περιόδους εξετάσεων.
Συχνές ερωτήσεις
Επηρεάζεται το Moodle από το PHP2Shell;
Το ίδιο το Moodle δεν έχει νέα ευπάθεια, εκτελείται όμως σε PHP. Αν η PHP του διακομιστή δεν έχει patch, ένας επιτιθέμενος μπορεί, σύμφωνα με την ομάδα της PHP, να εκτελέσει κώδικα χωρίς σύνδεση. Μια ενημέρωση του Moodle δεν αλλάζει αυτό.
Πού βλέπω στο Moodle την έκδοση PHP;
Στη Διαχείριση ιστοτόπου > Διακομιστής > Περιβάλλον το Moodle ελέγχει την έκδοση PHP σε σχέση με τις απαιτήσεις του. Το αν έχει ενσωματωθεί backport δεν το δείχνει το Moodle· αυτό το επιβεβαιώνει ο φορέας λειτουργίας του διακομιστή.
Γιατί πρέπει το moodledata να βρίσκεται εκτός του καταλόγου ιστού;
Εκεί βρίσκονται αρχεία που ανεβαίνουν, εργασίες, συνεδρίες και caches. Αν ο κατάλογος είναι προσβάσιμος μέσω του ιστού, τα περιεχόμενα ίσως μπορούν να ανακτηθούν απευθείας. Το Moodle απαιτεί γι' αυτό μια θέση εκτός της ρίζας εγγράφων.
Ποιος είναι αρμόδιος για την ενημέρωση της PHP στα σχολεία;
Διαφέρει: ο φορέας του σχολείου, μια περιφερειακή υπηρεσία, ένα δημοτικό κέντρο δεδομένων ή ένας πάροχος υπηρεσιών. Διευκρινίστε γραπτά την αρμοδιότητα και ζητήστε επιβεβαίωση του επιπέδου patch και της επανεκκίνησης.