Sandbox: Should I use it or not?

Παρατηρώντας κανείς το πως αξιοποιεί τον χρόνο του καθημερινώς στον υπολογιστή του, εύκολα μπορεί να διαπιστώσει πως το web browsing κατέχει μείζονα θέση ανάμεσα στις εκατοντάδες (εάν όχι χιλιάδες) διαθέσιμες χρήσεις του. Παρατηρούμε, δηλαδή, εφαρμογές υψηλής συνδεσιμότητας, οι οποίες παρά την ευχρηστία τους μπορούν να θέσουν σε κίνδυνο την ασφάλεια του υπολογιστή μας. Μέχρι πρόσφατα, η αποτροπή κάποιας επίθεσης από hacker προέβλεπε το κλείσιμο όλων των κενών ασφαλείας από τους developers, πράγμα που για να μην τα πολυλογούμε ήταν πρακτικά αδύνατο! Η πιο γνωστή αλλά και αποτελεσματική λύση δόθηκε όταν τελικά οι προγραμματιστές συνειδητοποίησαν ότι το παραπάνω αποτελεί γεγονός. Έτσι προέκυψε το περίφημο Sandbox. Παρατηρώντας κανείς το πως αξιοποιεί τον χρόνο του καθημερινώς στον υπολογιστή του, εύκολα μπορεί να διαπιστώσει πως το web browsing κατέχει μείζονα θέση ανάμεσα στις εκατοντάδες (εάν όχι χιλιάδες) διαθέσιμες χρήσεις του. Παρατηρούμε, δηλαδή, εφαρμογές υψηλής συνδεσιμότητας, οι οποίες παρά την ευχρηστία τους μπορούν να θέσουν σε κίνδυνο την ασφάλεια του υπολογιστή μας. Μέχρι πρόσφατα, η αποτροπή κάποιας επίθεσης από hacker προέβλεπε το κλείσιμο όλων των κενών ασφαλείας από τους developers, πράγμα που για να μην τα πολυλογούμε ήταν πρακτικά αδύνατο! Η πιο γνωστή αλλά και αποτελεσματική λύση δόθηκε όταν τελικά οι προγραμματιστές συνειδητοποίησαν ότι το παραπάνω αποτελεί γεγονός. Έτσι προέκυψε το περίφημο Sandbox.

Φυσικά δεν μιλάμε για άμμο μέσα σε ένα κουτί, αλλά για software Sandboxes, η χρησιμότητα των οποίων είναι να περιορίσουν την εξάπλωση μιας επίθεσης. Με βάση, λοιπόν, την παραδοχή πως ο κώδικάς τους πάντα θα έχει κάποιο κενό ασφαλείας που θα κάνει την εφαρμογή ευάλωτη, οι developers αποφάσισαν να χωρίσουν τις εφαρμογές τους σε διάφορα τμήματα, με έναν και μόνο στόχο: Ότι συμβαίνει στο Sandbox, μένει στο Sandbox!


Sandbox: Should I use it or not?



Για να σας εξηγήσουμε την λειτουργία των 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 αλλά και το σύστημα αυτό καθαυτό.


Sandbox: Should I use it or not?



Το παραπάνω, εκτός από τον Chrome, υφίσταται και σε έναν μειωμένο βαθμό στον firefox, ο οποίος είναι διαχωρισμένος από third-party pluggins, όπως το Flash. Έτσι, ενώ ο browser είναι συνδυασμένος με τα tabs, και τα δύο είναι διαχωρισμένα από τα pluggins. Η Mozila Foundation, έχει δηλαδή "μεγαλύτερη εμπιστοσύνη" από την Google στον κώδικά της, ρίχνοντας το φταίξιμο ενός κρασαρίσματος στα pluggins. Έτσι, εάν κάποιο από αυτά σταματήσει να λειτουργεί, τότε o browser και τα tabs δεν επηρεάζονται.


Sandbox: Should I use it or not?



Σκεπτόμενοι λίγο πρωτοποριακά, μπορούμε να πούμε πως ενώ είναι καλή η στρατηγική του sandboxing, υπάρχουν πολλές άλλες εφαρμογές που δεν χρησιμοποιούν αυτήν την τεχνική. Έτσι, μπορούμε να χρησιμοποιήσουμε ένα virtual box, μέσα στο οποίο μπορούν να τρέχουν οι εφαρμογές, με τις ενέργειές τους να είναι περιορισμένες μόνο σε αυτό το κουτί, αφήνοντας ανεπηρέαστο το σύστημά μας. Σε αυτά τα virtual sandboxes μπορούν να τρέχουν οι browsers ή οποιαδήποτε άλλη εφαρμογή επιθυμεί ο καθένας! Χαρακτηριστικό παράδειγμα τέτοιας εφαρμογής είναι το Sandboxie, ενώ φυσικά υπάρχουν και άλλες free και μη υλοποιήσεις.

Ολοκληρώνοντας το σύντομο αλλά περιεκτικό αυτό άρθρο, μπορούμε να πούμε πως τα Sandboxes σίγουρα συμβάλουν στην απρόσκοπτη λειτουργία του συστήματός και των εφαρμογών μας. Παραταύτα, αυτό δεν σημαίνει πως οι developers θα πρέπει να μην συνεχίσουν να αφοσιώνονται στην κάλυψη κενών ασφαλείας των εφαρμογών τους. Ακόμη, είναι απαραίτητο να γνωρίζετε πως τα Sandboxes δεν είναι τέλεια. Ο Chrome συγκεκριμένα, κατάφερε να hackαριστεί στο Pwn2Own 2012 της Google με την χρήση εξαιρετικά δύσκολων hacks. Ανεξάρτητα, όμως, από τα παραπάνω, είναι καλό να υπάρχει ένα backup solution στην περίπτωση that something goes terribly wrong!