Χθες το βράδυ κι αφότου έκλεισαν οι ηλεκτρονικές κάλπες του ΣΥΡΙΖΑ, ένας χρήστης του Twitter / X, ο οποίος είναι προγραμματιστής και έχει θητεύσει μεταξύ άλλων και στην Google, έβγαλε σε ανάρτησή του όλα τα κενά ασφαλείας που υπήρχαν στο σύστημα ηλεκτρονικών εκλογών, από τις οποίες αναδείχτηκαν οι υποψήφιοι ευρωβουλευτές από τη βάση του κόμματος. Συγκεκριμένα, ο εν λόγω χρήστης ανέδειξε ότι τα ονόματα των χρηστών καθώς και οι κωδικοί πρόσβασης, δεν είχαν απολύτως καμία προστασία, αφού περνούσαν με παραμέτρους των διευθύνσεων URL, με αποτέλεσμα να αποτυπώνονται δημοσίως! Επιπλέον, ο τρόπος δημιουργίας ψηφοφόρων ήταν τόσο ανασφαλής, αφού κάποιος χρειαζόταν απλώς να φτιάξει ένα e-mail και να λύσει δυο captcha (σ.σ. τα «παζλ» που αποτρέπουν την κακόβουλη αυτοματοποιημένη χρήση μέσω bots), καθώς και να εισάγει έναν τετραψήφιο κωδικό επιβεβαίωσης, ο οποίος θα αποστέλλονταν σε κάποιο κινητό που θα δήλωνε ο χρήστης.

Όμως εκεί υπήρχε ένα ακόμη μεγαλύτερο κενό: ο τετραψήφιος αριθμός δημιουργούνταν αυτομάτως μόνο από την πλευρά του χρήστη, δεν υπήρχε ο ίδιος τετραψήφιος αριθμός σε κάποιον server του ΣΥΡΙΖΑ, ούτως ώστε να διασφαλίζεται ότι δεν μπορεί να παρέμβει κανένας. Ως αποτέλεσμα, εάν κάποιος παρενέβαινε στα δεδομένα της σελίδας, θα μπορούσε να αλλάξει τον κωδικό σε όποιο τετραψήφιο αριθμό ήθελε, δίχως να υπάρχει η ανάγκη ο συγκεκριμένος κωδικός να αποσταλλει κάπου. Αυτό σημαίνει ότι κάποιος χρήστης με τις απαραίτητες γνώσεις, θα μπορούσε να φτιάξει χιλιάδες ψεύτικους ψηφοφόρους. Ο εν λόγω χρήστης κατά δήλωσή του, είπε ότι έφτιαξε μερικές χιλιάδες χρήστες, τους οποίους όπως είπε, δεν χρησιμοποίησε.

Ασφάλεια εκλογών και πράσσειν άλογα

Θα περίμενε κανείς, από το κόμμα το οποίο αμφισβήτησε το αδιάβλητο των εκλογών και το οποίο απαίτησε διεθνείς παρατηρητές, να είχε κάνει σοβαρή δουλειά στη διασφάλιση του αδιάβλητου των δικών του προκριματικών εκλογών. Όπως είναι προφανές, οι εκλογές διενεργήθηκαν με έναν τελείως «αρπακολατζίδικο» τρόπο, ο οποίος για να είμαστε δίκαιοι, συνάδει απόλυτα με τον χαρακτήρα του κόμματος. Όμως, σύμφωνα με τις πληροφορίες που έχουν διαρρεύσει ήδη μέσα στο Σαββατοκύριακο, ο ΣΥΡΙΖΑ δεν πρόκειται να ανακοινώσει τον αριθμό των ψήφων που έλαβε έκαστος ψηφοφόρος, καθώς και ότι το πιθανότερο είναι απλώς να δοθεί μια λίστα με την κατάταξη των υποψηφίων, δίχως να γίνεται μνεία σε αριθμούς ψήφων.

Ποιος λοιπόν εγγυάται, ότι ένας ή και παραπάνω υποψήφιοι, δεν έχουν την συντριπτική πλειοψηφία των ψήφων; Αν μεταξύ πρώτων και δεύτερων υπάρχουν τρομακτικά μεγάλες διαφορές σε αριθμό ψήφων, ποιος εγγυάται ότι τελικά κάποιος υποψήφιος, δεν πριμοδοτήθηκε από εικονικούς ψηφοφόρους; Και σε τελευταία ανάλυση, το συγκεκριμένο κενό ασφαλείας ήταν πράγματι «αρπακολατζίδικη» αβλεψία, ή υπήρχε εκεί προκειμένου κάποιοι «εκλεκτοί» να καταφέρουν να εξασφαλίσουν τη συμμετοχή τους στο ευρωψηφοδέλτιο του ΣΥΡΙΖΑ;

Η ανάρτηση του χρήστη Christos Porios

Στη πλατφόρμα των προκριματικών εκλογών του ΣΥΡΙΖΑ υπήρχαν σημαντικά κενά ασφαλείας που θέτουν σε κίνδυνο την ακεραιότητα της διαδικασίας και πιθανώς προσωπικά δεδομένα χρηστών.

Απόσπασμα του κώδικα, όπως ήταν το Σάββατο το πρωί: https://pastebin.com/9XM8pgam

(1) Τα usernames and passwords περνούσαν μέσω URL parameters στην εφαρμογή (βλ. γραμμή 41). Ως αποτέλεσμα, κάποια έγιναν leaked δημόσια (βλ. screenshot).

(2) Για να εγγραφείς χρειαζόταν να λύσεις δύο captcha και ένα email, οπότε το να δημιουργήσεις ψηφοφόρους με αυτοματοποιημένο τρόπο θα κόστιζε σε έναν κακόβουλο χρήστη λιγότερο από ένα λεπτό του ευρώ ανά ψηφοφόρο. Έφτιαξα μερικές χιλιάδες ψηφοφόρους που δε χρησιμοποίησα.

(3) Για να ψηφίσεις υποτίθεται πως χρειαζόσουν αριθμό τηλεφώνου, αλλά αυτό ήταν υλοποιημένο με ανασφαλή τρόπο. Κατά τη ψηφοφορία μπορούσες να αλλάξεις τον αριθμό στον οποίο θα πήγαινε το SMS αλλάζοντας το http://userdbdata.mobile από τη κονσόλα του browser (βλ. εικόνα, και γραμμή 1009). Δηλαδή, ο κώδικας που αποφάσιζε που θα πάει το SMS επιβεβαίωσης ήταν client-side, χωρίς κάποιο άλλο έλεγχο. Αυτό σε συνδιασμό με το (2) σήμαινε πως *θα μπορούσε κανείς να ψηφίσει χιλιάδες φορές με 2-3 ώρες scripting και 10 ευρώ* (για την επίλυση των captcha, π.χ. από το http://2captcha.com).

(4) Πιθανά XSS vulnerabilities που μπορούσαν να οδηγήσουν στην διαρροή των προσωπικών δεδομένων όλων των ψηφοφόρων (βλ. γραμμή 865 - unescaped ονόματα ψηφοφορών στο Admin UI, κ.α.), δηλώνοντας ένα χρήστη Γιώργος Παπαδόπουλος.

Πώς τα ξέρω αυτά; Το development environment της εφαρμογής ήταν δημόσιο (στο http://eurodev.syriza2024.gr) για μια εβδομάδα πριν τις εκλογές, και άλλαζε συνεχώς ακόμα και λιγότερο από 24 ώρες πριν την έναρξη, με βασικές λειτουργίες ασφαλείας να υλοποιούνται μόνο λίγες ώρες πριν ανοίξουν οι κάλπες.

Δείτε την ανάρτηση του χρήστη στο Twitter / X