Terraform Security
Βασικές Πληροφορίες
Το HashiCorp Terraform είναι ένα εργαλείο υποδομής ως κώδικα που σας επιτρέπει να ορίσετε τόσο πόρους στο cloud όσο και on-prem σε αρχεία ρυθμίσεων που είναι ευανάγνωστα από ανθρώπους και μπορείτε να τα εκδόσετε, να τα επαναχρησιμοποιήσετε και να τα μοιραστείτε. Στη συνέχεια, μπορείτε να χρησιμοποιήσετε ένα συνεπή ρεύμα εργασίας για την παροχή και διαχείριση όλης της υποδομής σας καθ' όλη τη διάρκεια του κύκλου ζωής της. Το Terraform μπορεί να διαχειριστεί συστατικά χαμηλού επιπέδου όπως υπολογιστές, αποθήκευση και δίκτυα, καθώς και συστατικά υψηλού επιπέδου όπως καταχωρήσεις DNS και χαρακτηριστικά SaaS.
Π
Χρήση προσαρμοσμένου παροχέα
Ένας επιτιθέμενος θα μπορούσε να στείλει έναν προσαρμοσμένο παροχέα στο Μητρώο Terraform και στη συνέχεια να τον προσθέσει στον κώδικα Terraform σε ένα κλαδί λειτουργίας (παράδειγμα από εδώ):
Ο πάροχος κατεβάζεται στο init
και θα εκτελέσει το κακόβουλο κώδικα όταν εκτελεστεί το plan
.
Μπορείτε να βρείτε ένα παράδειγμα στο https://github.com/rung/terraform-provider-cmdexec
Χρησιμοποιώντας μια εξωτερική αναφορά
Και οι δύο επιλογές που αναφέρθηκαν είναι χρήσιμες αλλά όχι πολύ αόρατες (η δεύτερη είναι πιο αόρατη αλλά πιο περίπλοκη από την πρώτη). Μπορείτε να εκτελέσετε αυτήν την επίθεση ακόμα με έναν πιο αόρατο τρόπο, ακολουθώντας αυτές τις προτάσεις:
Αντί να προσθέσετε το αντίστροφο κέλυφος (rev shell) απευθείας στο αρχείο terraform, μπορείτε να φορτώσετε έναν εξωτερικό πόρο που περιέχει το αντίστροφο κέλυφος:
Μπορείτε να βρείτε τον κώδικα του αντίστροφου κελύφους στο https://github.com/carlospolop/terraform_external_module_rev_shell/tree/main/modules
Στο εξωτερικό πόρο, χρησιμοποιήστε το χαρακτηριστικό ref για να κρύψετε τον κώδικα αντίστροφου κελύφους του Terraform σε ένα κλαδί μέσα στο αποθετήριο, κάτι σαν:
git@github.com:carlospolop/terraform_external_module_rev_shell//modules?ref=b401d2b
Εφαρμογή Terraform
Η εντολή εφαρμογής του Terraform θα εκτελεστεί για να εφαρμοστούν όλες οι αλλαγές, μπορείτε επίσης να το καταχραστείτε για να λάβετε RCE εισάγοντας ένα κακόβουλο αρχείο Terraform με local-exec.
Απλά χρειάζεται να βεβαιωθείτε ότι κάποιο φορτίο όπως τα παρακάτω τελειώνει στο αρχείο main.tf
:
Ακολουθήστε τις προτάσεις από την προηγούμενη τεχνική για να εκτελέσετε αυτήν την επίθεση με έναν πιο αθόρυβο τρόπο χρησιμοποιώντας εξωτερικές αναφορές.
Ροές Απορρήτων
Μπορείτε να έχετε κρυφές τιμές που χρησιμοποιούνται από το terraform να διαρρεύσουν εκτελώντας το terraform apply
προσθέτοντας στο αρχείο terraform κάτι σαν:
Κατάχρηση Αρχείων Κατάστασης του Terraform
Στην περίπτωση που έχετε πρόσβαση εγγραφής σε αρχεία κατάστασης του terraform αλλά δεν μπορείτε να αλλάξετε τον κώδικα του terraform, αυτή η έρευνα παρέχει μερικές ενδιαφέρουσες επιλογές για να εκμεταλλευτείτε το αρχείο:
Διαγραφή Πόρων
Υπάρχουν 2 τρόποι για την καταστροφή πόρων:
Εισαγωγή ενός πόρου με ένα τυχαίο όνομα στο αρχείο κατάστασης που δείχνει στον πραγματικό πόρο προς καταστροφή
Επειδή το terraform θα δει ότι ο πόρος δεν πρέπει να υπάρχει, θα τον καταστρέψει (ακολουθώντας το πραγματικό αναγνωριστικό του πόρου). Παράδειγμα από την προηγούμενη σελίδα:
Τροποποιήστε τον πόρο που θα διαγραφεί με έναν τρόπο ώστε να μην είναι δυνατή η ενημέρωσή του (έτσι θα διαγραφεί και θα αναδημιουργηθεί)
Για ένα παράδειγμα με ένα EC2 instance, η τροποποίηση του τύπου της εικονικής μηχανής είναι αρκετή για να κάνει το terraform να το διαγράψει και να το αναδημιουργήσει.
RCE
Είναι επίσης δυνατόν να δημιουργήσετε έναν προσαρμοσμένο πάροχο και απλά να αντικαταστήσετε έναν από τους πάροχους στο αρχείο κατάστασης του terraform με τον κακόβουλο ή να προσθέσετε έναν κενό πόρο με τον κακόβουλο πάροχο. Παράδειγμα από την αρχική έρευνα:
Εργαλεία Ελέγχου
tfsec: Το tfsec χρησιμοποιεί στατική ανάλυση του κώδικα terraform σας για τον εντοπισμό πιθανών λαθών ρύθμισης.
terascan: Το Terrascan είναι ένας αναλυτής στατικού κώδικα για το Infrastructure as Code.
Αναφορές
Last updated