Το InvisibleJS, ένα νέο εργαλείο ανοιχτού κώδικα που αποκρύπτει κώδικα JavaScript χρησιμοποιώντας αόρατους χαρακτήρες Unicode μηδενικού πλάτους, ειδοποιεί για πιθανή κακή χρήση σε καμπάνιες κακόβουλου λογισμικού.
Το InvisibleJS, που φιλοξενείται στο GitHub από προγραμματιστή Με το ψευδώνυμο oscarmine, χρησιμοποιεί steganography για να ενσωματώσει τον πηγαίο κώδικα σε φαινομενικά κενά αρχεία. Η διαδικασία μετατρέπει το JavaScript σε δυαδικές συμβολοσειρές, αντιστοιχίζοντας τα 0s σε Zero Width Space (U+200B) και 1s σε Zero Width Non-Jiner (U+200C).
Στη συνέχεια, ένας μικρός φορτωτής εκκίνησης αποκωδικοποιεί και εκτελεί το κρυφό ωφέλιμο φορτίο κατά την εκτέλεση, καθιστώντας τον κώδικα αόρατο με γυμνό μάτι σε προγράμματα επεξεργασίας όπως το VS Code.
Δύο εκδόσεις για διαφορετικά περιβάλλοντα
Το αποθετήριο προσφέρει την έκδοση 1 (Κλασική με eval), ιδανική για ρυθμίσεις CommonJS και παλαιού τύπου Node.js, υποστηρίζοντας εγγενώς τις απαιτήσεις και το module.exports.
Η έκδοση 2 (Σύγχρονη με εισαγωγή) στοχεύει τις μονάδες ES, χρησιμοποιώντας τη δυναμική εισαγωγή αναμονής() για την αναμονή και τις εξαγωγές ανώτατου επιπέδου, αν και απαιτεί αρχεία .mjs ή “τύπος”: διαμόρφωση μονάδας.
Η απόκρυψη του κώδικα είναι απλή μέσω CLI:
- Έκδοση 1: κόμβος hideV1.mjs -i input.js -o hidden.js
- Έκδοση 2: κόμβος hideV2.mjs -i input.js -o hidden.js
Ακολουθεί η εκτέλεση με κρυφός κόμβος.jsπαράγοντας κανονική έξοδο παρά την κενή εμφάνιση.
| Χαρακτηριστικό | Έκδοση 1 (αντίστοιχη) | Έκδοση 2 (εισαγωγή) |
|---|---|---|
| Αόρατο | 100% | 100% |
| Υποστήριξη CommonJS | Ντόπιος | Περιωρισμένος |
| Υποστήριξη ESM | Οχι | Γεμάτος |
| Αναμονή ανώτατου επιπέδου | Οχι | Ναί |
| Εκτέλεση | Σύγχρονος | Ασύγχρονη |
| Μήκος αποκωδικοποιητή | Μικρός | Μακρύς |
Αυτή η τεχνική απηχεί το προηγούμενο JS μηδενικού πλάτους αποδείξεις της ιδέας που χρονολογείται από το 2018, τώρα οπλισμένος σε επιθέσεις phishing. Οι εισβολείς έχουν κάνει κατάχρηση παρόμοιας συσκότισης Unicode χρησιμοποιώντας χαρακτήρες Hangul για δυαδικό περιεχόμενο για να κρύψουν ωφέλιμα φορτία σε σενάρια, αποφεύγοντας τους σαρωτές με ελέγχους κατά του εντοπισμού σφαλμάτων.

Το InvisibleJS θα μπορούσε να ενισχύσει τέτοιες απειλές, επιτρέποντας κρυφά προγράμματα φόρτωσης κακόβουλου λογισμικού σε περιβάλλοντα Node.js ή εφαρμογές ιστού, περιπλέκοντας τον εντοπισμό απειλών.
Καθώς τα εργαλεία συσκότισης πολλαπλασιάζονται, οι ομάδες ασφαλείας πρέπει να βελτιώσουν τη σάρωση με επίγνωση του Unicode και την ανάλυση συμπεριφοράς. Ενώ παρουσιάζεται πειραματικά, το InvisibleJS υπογραμμίζει τη φύση διπλής χρήσης των καινοτομιών κωδικοποίησης στην ασφάλεια στον κυβερνοχώρο.

