Τα αρχεία διαμόρφωσης του Curl είναι κατά λάθος ολοκληρωμένα ως προς το Turing.

Έχει ανακαλυφθεί ότι οποιαδήποτε υπολογίσιμη συνάρτηση μπορεί να δημιουργηθεί χρησιμοποιώντας δομές σε αρχεία διαμόρφωσης Curl. Αυτό το πρόβλημα εμφανίζεται μόνο στις εκδόσεις Curl 8.12–8.16 και προκαλείται από μια ακούσια εφαρμογή της πληρότητας Turing, η οποία επιτρέπει τη δημιουργία μηχανών Turing χρησιμοποιώντας τη δυνατότητα εξαγωγής εύρους byte από μεταβλητές τιμές και το απεριόριστο βάθος ένθεσης κατά την συμπερίληψη εξωτερικών αρχείων διαμόρφωσης.

Για παράδειγμα, το Curl χρησιμοποιείται για την προσομοίωση μιας μηχανής δύο καταχωρητών (μηχανή Minsky) για την πρόσθεση αριθμών και την υλοποίηση του προγράμματος "99 Bottles of Beer", το οποίο χρησιμοποιείται για την εκμάθηση βρόχων. Για να εκτελέσετε το πρόγραμμα, προγραμματισμένο χρησιμοποιώντας αρχεία διαμόρφωσης curl, απλώς αποσυμπιέστε το αρχείο και εκτελέστε την εντολή "curl -q -s -K 99_bottles/main.conf".

Η μηχανή καταχωρητών προσομοιώνεται αναπαραστώντας την τιμή του μετρητή ως μια συμβολοσειρά n x χαρακτήρων. Οι λειτουργίες αύξησης και μείωσης υλοποιούνται χρησιμοποιώντας συνένωση και περικοπή συμβολοσειρών (σύνταξη "[0-0]" για να διατηρηθεί το πρώτο byte και "[1-]" για να διατηρηθούν όλα τα περιεχόμενα εκτός από το πρώτο byte), και οι μεταβάσεις κατάστασης ελέγχονται από την οδηγία "expand-config", η οποία φορτώνει δυναμικά το επόμενο αρχείο διαμόρφωσης χρησιμοποιώντας το όνομά του ως ετικέτα μετάβασης. Η λειτουργία INC(R) στη μηχανή καταχωρητών υλοποιείται ως 'expand-variable = "r={{r}}x"' στο αρχείο διαμόρφωσης Curl, η DEC(R) ως 'expand-variable = "r[1-]={{r}}"' και η JMP(S) ως 'expand-config = "S.conf"'. Για παράδειγμα, ο κώδικας για τον υπολογισμό του 2 + 3:

Στην πράξη, οι υπολογιστικές δυνατότητες που πραγματοποιούνται μέσω αρχείων διαμόρφωσης περιορίζονται από το μέγεθος της στοίβας, καθώς κάθε βήμα εκτέλεσης του προγράμματος απαιτεί τη φόρτωση ενός νέου ένθετου αρχείου διαμόρφωσης. Με μια στοίβα 8 MB, η υπερχείλιση εμφανίζεται μετά από περίπου 922 βήματα. Οι δυνατότητες επηρεάζονται επίσης από το όριο στο μέγεθος των διευρυμένων μεταβλητών (η παράμετρος MAX_EXPAND_CONTENT έχει οριστεί σε 10 MB) και την υψηλή κατανάλωση μνήμης λόγω της αποθήκευσης όλων των παλιών εκδόσεων των μεταβλητών.

Παρόλο που το αναγνωρισμένο χαρακτηριστικό δεν αποτελεί ευπάθεια, σε εκδόσεις που ξεκινούν με την έκδοση curl 8.17, το εν λόγω κόλπο δεν θα λειτουργεί πλέον λόγω του περιορισμού του βάθους ένθεσης των αρχείων διαμόρφωσης σε 5 επίπεδα για προστασία από την άπειρη αναδρομή.

Πηγή: opennet.ru

Αγοράστε αξιόπιστη φιλοξενία για ιστότοπους με προστασία DDoS, διακομιστές VPS VDS 🔥 Αγοράστε αξιόπιστη φιλοξενία ιστοσελίδων με προστασία DDoS, διακομιστές VPS VDS | ProHoster