Η διανομή λειτουργικού συστήματος ανοιχτού κώδικα OpenBSD είναι γνωστή μεταξύ των sysadmins, ειδικά εκείνων που διαχειρίζονται διακομιστές, για την εστίασή της στην ασφάλεια σε σχέση με την ταχύτητα, τις δυνατότητες και τα φανταχτερά front-ends.
Κατάλληλα, ίσως, το λογότυπό του είναι ένα φουσκωτό ψάρι – φουσκωμένο, με τις αιχμές του έτοιμες να απωθήσουν κάθε πονηρούς χάκερ που μπορεί να συναντήσουν.
Αλλά η ομάδα του OpenBSD είναι μάλλον περισσότερο γνωστή όχι για ολόκληρη τη διανομή της, αλλά για την εργαλειοθήκη απομακρυσμένης πρόσβασης OpenSSH που γράφτηκε στα τέλη της δεκαετίας του 1990 για να συμπεριληφθεί στο ίδιο το λειτουργικό σύστημα.
SSH, συντομογραφία για ασφαλές κέλυφος, δημιουργήθηκε αρχικά από Φινλανδό επιστήμονα υπολογιστών Tatu Ylönen στα μέσα της δεκαετίας του 1990 με την ελπίδα να απογαλακτιστούν οι sysadmin από την επικίνδυνη συνήθεια να χρησιμοποιούν το πρωτόκολλο Telnet.
Το πρόβλημα με το Telnet
Το Telnet ήταν εξαιρετικά απλό και αποτελεσματικό: αντί να συνδέετε φυσικά καλώδια (ή να χρησιμοποιείτε μόντεμ μέσω τηλεφωνικής γραμμής) για να κάνετε μια σύνδεση τηλετύπου με απομακρυσμένους διακομιστές, χρησιμοποιήσατε μια σύνδεση TELetype NETwork.
Βασικά, τα δεδομένα που συνήθως έρεαν πέρα δώθε μέσω μιας αποκλειστικής σειριακής σύνδεσης ή τηλεφωνικής γραμμής μέσω τηλεφώνου στάλθηκαν και λήφθηκαν μέσω Διαδικτύου, χρησιμοποιώντας μια σύνδεση δικτύου TCP με μεταγωγή πακέτων αντί για μια σύνδεση σημείου προς σημείο με μεταγωγή κυκλώματος .
Ίδιο οικείο σύστημα σύνδεσης, φθηνότερες συνδέσεις, δεν χρειάζονται αποκλειστικές γραμμές δεδομένων!
Το τεράστιο ελάττωμα στο Telnet, φυσικά, ήταν η παντελής έλλειψη κρυπτογράφησης, έτσι ώστε το να μυρίσεις την ακριβή περίοδο λειτουργίας του τερματικού σου ήταν ασήμαντο, επιτρέποντας στους κροτίδες να βλέπουν κάθε εντολή που πληκτρολογούσες (ακόμα και τα λάθη που έκανες και όλες τις φορές που χτυπούσες [Backspace]
), και κάθε byte εξόδου που παράγεται…
…και, φυσικά, το όνομα χρήστη και τον κωδικό πρόσβασής σας στην αρχή της συνεδρίας.
Οποιοσδήποτε στη διαδρομή του δικτύου σας θα μπορούσε όχι μόνο να ανακατασκευάσει εύκολα τις συνεδρίες του sysadmin σε πραγματικό χρόνο στη δική του οθόνη, αλλά πιθανώς και να παραβιάσει τη σύνοδό σας τροποποιώντας τις εντολές που στείλατε στον απομακρυσμένο διακομιστή και πλαστογραφώντας τις απαντήσεις που επιστρέφουν, ώστε να μην το προσέξετε η υποκλοπή.
Θα μπορούσαν ακόμη και να δημιουργήσουν έναν διακομιστή απατεώνων, να σας παρασύρουν σε αυτόν και να σας κάνουν εκπληκτικά δύσκολο να εντοπίσετε την εξαπάτηση.
Ισχυρή κρυπτογράφηση FTW
Το SSH του Ylönen είχε ως στόχο να προσθέσει ένα επίπεδο ισχυρής κρυπτογράφησης και ελέγχου ταυτότητας σε κάθε άκρο μιας συνεδρίας που μοιάζει με Telnet, δημιουργώντας ένα ασφαλές κέλυφος (αυτό σημαίνει το όνομα, αν έχετε αναρωτηθεί ποτέ, αν και σχεδόν όλοι το αποκαλούν ess-ess-aitch αυτές τις μέρες).
Ήταν μια άμεση επιτυχία και το πρωτόκολλο υιοθετήθηκε γρήγορα από τους sysadmins παντού.
Το OpenSSH ακολούθησε σύντομα, όπως αναφέραμε παραπάνω, που πρωτοεμφανίστηκε στα τέλη του 1999 ως μέρος του OpenBSD 2.6 ελευθέρωση.
Η ομάδα του OpenBSD ήθελε να δημιουργήσει μια δωρεάν, αξιόπιστη, ανοιχτού κώδικα υλοποίηση του πρωτοκόλλου που και οποιοσδήποτε άλλος θα μπορούσε να χρησιμοποιήσει, χωρίς καμία από τις αδειοδοτήσεις ή τις εμπορικές επιπλοκές που είχαν επιβαρύνει την αρχική εφαρμογή του Ylönen τα χρόνια αμέσως μετά την κυκλοφορία του.
Πράγματι, εάν εκτελείτε τον διακομιστή SSH των Windows και συνδεθείτε σε αυτόν από έναν υπολογιστή Linux αυτήν τη στιγμή, σχεδόν σίγουρα θα βασίζεστε στην υλοποίηση OpenSSH και στα δύο άκρα.
Το πρωτόκολλο SSH χρησιμοποιείται επίσης σε άλλες δημοφιλείς υπηρεσίες πελάτη-διακομιστή, συμπεριλαμβανομένων των SCP και SFTP, συντομογραφία ασφαλές αντίγραφο και ασφαλές FTP αντίστοιχα. SSH χαλαρά σημαίνει, "Σύνδεση με ασφάλεια και εκτέλεση εντολής SHell στο άλλο άκρο", συνήθως για διαδραστικές συνδέσεις, επειδή το πρόγραμμα Unix για ένα κέλυφος εντολών είναι συνήθως /bin/sh
. Το SCP είναι παρόμοιο, αλλά για αρχεία CoPying, επειδή καλείται γενικά η εντολή Unix file-copy /bin/cp
, και το SFTP ονομάζεται σχεδόν με τον ίδιο τρόπο.
Το OpenSSH δεν είναι η μόνη εργαλειοθήκη SSH στην πόλη.
Άλλες γνωστές υλοποιήσεις περιλαμβάνουν: libssh2, για προγραμματιστές που θέλουν να δημιουργήσουν υποστήριξη SSH απευθείας στις δικές τους εφαρμογές. dropbear, ένας απογυμνωμένος διακομιστής SSH από τον Αυστραλιανό κωδικοποιητή Ματ Τζόνστον που βρίσκεται ευρέως σε συσκευές που ονομάζονται IoT (Internet of Things), όπως οικιακούς δρομολογητές και εκτυπωτές. και PuTTY, μια δημοφιλής, δωρεάν συλλογή εργαλείων που σχετίζονται με το SSH για Windows από ανεξάρτητο προγραμματιστή ανοιχτού κώδικα Σάιμον Τάθαμ στην Αγγλία.
Αλλά αν είστε τακτικός χρήστης SSH, έχετε σχεδόν σίγουρα συνδεθεί σε τουλάχιστον έναν διακομιστή OpenSSH σήμερα, κυρίως επειδή οι περισσότερες σύγχρονες διανομές Linux τον περιλαμβάνουν ως το τυπικό εργαλείο απομακρυσμένης πρόσβασης και η Microsoft προσφέρει τόσο έναν πελάτη OpenSSH όσο και έναν OpenSSH διακομιστή ως επίσημα στοιχεία των Windows αυτές τις μέρες.
Διόρθωση σφαλμάτων χωρίς διπλό
OpenSSH έκδοση 9.2 μόλις βγήκε, και το σημειώσεις έκδοσης αναφορά ως εξής:
Αυτή η έκδοση περιέχει επιδιορθώσεις για […] ένα πρόβλημα ασφάλειας μνήμης. [Αυτό το σφάλμα] δεν πιστεύεται ότι είναι εκμεταλλεύσιμο, αλλά αναφέρουμε τα περισσότερα σφάλματα μνήμης προσβάσιμα από το δίκτυο ως σφάλματα ασφαλείας.
Το σφάλμα επηρεάζει sshd
, ο διακομιστής OpenSSH (ο -d
το επίθημα σημαίνει δαίμονας, το όνομα Unix για το είδος της διαδικασίας παρασκηνίου που τα Windows καλούν a υπηρεσία):
sshd(8): διορθώστε ένα σφάλμα μνήμης διπλής ελεύθερης μνήμης πριν από τον έλεγχο ταυτότητας που εισήχθη στο OpenSSH 9.1. Αυτό δεν πιστεύεται ότι είναι εκμεταλλεύσιμο και συμβαίνει στη μη προνομιακή διαδικασία προ-ελέγχου που υπόκειται στο chroot(2) και είναι περαιτέρω sandbox στις περισσότερες μεγάλες πλατφόρμες.
Ένα διπλό σφάλμα σημαίνει ότι ένα μπλοκ μνήμης που έχετε ήδη επιστρέψει στο λειτουργικό σύστημα θα χρησιμοποιηθεί ξανά σε άλλα μέρη του προγράμματός σας…
…αργότερα θα επιστραφεί ξανά από ένα μέρος του προγράμματος που στην πραγματικότητα δεν «κατέχει» αυτή τη μνήμη, αλλά δεν γνωρίζει ότι δεν έχει.
(Ή επιστρέφεται σκόπιμα κατόπιν προτροπής κώδικα που προσπαθεί να προκαλέσει το σφάλμα επίτηδες για να μετατρέψει ευπάθεια σε ένα εκμεταλλεύονται.)
Αυτό μπορεί να οδηγήσει σε ανεπαίσθητα και δύσκολα ξεδιπλωμένα σφάλματα, ειδικά εάν το σύστημα επισημάνει το ελευθερωμένο μπλοκ ως διαθέσιμο όταν το πρώτο free()
συμβαίνει, αργότερα το εκχωρεί σε άλλο μέρος του κώδικά σας όταν ζητά μνήμη μέσω malloc(
), και στη συνέχεια επισημαίνει το μπλοκ ελεύθερο για άλλη μια φορά όταν η περιττή κλήση προς free()
εμφανίζεται.
Αυτό σας αφήνει στο είδος της κατάστασης που αντιμετωπίζετε όταν κάνετε check in σε ένα ξενοδοχείο που λέει: «Ω, καλά νέα! Νομίζαμε ότι ήμασταν γεμάτοι, αλλά ένας άλλος επισκέπτης αποφάσισε να πάει νωρίς, ώστε να έχετε το δωμάτιό του.»
Ακόμα κι αν το δωμάτιο είναι προσεκτικά καθαρισμένο και προετοιμασμένο για νέους ενοίκους όταν μπαίνεις μέσα, και έτσι φαίνεται σαν να έχει διατεθεί σωστά για την αποκλειστική σου χρήση, θα πρέπει να πιστεύεις ότι η κάρτα κλειδιού του προηγούμενου επισκέπτη όντως ακυρώθηκε σωστά και ότι νωρίς ταμείο» δεν ήταν ένα πονηρό τέχνασμα για να επιστρέψετε κρυφά αργότερα την ίδια μέρα και να κλέψετε τον φορητό υπολογιστή σας.
Διόρθωση σφαλμάτων για διόρθωση σφαλμάτων
Κατά ειρωνικό τρόπο, αν κοιτάξετε το πρόσφατο ιστορικό κώδικα OpenSSH, θα δείτε ότι το OpenSSH είχε ένα μέτριο σφάλμα σε μια συνάρτηση που ονομάζεται compat_kex_proposal()
, χρησιμοποιείται για τον έλεγχο του είδους του αλγόριθμου ανταλλαγής κλειδιών που θα χρησιμοποιηθεί κατά τη ρύθμιση μιας σύνδεσης.
Αλλά η διόρθωση αυτού του μέτριου σφάλματος εισήγαγε μια πιο σοβαρή ευπάθεια.
Παρεμπιπτόντως, η παρουσία του σφάλματος σε ένα μέρος του λογισμικού που χρησιμοποιείται κατά τη ρύθμιση μιας σύνδεσης είναι αυτό που κάνει αυτό το λεγόμενο προσιτό σε δίκτυο προ-έλεγχος ταυτότητας ευπάθεια (ή σφάλμα προεγγραφής εν συντομία).
Το διπλό σφάλμα εμφανίζεται στον κώδικα που πρέπει να εκτελεστεί μετά ένας πελάτης έχει ξεκινήσει μια απομακρυσμένη περίοδο λειτουργίας, αλλά πριν έχει πραγματοποιηθεί οποιαδήποτε συμφωνία κλειδιού ή έλεγχος ταυτότητας, επομένως η ευπάθεια μπορεί, θεωρητικά, να ενεργοποιηθεί πριν παρουσιαστούν για επικύρωση τυχόν κωδικοί πρόσβασης ή κρυπτογραφικά κλειδιά.
Στο OpenSSH 9.0, compat_kex_proposal
έμοιαζε κάπως έτσι (πολύ απλοποιημένο εδώ):
char* compat_kex_proposal(char* suggestion) { if (condition1) { return suggestion; } if (condition2) { suggestion = allocatenewstring1(); } if (condition3) { suggestion = allocatenewstring2(); } if (isblank(suggestion)) { error(); } return suggestion; }
Η ιδέα είναι ότι ο καλών περνάει στο δικό του μπλοκ μνήμης που περιέχει μια συμβολοσειρά κειμένου που προτείνει μια ρύθμιση ανταλλαγής κλειδιού και παίρνει πίσω είτε μια έγκριση για να χρησιμοποιήσει την ίδια την πρόταση που έστειλε είτε μια νέα συμβολοσειρά κειμένου με μια ενημερωμένη πρόταση .
Το σφάλμα είναι ότι εάν η συνθήκη 1 είναι ψευδής αλλά οι συνθήκες 2 και 3 είναι και οι δύο αληθείς, ο κώδικας εκχωρεί δύο νέες συμβολοσειρές κειμένου, αλλά μόνο επιστρέφει ένας.
Το μπλοκ μνήμης που εκχωρείται από allocatenewstring1()
δεν ελευθερώνεται ποτέ και όταν η συνάρτηση επιστρέψει, η διεύθυνση μνήμης της χάνεται για πάντα, επομένως δεν υπάρχει τρόπος για να free()
το στο μέλλον.
Αυτό το μπλοκ ουσιαστικά εγκαταλείπεται, προκαλώντας αυτό που είναι γνωστό ως α έλλειψη μνήμης.
Με την πάροδο του χρόνου, αυτό θα μπορούσε να προκαλέσει προβλήματα, ίσως ακόμη και να αναγκάσει τον διακομιστή να τερματιστεί για να ανακάμψει από την υπερφόρτωση της μνήμης.
Στο OpenSSH 9.1, ο κώδικας ενημερώθηκε σε μια προσπάθεια να αποφευχθεί η εκχώρηση δύο συμβολοσειρών αλλά η εγκατάλειψη μιας από αυτές:
/* Always returns pointer to allocated memory, caller must free. */ char* compat_kex_proposal(char* suggestion){ char* previousone = NULL; if (condition1) { return newcopyof(suggestion); } if (condition2) { suggestion = allocatenewstring1(); } if (condition3) { previousone = suggestion; suggestion = allocatenewstring2(); } free(previousone); } if (isblank(suggestion()) { error(); } return suggestion; }
Αυτό έχει το διπλό σφάλμα, γιατί εάν η συνθήκη 1 και η συνθήκη 2 είναι και οι δύο ψευδείς, αλλά η συνθήκη 3 είναι αληθής, τότε ο κώδικας εκχωρεί μια νέα συμβολοσειρά για αποστολή ως απάντηση…
…αλλά λανθασμένα ελευθερώνει τη συμβολοσειρά στην οποία μεταβίβασε αρχικά ο καλών, επειδή η συνάρτηση allocatenewstring1()
ποτέ δεν καλείται να ενημερώσει τη μεταβλητή suggestion
.
Η συμβολοσειρά προτάσεων που πέρασε είναι η μνήμη που ανήκει στον καλούντα, και ότι ο καλών θα ελευθερώσει τα θέματα αργότερα, οδηγώντας στον κίνδυνο διπλής απελευθέρωσης.
Στο OpenSSH 9.2, ο κώδικας έχει γίνει πιο προσεκτικός, παρακολουθώντας και τα τρία πιθανά μπλοκ μνήμης που χρησιμοποιούνται: το αρχικό suggestion
(μνήμη που ανήκει σε κάποιον άλλο) και δύο πιθανές νέες συμβολοσειρές που μπορεί να εκχωρηθούν καθ' οδόν:
/* Always returns pointer to allocated memory, caller must free. */ char* compat_kex_proposal(char* suggestion) { char* newone = NULL; char* newtwo = NULL; if (condition1) { return newcopyof(suggestion); } if (condition2) { newone = allocatenewstring1(); } if (condition3) { newtwo = allocatenewstring2(); } free(newone); newone = newtwo; } if (isblank(newone)) { error(); } return newone; }
Εάν η συνθήκη 1 είναι αληθής, χρησιμοποιείται ένα νέο αντίγραφο της συμβολοσειράς που έχει περάσει, ώστε ο καλών να μπορεί αργότερα free()
τη μνήμη της χορδής τους όποτε θέλουν.
Εάν ξεπεράσουμε τη συνθήκη 1 και η συνθήκη 2 είναι αληθής αλλά η συνθήκη 3 είναι ψευδής, τότε η εναλλακτική πρόταση που δημιουργήθηκε από allocatenewstring1()
επιστρέφεται και το περασμένο suggestion
η χορδή μένει μόνη της.
Εάν η συνθήκη 2 είναι ψευδής και η συνθήκη 3 είναι αληθής, τότε δημιουργείται και επιστρέφεται μια νέα συμβολοσειρά και η μεταβιβασμένη suggestion
η χορδή μένει μόνη της.
Εάν και η συνθήκη 2 και η συνθήκη 3 είναι αληθείς, τότε δύο νέες συμβολοσειρές εκχωρούνται στην πορεία. Το πρώτο ελευθερώνεται επειδή δεν χρειάζεται. Το δεύτερο επιστρέφεται. και το περασμένο suggestion
η χορδή μένει μόνη της.
Μπορείς να RTxM για να το επιβεβαιώσετε εάν καλέσετε free(newone)
πότε newone
is NULL
, τότε «δεν εκτελείται καμία επέμβαση», γιατί είναι πάντα ασφαλές free(NULL)
. Παρόλα αυτά, πολλοί προγραμματιστές εξακολουθούν να το προφυλάσσουν σθεναρά με κώδικα όπως π.χ if (ptr != NULL) { free(ptr); }
.
Τι να κάνω;
Όπως προτείνει η ομάδα του OpenSSH, η εκμετάλλευση αυτού του σφάλματος θα είναι δύσκολη, κυρίως λόγω των περιορισμένων προνομίων που sshd
το πρόγραμμα έχει ενώ ρυθμίζει τη σύνδεση για χρήση.
Ωστόσο, το ανέφεραν ως τρύπα ασφαλείας επειδή αυτό είναι, οπότε βεβαιωθείτε ότι έχετε ενημερώσει OpenSSH 9.2.
Και αν γράφετε κώδικα σε C, να θυμάστε ότι ανεξάρτητα από την εμπειρία που έχετε, η διαχείριση της μνήμης είναι εύκολο να γίνει λάθος…
…προσοχή λοιπόν εκεί έξω.
(Ναι, η Rust και οι σύγχρονοι φίλοι της θα το κάνουν σας βοηθά να γράψετε σωστό κώδικα, αλλά μερικές φορές θα χρειαστεί να χρησιμοποιήσετε το C, και ακόμη και η Rust δεν μπορεί να εγγυηθεί σταματά να γράφεις λάθος κώδικα εάν προγραμματίζετε αλόγιστα!)
- SEO Powered Content & PR Distribution. Ενισχύστε σήμερα.
- Platoblockchain. Web3 Metaverse Intelligence. Ενισχύθηκε η γνώση. Πρόσβαση εδώ.
- πηγή: https://nakedsecurity.sophos.com/2023/02/03/openssh-fixes-double-free-memory-bug-thats-pokable-over-the-network/
- 1
- 1999
- 9
- a
- πάνω από
- Απόλυτος
- πρόσβαση
- πραγματικά
- διεύθυνση
- θετός
- Μετά το
- κατά
- αλγόριθμος
- Όλα
- διατεθεί
- κατανέμει
- Επιτρέποντας
- alone
- ήδη
- εναλλακτική λύση
- Αν και
- πάντοτε
- μεταξύ των
- και
- Άλλος
- εφαρμογές
- έγκριση
- Αυστραλός
- Πιστοποίηση
- συγγραφέας
- αυτόματη
- διαθέσιμος
- πίσω
- φόντο
- background-image
- επειδή
- γίνονται
- πριν
- Πιστεύεται
- ΚΑΛΎΤΕΡΟΣ
- Αποκλεισμός
- Μπλοκ
- σύνορο
- Κάτω μέρος
- Έντομο
- σφάλματα
- χτίζω
- κλήση
- που ονομάζεται
- επισκέπτης
- κλήσεις
- ο οποίος
- Αιτία
- προκαλώντας
- προσεκτικός
- Κέντρο
- σίγουρα
- φτηνότερος
- έλεγχος
- πελάτης
- κωδικός
- κωδικοποιητή
- συλλογή
- χρώμα
- COM
- Ελάτε
- ερχομός
- εμπορικός
- εξαρτήματα
- υπολογιστή
- κατάσταση
- Συνθήκες
- Επιβεβαιώνω
- Connect
- συνδεδεμένος
- Συνδετικός
- σύνδεση
- Διασυνδέσεις
- Περιέχει
- σύγχρονος
- αντιγραφή
- θα μπορούσε να
- Πορεία
- κάλυμμα
- δημιουργία
- δημιουργήθηκε
- δημιουργία
- κρυπτογραφικό
- ΚΙΝΔΥΝΟΣ
- ημερομηνία
- ημέρα
- Ημ.
- αποφάσισε
- αφιερωμένο
- Εργολάβος
- προγραμματιστές
- Συσκευές
- DID
- Καλούπι
- δύσκολος
- Display
- διανομή
- Διανομές
- Όχι
- διπλό δωρεάν
- κάτω
- κατά την διάρκεια
- κάθε
- Νωρίς
- εύκολα
- Αποτελεσματικός
- είτε
- κρυπτογράφηση
- τελειώνει
- Αγγλία
- Ολόκληρος
- ειδικά
- κατ 'ουσίαν,
- Even
- ΠΑΝΤΑ
- Κάθε
- όλοι
- Αποκλειστικό
- εμπειρία
- έμπειρος
- οικείος
- Χαρακτηριστικά
- Αρχεία
- Όνομα
- Ψάρι
- σταθερός
- ελάττωμα
- ροή
- Συγκέντρωση
- ακολουθείται
- εξής
- για πάντα
- Βρέθηκαν
- Δωρεάν
- φίλους
- από
- πλήρη
- λειτουργία
- περαιτέρω
- μελλοντικός
- γενικά
- παράγεται
- παίρνω
- γίγαντας
- Go
- καλός
- σε μεγάλο βαθμό
- εγγύηση
- φρουρά
- Επισκέπτης
- χάκερ
- συμβαίνει
- Σκληρά
- ύψος
- εδώ
- ιστορία
- Επιτυχία
- Τρύπα
- Αρχική
- ελπίζω
- ξενοδοχείο
- φτερουγίζω
- Πως
- HTML
- HTTPS
- ιδέα
- αμέσως
- εκτέλεση
- in
- Σε άλλες
- περιλαμβάνουν
- Συμπεριλαμβανομένου
- συμπερίληψη
- εσφαλμένα
- στιγμή
- αντί
- διαδραστικό
- Internet
- Ίντερνετ των πραγμάτων
- εισήγαγε
- IoT
- Iot (διαδίκτυο πραγμάτων)
- IT
- εαυτό
- τήρηση
- πλήκτρα
- Ξέρω
- γνωστός
- Έλλειψη
- laptop
- Αργά
- στρώμα
- οδηγήσει
- που οδηγεί
- αδειοδότηση
- Περιωρισμένος
- γραμμή
- LINK
- linux
- λογότυπο
- πλέον
- ματιά
- κοίταξε
- ΦΑΊΝΕΤΑΙ
- που
- μεγάλες
- κάνω
- ΚΑΝΕΙ
- διαχείριση
- διαχείριση
- Περιθώριο
- ύλη
- max-width
- μέσα
- Μνήμη
- που αναφέρθηκαν
- Microsoft
- ενδέχεται να
- λάθη
- ΜΟΝΤΕΡΝΑ
- περισσότερο
- πλέον
- όνομα
- Ονομάστηκε
- Ανάγκη
- ανάγκες
- δίκτυο
- παρ 'όλα αυτά
- Νέα
- κανονικός
- προσφορές
- επίσημος ανώτερος υπάλληλος
- ONE
- ανοίξτε
- ανοικτού κώδικα
- λειτουργίας
- το λειτουργικό σύστημα
- λειτουργία
- τάξη
- πρωτότυπο
- αρχικά
- ΑΛΛΑ
- δική
- ανήκει
- μέρος
- εξαρτήματα
- πέρασε
- περάσματα
- Κωδικός Πρόσβασης
- Κωδικοί πρόσβασης
- Το παρελθόν
- μονοπάτι
- Παύλος
- ίσως
- τηλέφωνο
- φυσικός
- Μέρος
- Πλατφόρμες
- Πλάτων
- Πληροφορία δεδομένων Plato
- Πλάτωνα δεδομένα
- Δημοφιλής
- θέση
- δυνατός
- Δημοσιεύσεις
- έτοιμος
- παρουσία
- παρουσιάζονται
- προηγούμενος
- προνόμια
- πιθανώς
- Πρόβλημα
- διαδικασια μας
- Πρόγραμμα
- Προγραμματιστές
- δεόντως
- πρωτόκολλο
- σκοπός
- γρήγορα
- έτοιμος
- πραγματικός
- σε πραγματικό χρόνο
- έλαβε
- πρόσφατος
- Ανάκτηση
- τακτικός
- απελευθερώνουν
- αξιόπιστος
- θυμάμαι
- μακρινός
- απομακρυσμένη πρόσβαση
- αναφέρουν
- αναφέρθηκαν
- απόδοση
- Επιστροφές
- Επικίνδυνος
- Δωμάτιο
- τρέξιμο
- Σκωρία
- ένα ασφαλές
- Ασφάλεια
- ίδιο
- Επιστήμονας
- Οθόνη
- Δεύτερος
- ασφαλώς
- ασφάλεια
- σειράς
- Διακομιστές
- Υπηρεσίες
- Συνεδρίαση
- συνεδρίες
- σειρά
- τον καθορισμό
- setup
- αυστηρός
- κέλυφος
- Κοντά
- τερματίστε
- παρόμοιες
- Απλούς
- απλοποιημένη
- κατάσταση
- σπιούνος
- So
- λογισμικό
- στέρεο
- Κάποιος
- κάτι
- Πηγή
- ταχύτητα
- αιχμές
- Spot
- πρότυπο
- στέκεται
- Εκκίνηση
- Ακόμη
- ισχυρός
- θέμα
- τέτοιος
- Προτείνει
- υποστήριξη
- SVG
- σύστημα
- Πάρτε
- τερματικό
- Η
- Το μπλοκ
- τους
- Εκεί.
- επομένως
- πράγματα
- σκέψη
- τρία
- ώρα
- φορές
- Τίτλος
- προς την
- σήμερα
- εργαλείο
- εργαλειοθήκη
- εργαλεία
- κορυφή
- Σύνολο
- τροχιά
- μετάβαση
- διαφανής
- ενεργοποιήθηκε
- ταλαιπωρία
- αληθής
- Εμπιστευθείτε
- ΣΤΡΟΦΗ
- συνήθως
- unix
- Ενημέρωση
- ενημερώθηκε
- URL
- χρήση
- Χρήστες
- συνήθως
- επικύρωση
- εκδοχή
- μέσω
- ευπάθεια
- ήθελε
- πολύ γνωστό
- Τι
- ενώ
- Ο ΟΠΟΊΟΣ
- ευρέως
- θα
- παράθυρα
- χωρίς
- θα
- γράφω
- γραφή
- γραπτή
- χρόνια
- Εσείς
- Σας
- zephyrnet