browser

Sandbox: δοκιμάζοντας λειτουργικά συστήματα

Παρατηρώντας κανείς το πως αξιοποιεί τον χρόνο του καθημερινώς στον υπολογιστή του, εύκολα μπορεί να διαπιστώσει πως το web browsing κατέχει μείζονα θέση ανάμεσα στις εκατοντάδες (εάν όχι χιλιάδες) διαθέσιμες χρήσεις του. Παρατηρούμε, δηλαδή, εφαρμογές υψηλής συνδεσιμότητας, οι οποίες παρά την ευχρηστία τους μπορούν να θέσουν σε κίνδυνο την ασφάλεια του υπολογιστή μας. Μέχρι πρόσφατα, η αποτροπή κάποιας επίθεσης από hacker προέβλεπε το κλείσιμο όλων των κενών ασφαλείας από τους developers, πράγμα που για να μην τα πολυλογούμε ήταν πρακτικά αδύνατο! Η πιο γνωστή αλλά και αποτελεσματική λύση δόθηκε όταν τελικά οι προγραμματιστές συνειδητοποίησαν ότι το παραπάνω αποτελεί γεγονός. Έτσι προέκυψε το περίφημο Sandbox.
Φυσικά δεν μιλάμε για άμμο μέσα σε ένα κουτί, αλλά για software Sandboxes, η χρησιμότητα των οποίων είναι να περιορίσουν την εξάπλωση μιας επίθεσης. Με βάση, λοιπόν, την παραδοχή πως ο κώδικάς τους πάντα θα έχει κάποιο κενό ασφαλείας που θα κάνει την εφαρμογή ευάλωτη, οι developers αποφάσισαν να χωρίσουν τις εφαρμογές τους σε διάφορα τμήματα, με έναν και μόνο στόχο: Ότι συμβαίνει στο Sandbox, μένει στο Sandbox!
Για να σας εξηγήσουμε την λειτουργία των Sandboxes θα χρησιμοποιήσουμε ως παράδειγμα τον Google Chrome, μιας και είναι το πιο δημοφιλές παράδειγμα εφαρμογής που χρησιμοποιεί το Sandboxing, κάνοντας την ασφάλειά του κάπως ξεχωριστή! Στην ουσία, η Google πήρε τον Chrome και τον χώρισε σε τρία ξεχωριστά κομμάτια. Το main process που συνδέει τα πάντα μεταξύ τους, τα tab process(es) που περιέχουν τις σελίδες αλλά και τον renderer, και τέλος τα pluggin process(es). Όλα αυτά τα τμήματα έχουν τα απαραίτητα δικαιώματα ώστε να μπορέσουν να λειτουργήσουν, ενώ ταυτόχρονα λόγω των "χαμηλών" αυτών δικαιωμάτων, καθένα από τμήματα είναι και αρκετά περιορισμένο. Στα παραπάνω, δεν γίνεται να μην συμπληρώσουμε πως όλα τα processes δεν μπορούν στην πραγματικότητα να επικοινωνήσουν μεταξύ τους...απλά συνυπάρχουν. Χαρακτηριστικό παράδειγμα αποτελεί το Flash content σε ένα website, το οποίο μπορεί να εμφανίζεται μέσα στην σελίδα, οι εφαρμογή που το τρέχει, όμως, παραμένει διαχωρισμένη από τον browser. Ο renderer, δηλαδή, δίνει μόνο τον χώρο που μπορεί να καταλάβει το Flash content, αφήνοντας το Flash pluggin να το εμφανίσει. Αυτή η θετική έλλειψη επικοινωνίας έχει το ακόλουθο αποτέλεσμα: Όταν ένα tab crashάρει ή παραβιαστεί η ασφάλειά του, δεν επηρεάζει τα άλλα tabs αλλά και το σύστημα αυτό καθαυτό.
Το παραπάνω, εκτός από τον Chrome, υφίσταται και σε έναν μειωμένο βαθμό στον firefox, ο οποίος είναι διαχωρισμένος από third-party pluggins, όπως το Flash. Έτσι, ενώ ο browser είναι συνδυασμένος με τα tabs, και τα δύο είναι διαχωρισμένα από τα pluggins. Η Mozila Foundation, έχει δηλαδή "μεγαλύτερη εμπιστοσύνη" από την Google στον κώδικά της, ρίχνοντας το φταίξιμο ενός κρασαρίσματος στα pluggins. Έτσι, εάν κάποιο από αυτά σταματήσει να λειτουργεί, τότε o browser και τα tabs δεν επηρεάζονται.

About Freegr network

0 Post a Comment:

يتم التشغيل بواسطة Blogger.