Περίληψη : | In today’s tech setting, the cloud has revolutionized the way we develop, build, deploy and monitor our applications. Businesses "lift and shift" their infrastructure to the cloud where their applications are hosted. Because of that, the process of going from code to executable has somewhat changed. This transition has a name, and that is Development and Operations (DevOps). In DevOps, we have automated Continuous Integration/Continuous Delivery (CI/CD) pipelines that build, test and deploy our code with minimal manual effort required.Though DevOps may be the most substantial part for some people, the attack surface of the CI/CD pipelines is large enough. So, nowadays, the trend is about Development, Security, and Operations (DevSecOps), which includes the security aspect of DevOps as well. There is a plethora of attack vectors in the Software Supply Chain, such as introducing malicious software in a dependency, compromising the source code repository, and many more. So one question that has raised, is, how can I know if the software I am currently running, is indeed the one that was intended to be tested, built or distributed (just to name a few steps in the chain)?Artifact Attestations are a way of providing some confidence to the consumer of an artifact, about some claims made for it. For example, to which commit does this artifact correspond to, which build system built it, or, was the code peer reviewed? This is done by providing an extra piece of information to the consumer, an attestation. There are many types of attestation, such as provenance attestation which provides proof about the build process of an artifact, the SPDX attestation (or SBOM attestation) and many more.In this thesis we explore how this is technically feasible through a CI/CD platform, GitHub Actions, what are the security benefits, and limitations of using artifact attestations. We will also dive into other technologies and standards involved in the process such as Sigstore, Supply-chain Levels for Software Artifacts (SLSA), in-toto, and others. Στο σημερινό τεχνολογικό περιβάλλον, το υπολογιστικό νέφος (cloud) έχει φέρει επανάσταση στον τρόπο που αναπτύσσουμε, κατασκευάζουμε, διανέμουμε και παρακολουθούμε τις εφαρμογές μας. Οι επιχειρήσεις μεταφέρουν ("lift and shift") τις υποδομές τους στο cloud, όπου φιλοξενούνται οι εφαρμογές τους. Εξαιτίας αυτού, η διαδικασία διανομής λογισμικού ξεκινώντας από τον κώδικα μέχρι το τελικό εκτελέσιμο έχει αλλάξει σημαντικά. Αυτή η μετάβαση έχει όνομα, και αυτό είναι Ανάπτυξη και Λειτουργία (Development and Operations - DevOps). Στο DevOps, έχουμε αυτοματοποιημένες διαδικασίες (pipelines) Συνεχούς Ενοποίησης/Συνεχούς Διανομής (Continuous Integration/Continuous Delivery - CI/CD) που κατασκευάζουν, δοκιμάζουν και διανέμουν τον κώδικά μας αυτοματοποιημένα, με ελάχιστη απαίτηση για χειροκίνητη παρέμβαση.Αν και για τους περισσότερους το DevOps μπορεί να είναι το πιο ουσιαστικό κομμάτι, η επιφάνεια επίθεσης (attack surface) των CI/CD pipelines είναι αρκετά μεγάλη.΄Ετσι πλέον, η τάση αφορά την Ανάπτυξη, Ασφάλεια και Λειτουργία (Development, Security, and Operations - DevSecOps), το οποίο ενσωματώνει και την ασφάλεια στο DevOps. Υπάρχει πληθώρα επιθέσεων στην Αλυσίδα Λογισμικού (Software SupplyChain), όπως η εισαγωγή κακόβουλου λογισμικού σε μια εξάρτηση (dependency), η παραβίαση του αποθετηρίου πηγαίου κώδικα (source code repository) και πολλά άλλα. ΄Ετσι, ένα ερώτημα που έχει προκύψει είναι το εξής: πώς μπορώ να γνωρίζω ότι το λογισμικό που εκτελώ αυτή τη στιγμή είναι πράγματι αυτό που προοριζόταν να αναπτυχθεί, δοκιμαστεί, να κατασκευαστεί ή να διανεμηθεί (απλώς για να αναφέρουμε μερικά βήματα της διαδικασίας);Οι Βεβαιώσεις Τεχνουργημάτων (Artifact Attestations) αποτελούν έναν τρόπο παροχής εμπιστοσύνης στον καταναλωτή ενός artifact σχετικά με ορισμένους ισχυρισμούς που γίνονται γι’ αυτό. Για παράδειγμα, σε ποιο commit αντιστοιχεί το artifact, ποιο σύστημα κατασκευής (build system) το δημιούργησε, ή αν ο κώδικας υποβλήθηκε σε έλεγχο από τρίτους (peer review). Αυτό επιτυγχάνεται μέσω της παροχής μιαςεπιπλέον πληροφορίας στον καταναλωτή, μιας βεβαίωσης (attestation). Υπάρχουν πολλοί τύποι βεβαιώσεων, όπως η βεβαίωση προέλευσης (provenance attestation), που παρέχει αποδείξεις για τη διαδικασία κατασκευής ενός τεχνουργήματος, η βεβαίωση SPDX (ή SBOM attestation) και πολλές άλλες.Στην παρούσα διπλωματική εργασία, διερευνούμε πώς αυτό είναι τεχνικά εφικτό μέσω μιας CI/CD πλατφόρμας, την GitHub Actions, ποια είναι τα οφέλη ασφαλείας, καθώς και οι περιορισμοί της χρήσης των artifact attestations. Επιπλέον, θα εξετάσουμε και άλλες τεχνολογίες και πρότυπα που εμπλέκονται στη διαδικασία, όπως το Sigstore, τα Supply-chain Levels for Software Artifacts (SLSA), το in-toto και άλλα.
|
---|