Στον διακομιστή αλληλογραφίας Exim
Στην προεπιλεγμένη διαμόρφωση, η επίθεση μπορεί να πραγματοποιηθεί χωρίς περιττές επιπλοκές από έναν τοπικό χρήστη, αφού εφαρμόζεται το ACL "verify = παραλήπτης", το οποίο εκτελεί πρόσθετους ελέγχους για εξωτερικές διευθύνσεις. Μια απομακρυσμένη επίθεση μπορεί να συμβεί όταν αλλάζουν οι ρυθμίσεις, όπως η λειτουργία ως δευτερεύον MX για έναν άλλο τομέα, η κατάργηση του ACL "verify=recipient" ή ορισμένες αλλαγές στο επίθημα local_part_suffix). Μια απομακρυσμένη επίθεση είναι επίσης δυνατή εάν ο εισβολέας μπορεί να διατηρήσει τη σύνδεση με τον διακομιστή ανοιχτή για 7 ημέρες (για παράδειγμα, στέλνοντας ένα byte ανά λεπτό για να παρακάμψει ένα χρονικό όριο λήξης). Ταυτόχρονα, είναι πιθανό να υπάρχουν απλούστερα διανύσματα επίθεσης για απομακρυσμένη εκμετάλλευση του προβλήματος.
Η ευπάθεια προκαλείται από εσφαλμένη επαλήθευση της διεύθυνσης του παραλήπτη στη συνάρτηση deliver_message() που ορίζεται στο αρχείο /src/deliver.c. Με το χειρισμό της μορφοποίησης της διεύθυνσης, ένας εισβολέας μπορεί να επιτύχει την αντικατάσταση των δεδομένων του στα ορίσματα μιας εντολής που καλείται μέσω της συνάρτησης execv() με δικαιώματα ρίζας. Η λειτουργία δεν απαιτεί τη χρήση πολύπλοκων τεχνικών που χρησιμοποιούνται για υπερχείλιση buffer ή καταστροφή της μνήμης αρκεί η απλή αντικατάσταση χαρακτήρων.
Το πρόβλημα σχετίζεται με τη χρήση της κατασκευής για τη μετατροπή διευθύνσεων:
deliver_localpart = expand_string(
string_sprintf("${local_part:%s}", new->address));
deliver_domain = expand_string(
string_sprintf("${domain:%s}", new->address));
Η συνάρτηση expand_string() είναι ένας πολύπλοκος συνδυασμός, συμπεριλαμβανομένης της αναγνώρισης της εντολής "${run{command ορίσματα}", η οποία οδηγεί στην εκκίνηση ενός εξωτερικού χειριστή. Έτσι, για να επιτεθεί σε μια περίοδο λειτουργίας SMTP, ένας τοπικός χρήστης χρειάζεται μόνο να στείλει μια εντολή όπως "RCPT TO "username+${run{...}}@localhost"", όπου ο localhost είναι ένας από τους κεντρικούς υπολογιστές από τη λίστα local_domains, και όνομα χρήστη είναι το όνομα ενός υπάρχοντος τοπικού χρήστη.
Εάν ο διακομιστής λειτουργεί ως αναμετάδοση αλληλογραφίας, αρκεί να στείλετε εξ αποστάσεως την εντολή 'RCPT ΣΤΟ "${run{...}}@relaydomain.com"', όπου το relaydomain.com είναι ένας από τους κεντρικούς υπολογιστές που αναφέρονται στο relay_to_domains ενότητα ρυθμίσεων. Εφόσον το Exim δεν ορίζει από προεπιλογή την απόρριψη της λειτουργίας προνομίου (deliver_drop_privilege = false), οι εντολές που περνούν μέσω του "${run{...}}" θα εκτελούνται ως root.
Αξιοσημείωτο είναι ότι η ευπάθεια ήταν
Μια επιδιόρθωση για προηγούμενες εκδόσεις που συνεχίζουν να χρησιμοποιούνται σε διανομές είναι προς το παρόν διαθέσιμη μόνο ως
Πηγή: opennet.ru