Μια σοβαρή ευπάθεια στο Page Keyset του Ash μπορεί να οδηγήσει σε εξάντληση μνήμης και τερματισμό μιας εφαρμογής Elixir, όταν δημόσιες λειτουργίες ανάγνωσης δέχονται ειδικά διαμορφωμένους δείκτες σελιδοποίησης. Το ζήτημα καταγράφηκε ως CVE-2026-69659 και διορθώθηκε στην έκδοση 3.31.1.

Η ευπάθεια αφορά το Ash, ένα δηλωτικό πλαίσιο ανάπτυξης εφαρμογών για το οικοσύστημα Elixir. Το πρόβλημα εντοπίζεται στον τρόπο με τον οποίο το Page Keyset του Ash αποκωδικοποιεί τις παραμέτρους page[:after] και page[:before] σε ενέργειες ανάγνωσης που χρησιμοποιούν σελιδοποίηση τύπου keyset.
Δείτε επίσης: Nuxt: Ευπάθεια DoS επηρεάζει server islands
Γιατί το Page Keyset του Ash οδηγεί σε εξάντληση μνήμης
Οι δείκτες keyset είναι σειριοποιημένες τιμές που επιστρέφονται από το Ash και επαναχρησιμοποιούνται από τον πελάτη για την επόμενη ή την προηγούμενη σελίδα. Πριν από τη διόρθωση, το πλαίσιο έκανε αποκωδικοποίηση Base64 και περνούσε τα δεδομένα στη :erlang.binary_to_term/2, χωρίς όριο στο μέγεθος του αποτελέσματος.
Η μορφή εξωτερικών όρων της Erlang υποστηρίζει συμπιεσμένα δεδομένα. Έτσι, ένας δείκτης λίγων KB μπορεί να αποσυμπιεστεί σε δεκάδες MB μέσα σε μία κλήση. Πολλά ταυτόχρονα αιτήματα συσσωρεύουν τις δεσμεύσεις μνήμης και μπορούν να τερματίσουν τον κόμβο, προκαλώντας διακοπή υπηρεσίας.
Η επίσημη ενημέρωση ασφαλείας του Ash χαρακτηρίζει την αδυναμία μέτριας σοβαρότητας. Η εκμετάλλευση απαιτεί μια ενέργεια ανάγνωσης με keyset? true και εφαρμογή που περνά την τιμή after ή before από το αίτημα στην παράμετρο page.

Οι εκδόσεις που επηρεάζονται από το CVE-2026-69659
Σύμφωνα με την καταχώριση του CVE από το Erlang Ecosystem Foundation, επηρεάζονται οι εκδόσεις του πακέτου ash από 1.17.0 έως πριν από την 3.31.1. Η αξιολόγηση CVSS 4.0 αποτυπώνει σοβαρή επίπτωση στη διαθεσιμότητα, ενώ η βάση δεδομένων NVD δεν έχει ακόμη συμπληρώσει το δικό της αναλυτικό δελτίο.
Το ζήτημα δεν σημαίνει ότι κάθε εγκατάσταση Ash είναι αυτομάτως ευάλωτη. Χρειάζεται δημόσια λειτουργία keyset σελιδοποίησης και δυνατότητα του χρήστη να ελέγξει τον δείκτη. Ωστόσο, οι εφαρμογές που εκθέτουν τέτοια σημεία μέσω API πρέπει να θεωρούνται προτεραιότητα, επειδή η επίθεση μπορεί να επαναληφθεί με ταυτόχρονα αιτήματα.
Για τον έλεγχο της έκθεσης, οι διαχειριστές μπορούν να αναζητήσουν ρυθμίσεις keyset? true στον κώδικα και να επιβεβαιώσουν ότι οι δείκτες που επιστρέφει η υπηρεσία δεν μετατρέπονται σε ανεξέλεγκτα δεδομένα. Η καταγραφή αποτυχημένων δεικτών βοηθά επίσης στον εντοπισμό αυτοματοποιημένων δοκιμών.
Η τεχνική αιτία συνδέεται με τη μη έμπιστη αποσειριοποίηση, που ταξινομείται στο CWE-502. Το Ash δημιουργεί κανονικά μη συμπιεσμένους δείκτες, όμως ο αποκωδικοποιητής δεχόταν και μορφές που το ίδιο το πλαίσιο δεν παράγει. Αυτή η ασυμμετρία άνοιγε τον δρόμο για υπερβολικές καταναλώσεις πόρων.
Δείτε επίσης: SQL injection σε Oracle με πρόσβαση SYSTEM

Η διόρθωση και οι συστάσεις του Ash
Η έκδοση 3.31.1 προσθέτει έλεγχο στο Page Keyset του Ash πριν από την αποσειριοποίηση. Το προεπιλεγμένο όριο για τον αποκωδικοποιημένο δείκτη είναι 10 KiB, ενώ τα συμπιεσμένα φορτία απορρίπτονται εξαρχής. Ένας δείκτης που ξεπερνά το όριο ή δεν είναι έγκυρος επιστρέφει σφάλμα Ash.Error.Page.InvalidKeyset, αντί να συνεχίζει στη μετατροπή του όρου.
Η αλλαγή βρίσκεται στη ρουτίνα decode_values/2 του αρχείου lib/ash/page/keyset.ex και συνοδεύεται από δοκιμές για κανονικούς, υπερμεγέθεις και συμπιεσμένους δείκτες. Οι ομάδες που χρειάζονται μεγαλύτερες νόμιμες τιμές μπορούν να ρυθμίσουν το max_keyset_byte_size, αφού πρώτα εξετάσουν τα δεδομένα που χρησιμοποιούν στη δική τους εφαρμογή.
Η τεχνική ομάδα του SecNews προτείνει άμεση αναβάθμιση του πακέτου και έλεγχο των λειτουργιών του Page Keyset του Ash μετά την εγκατάσταση της έκδοσης 3.31.1 ή νεότερης. Μέχρι να ολοκληρωθεί η αλλαγή, οι διαχειριστές πρέπει να ελέγξουν ποια σημεία πρόσβασης ενεργοποιούν keyset σελιδοποίηση, να περιορίσουν την πρόσβαση όπου είναι δυνατό και να παρακολουθούν ασυνήθιστες αυξήσεις μνήμης.
🔒 Προστατέψτε την ιδιωτικότητά σας με Proton VPN
Ελβετικό VPN από τους δημιουργούς του Proton Mail — αυστηρή πολιτική no-logs, ισχυρή κρυπτογράφηση και ενσωματωμένο NetShield που μπλοκάρει διαφημίσεις, trackers & malware.
- ✔ No-logs, με έδρα την Ελβετία (εκτός 14-Eyes)
- ✔ NetShield: φραγή διαφημίσεων, trackers & κακόβουλων domains
- ✔ Καλύπτει όλες τις συσκευές — δωρεάν έκδοση διαθέσιμη
Ο σύνδεσμος είναι συνεργατικός (affiliate) — το SecNews ενδέχεται να λάβει προμήθεια χωρίς επιπλέον κόστος για εσάς. Δεν επηρεάζει την ανεξαρτησία της αρθρογραφίας μας.
Δείτε επίσης: Νέες τεχνικές για τον εντοπισμό ευπαθειών σε Apache

Συχνές ερωτήσεις για το Page Keyset του Ash
Ποιο είναι το βασικό ρίσκο; Ένας κακόβουλος χρήστης μπορεί να στείλει ειδικά διαμορφωμένο δείκτη σε σημείο πρόσβασης με keyset σελιδοποίηση και να προκαλέσει υπερβολική κατανάλωση μνήμης. Σε περιβάλλον με πολλά αιτήματα, η συνέπεια μπορεί να είναι τερματισμός της εφαρμογής.
Ποια ενέργεια πρέπει να γίνει πρώτη; Η ασφαλέστερη επιλογή είναι η αναβάθμιση στην έκδοση 3.31.1 ή νεότερη. Παράλληλα, πρέπει να καταγραφούν τα σημεία ανάγνωσης που δέχονται τις παραμέτρους after και before, ώστε να επιβεβαιωθεί ότι η διόρθωση εφαρμόστηκε σε όλες τις υπηρεσίες.
Το CVE-2026-69659 δεν είναι απομακρυσμένη εκτέλεση κώδικα, αλλά η αδυναμία διαθεσιμότητας του Page Keyset του Ash που μπορεί να επηρεάσει εφαρμογές με δημόσια API. Η έγκαιρη ενημέρωση, οι περιορισμοί στα αιτήματα και η παρακολούθηση της μνήμης μειώνουν ουσιαστικά τον κίνδυνο, χωρίς να απαιτείται αλλαγή στη λογική των νόμιμων δεικτών.
