	{"id":64948,"date":"2021-10-29T08:24:28","date_gmt":"2021-10-29T07:24:28","guid":{"rendered":"https:\/\/www.artefact.com\/?post_type=news&#038;p=64948"},"modified":"2024-09-20T17:45:46","modified_gmt":"2024-09-20T16:45:46","slug":"how-to-secure-your-python-software-supply-chain","status":"publish","type":"blog","link":"https:\/\/www.artefact.com\/de\/blog\/how-to-secure-your-python-software-supply-chain\/","title":{"rendered":"Wie Sie Ihre Python-Software-Lieferkette sichern k\u00f6nnen"},"content":{"rendered":"<p><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling article-author\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-background-color:#ffffff;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_2 1_2 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:50%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:50%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-1 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-margin-bottom-small:8px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:50;line-height:1.2;\">Autor<\/h2><\/div><img decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27150%27%20height%3D%270%27%20viewBox%3D%270%200%20150%200%27%3E%3Crect%20width%3D%27150%27%20height%3D%270%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/benoit-goujon.jpeg\" alt=\"Image\" class=\"lazyload artefact-elegant-image align-left article-author-image\" style=\"width: 150px; border-radius: 54% 46% 77% 23% \/ 74% 40% 60% 26%; overflow: hidden;\" width=\"150\" height=\"auto\" \/><div class=\"fusion-title title fusion-title-2 fusion-sep-none fusion-title-text fusion-title-size-three article-author-name-title\" style=\"--awb-margin-bottom-small:8px;\"><h3 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:20;line-height:1.2;\">Beno\u00eet Goujon<\/h3><\/div><div class=\"fusion-text fusion-text-1 article-author-description\"><p>Data Ingenieur bei Artefact<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-2 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-margin-top:40px;--awb-margin-bottom:40px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-center fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-1 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-flex-align-self-center fusion-column-inner-bg-wrapper\" style=\"--awb-padding-top:20px;--awb-padding-right:20px;--awb-padding-bottom:20px;--awb-padding-left:20px;--awb-overflow:hidden;--awb-inner-bg-size:cover;--awb-border-color:rgba(10,17,40,0.1);--awb-border-top:1px;--awb-border-right:1px;--awb-border-bottom:1px;--awb-border-left:1px;--awb-border-style:solid;--awb-border-radius:4px 4px 4px 4px;--awb-inner-bg-border-radius:4px 4px 4px 4px;--awb-inner-bg-overflow:hidden;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><span class=\"fusion-column-inner-bg hover-type-none\"><a class=\"fusion-column-anchor\" href=\"https:\/\/medium.com\/artefact-engineering-and-data-science\/how-to-secure-your-python-software-supply-chain-81490f6e4ff9\" rel=\"noopener noreferrer\" target=\"_blank\"><span class=\"fusion-column-inner-bg-image\"><\/span><\/a><\/span><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-row fusion-flex-align-items-center\"><div class=\"fusion-text fusion-text-2\"><p><u>Lesen Sie unseren Artikel \u00fcber<\/u><\/p>\n<\/div><div class=\"fusion-image-element\" style=\"--awb-margin-right:20px;--awb-margin-left:20px;--awb-max-width:150px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-1 hover-type-none\"><img decoding=\"async\" width=\"4000\" height=\"992\" title=\"Mittel Blog\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog.png\" alt class=\"lazyload img-responsive wp-image-60582\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%274000%27%20height%3D%27992%27%20viewBox%3D%270%200%204000%20992%27%3E%3Crect%20width%3D%274000%27%20height%3D%27992%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-200x50.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-400x99.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-600x149.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-800x198.png 800w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog-1200x298.png 1200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/04\/Medium-Blog.png 4000w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 4000px\" \/><\/span><\/div><div class=\"fusion-text fusion-text-3\"><p>.<\/p>\n<\/div><\/div><\/div><\/div><\/div><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-3 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-2 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-text fusion-text-4 description\"><p>Ein Leitfaden, der Ihnen hilft, sich der Risiken bewusst zu sein, denen Sie ausgesetzt sind, und einige Tipps, wie Sie sich vor diesen Risiken sch\u00fctzen k\u00f6nnen.<br \/>\n Vor kurzem wurde eine neue Art von Cyber-Bedrohung bekannt: Angriffe auf die Software-Lieferkette. Sie sind zwar selten, haben aber massive Auswirkungen und der Schutz vor ihnen ist ein wachsendes Anliegen. Aufgrund der Vielzahl von Anwendungsf\u00e4llen gibt es keine einheitliche Regel, die Sie auf Ihre Python-Projekte anwenden k\u00f6nnen, um sicher zu sein, und wie immer h\u00e4ngt es von Ihrem Kontext ab.<\/p>\n<\/div><\/div><\/div><\/div><\/div><article class=\"fusion-fullwidth fullwidth-box fusion-builder-row-4 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-3 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><div class=\"fusion-title title fusion-title-3 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-margin-bottom-small:8px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:50;line-height:1.2;\">Einf\u00fchrung<\/h2><\/div><div class=\"fusion-text fusion-text-5\"><p>In traditionellen Industrien ist eine Lieferkette alles, was es einem Unternehmen erm\u00f6glicht, ein Produkt an den Kunden zu liefern. Wenn Sie zum Beispiel ein Croissant in der B\u00e4ckerei kaufen, sind alle Zutaten, die Verpackung und der Transport Teil der Lieferkette.<\/p>\n<\/div><div class=\"fusion-text fusion-text-6\"><p>Im Softwarebereich ist eine Lieferkette alles, was sich auf Ihre Software auswirkt, bevor sie in Produktion geht. Sie umfasst alles von der Entwicklungsphase bis zum Ver\u00f6ffentlichungsprozess, einschlie\u00dflich des von Ihnen geschriebenen Codes, Ihrer Abh\u00e4ngigkeiten, Ihrer Build-Umgebung, Ihrer IDE, Ihrer Image-Registry - jede Komponente, mit der Ihre Software zu irgendeinem Zeitpunkt interagiert!<\/p>\n<\/div><div class=\"fusion-image-element\" style=\"--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-2 hover-type-none\"><img decoding=\"async\" width=\"700\" height=\"272\" title=\"Artikel-benoit1\" src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/article-benoit1.png\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/article-benoit1.png\" alt class=\"lazyload img-responsive wp-image-64951\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27700%27%20height%3D%27272%27%20viewBox%3D%270%200%20700%20272%27%3E%3Crect%20width%3D%27700%27%20height%3D%27272%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-srcset=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/article-benoit1-200x78.png 200w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/article-benoit1-400x155.png 400w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/article-benoit1-600x233.png 600w, https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/article-benoit1.png 700w\" data-sizes=\"auto\" data-orig-sizes=\"(max-width: 640px) 100vw, 700px\" \/><\/span><\/div><div class=\"fusion-text fusion-text-7\"><p>Der Begriff \u201cLieferkette\u201d ist in letzter Zeit aufgrund von Cyberangriffen mit weitreichenden Auswirkungen in den Vordergrund ger\u00fcckt. Unter allen Angriffen ist Solarwinds vielleicht der bekannteste. In der Tat waren die US-Regierung, gro\u00dfe Technologieunternehmen wie Microsoft und Intel, aber auch Krankenh\u00e4user, Energieversorger und Finanzinstitute davon betroffen.<\/p>\n<p>Ironischerweise ist die Grundursache die Infektion von Solarwinds Orion, einem Netzwerksicherheitsmonitor. Das Build-System war kompromittiert worden und alle neuen Versionen zwischen M\u00e4rz und Juni 2020 waren mit Malware infiziert. Das Ergebnis ist, dass alle Kunden, die ihre Software in diesem Zeitraum aktualisiert haben, infiziert wurden.<\/p>\n<\/div><div class=\"fusion-text fusion-text-8\"><p>Auch wenn der Solarwinds-Angriff von den Medien weitgehend aufgegriffen wurde, gibt es Dutzende \u00e4hnlicher Angriffe, von denen wir noch nie geh\u00f6rt haben. Gl\u00fccklicherweise f\u00fchrt die Cloud Native Computing Foundation eine \u00dcbersicht \u00fcber alle diese Angriffe in einem\u00a0<a class=\"bv ig\" href=\"https:\/\/github.com\/cncf\/tag-security\/tree\/main\/supply-chain-security\/compromises\" target=\"_blank\" rel=\"noopener ugc nofollow\">\u00f6ffentliches Depot<\/a>. Es mag Sie \u00fcberraschen, wie sehr sich diese Angriffe in den letzten Jahren beschleunigt haben.<\/p>\n<p>Es ist nicht m\u00f6glich, alles, was mit der Sicherheit der Lieferkette zu tun hat, in einem einzigen Blog-Beitrag zu behandeln. Daher werden wir uns in diesem Artikel vor allem auf Projekte konzentrieren, die Python als Hauptsprache verwenden.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-4 fusion-sep-none fusion-title-text fusion-title-size-three\" style=\"--awb-margin-bottom-small:8px;\"><h3 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:20;line-height:1.2;\">Wie Sie Ihre Abh\u00e4ngigkeiten in Python verwalten<\/h3><\/div><div class=\"fusion-text fusion-text-9\"><p>Obwohl Python eine \u201cBatterien enthalten\u201d-Philosophie verfolgt, ben\u00f6tigen Sie oft externe Bibliotheken, die Sie aus dem PyPI, dem offiziellen Paketindex, herunterladen k\u00f6nnen, und genau an diesem Punkt m\u00fcssen Sie sehr vorsichtig sein.<\/p>\n<p>Das Python-\u00d6kosystem wurde bereits ins Visier genommen, insbesondere durch den Einsatz von zwei Techniken:<\/p>\n<\/div><ul style=\"--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-1 fusion-checklist-default type-icons\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">Tippfehler-Squatting<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">Verwirrung um Abh\u00e4ngigkeiten<\/div><\/li><\/ul><div class=\"fusion-text fusion-text-10\"><p>Die erste Technik betrifft einen Befehl, den jeder Python-Entwickler im Laufe seiner Karriere mindestens einmal ausgef\u00fchrt hat:<\/p>\n<pre class=\"hp hq hr hs ht ku gv be\"><span id=\"3357\" class=\"ej je jf dm kv b kw kx ky s kz\" data-selectable-paragraph=\"\">Pip-Installation <\/span><\/pre>\n<p>Hacker ver\u00f6ffentlichen Pakete mit fast demselben Namen wie bestehende Pakete in der Hoffnung, dass Sie einen Tippfehler machen und ihr Paket anstelle des offiziellen Pakets installieren. Zum Beispiel ein Paket namens\u00a0<code class=\"kg la lb lc kv b\">python3-dateutil<\/code>\u00a0anstelle des offiziellen\u00a0<code class=\"kg la lb lc kv b\">dateutil<\/code>\u00a0wurde\u00a0<a class=\"bv ig\" href=\"https:\/\/snyk.io\/blog\/malicious-packages-found-to-be-typo-squatting-in-pypi\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">k\u00fcrzlich entdeckt<\/a>.<\/p>\n<p>Die Python-Gemeinschaft ist\u00a0<a class=\"bv ig\" href=\"https:\/\/lwn.net\/Articles\/834078\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">hart arbeitend<\/a>\u00a0um das Risiko zu mindern, aber das Risiko ist immer noch hoch.<\/p>\n<p>Die zweite Technik, die Abh\u00e4ngigkeitsverwirrung, ist anspruchsvoller als die erste und hat damit zu tun, wie\u00a0<code class=\"kg la lb lc kv b\">pip<\/code>\u00a0arbeitet unter der Haube.<\/p>\n<p>Mit diesem Befehl setzen Sie sich dem Risiko aus:<\/p>\n<pre class=\"hp hq hr hs ht ku gv be\"><span id=\"a769\" class=\"ej je jf dm kv b kw kx ky s kz\" data-selectable-paragraph=\"\">pip install --extra-index-url <\/span><\/pre>\n<p>Wenn Sie diesen Befehl eingeben, geschieht Folgendes:<\/p>\n<\/div><img decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27400%27%20height%3D%270%27%20viewBox%3D%270%200%20400%200%27%3E%3Crect%20width%3D%27400%27%20height%3D%270%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/article-benoit2.png\" alt=\"Image\" class=\"lazyload artefact-elegant-image align-left hover-enable\" style=\"width: 400px; border-radius: 59% 41% 41% 59% \/ 29% 48% 52% 71%; overflow: hidden;\" width=\"400\" height=\"auto\" \/><div class=\"fusion-text fusion-text-11\"><p>Lassen Sie uns ein Beispiel nehmen:<\/p>\n<\/div><img decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27400%27%20height%3D%270%27%20viewBox%3D%270%200%20400%200%27%3E%3Crect%20width%3D%27400%27%20height%3D%270%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/Article-benoit3.png\" alt=\"Image\" class=\"lazyload artefact-elegant-image align-left hover-enable\" style=\"width: 400px; border-radius: 59% 41% 41% 59% \/ 29% 48% 52% 71%; overflow: hidden;\" width=\"400\" height=\"auto\" \/><div class=\"fusion-text fusion-text-12\"><p>In diesem Beispiel wird das Paket des b\u00f6swilligen Hackers auf dem Rechner installiert. Die h\u00f6here Versionsnummer befindet sich n\u00e4mlich auf dem \u00f6ffentlichen Paketindex.<\/p>\n<p>Sie haben vielleicht verstanden, was bei diesem Prozess schief gehen kann. Jemand mit schlechten Absichten kann Pakete in einem \u00f6ffentlichen Repository ver\u00f6ffentlichen, die die gleichen Namen haben wie die in internen Paketindizes gehosteten und sie mit einer l\u00e4cherlich hohen Versionsnummer versehen. Au\u00dferdem ist es gar nicht so schwer, relevante Paketnamen zu finden, denn\u00a0<a class=\"bv ig\" href=\"https:\/\/\/de\/&\/#47;&#x6d;&#x65;&#x64;i&#117;&#109;&#x2e;&#x63;o&#109;&#47;&#x40;&#x61;le&#120;&#x2e;&#x62;&#x69;r&#115;&#x61;&#x6e;\/dependency-confusion-4a5d60fec610\" rel=\"noopener\" target=\"_blank\">von diesem Sicherheitsforscher demonstriert<\/a>.<\/p>\n<p>Dieser Befehl k\u00f6nnte als \u201cinsecure by design\u201d bezeichnet werden. Dieser Angriff nutzt eine Funktion des Python-Paketmanagers aus und nur wenige Entwickler sind sich dieses Verhaltens bewusst.<\/p>\n<\/div><img decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27400%27%20height%3D%270%27%20viewBox%3D%270%200%20400%200%27%3E%3Crect%20width%3D%27400%27%20height%3D%270%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/article-benoit4.png\" alt=\"Image\" class=\"lazyload artefact-elegant-image align-left hover-enable\" style=\"width: 400px; border-radius: 59% 41% 41% 59% \/ 29% 48% 52% 71%; overflow: hidden;\" width=\"400\" height=\"auto\" \/><div class=\"fusion-title title fusion-title-5 fusion-sep-none fusion-title-text fusion-title-size-three\" style=\"--awb-margin-bottom-small:8px;\"><h3 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:20;line-height:1.2;\">Wie Sie sich vor diesen Angriffen auf die Lieferkette sch\u00fctzen k\u00f6nnen<\/h3><\/div><div class=\"fusion-text fusion-text-13\"><p>Um sich gegen Angriffe durch Tippfehler zu sch\u00fctzen, k\u00f6nnen Sie eine\u00a0<strong class=\"ij lj\">Lock-Datei<\/strong>. A\u00a0<a class=\"bv ig\" href=\"https:\/\/www.youtube.com\/watch?v=VWWgkF-0cDQ\" target=\"_blank\" rel=\"noopener ugc nofollow\">gute Sperrdatei<\/a>\u00a0hat die folgenden Eigenschaften:<\/p>\n<\/div><ul style=\"--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-2 fusion-checklist-default type-icons\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p><strong>Version Pins:<\/strong>Sie machen Ihre Builds vorhersehbar und deterministisch.<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p><strong>Hashes:<\/strong>\u00a0Sie sind ein Weg, um die Integrit\u00e4t des Pakets zu \u00fcberpr\u00fcfen.<\/p>\n<\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p><strong>Vollst\u00e4ndiger Abh\u00e4ngigkeitsgraph:<\/strong> k\u00f6nnen Sie damit auch die Abh\u00e4ngigkeiten Ihrer Abh\u00e4ngigkeiten kontrollieren.<\/p>\n<\/div><\/li><\/ul><div class=\"fusion-text fusion-text-14\"><p>Die gute Nachricht ist, dass es ein Paket gibt, dessen Zweck es ist, eine Sperrdatei f\u00fcr Sie zu erstellen:\u00a0<code class=\"kg la lb lc kv b\">pip-tools<\/code>. Mit nur wenigen Befehlen k\u00f6nnen Sie eine Sperrdatei mit allen Attributen erstellen, die wir zuvor beschrieben haben.<\/p>\n<\/div><div class=\"fusion-text fusion-text-15\"><pre class=\"hp hq hr hs ht ku gv be\"><span id=\"0af8\" class=\"ej je jf dm kv b kw kx ky s kz\" data-selectable-paragraph=\"\">$ python3 -m venv my-env # Erstellen einer neuen virtuellen Umgebung\n<\/span><span id=\"6e92\" class=\"ej je jf dm kv b kw lk ll lm ln lo ky s kz\" data-selectable-paragraph=\"\">$ source my-env\/bin\/activate # aktivieren Sie es\n<\/span><span id=\"eaf3\" class=\"ej je jf dm kv b kw lk ll lm ln lo ky s kz\" data-selectable-paragraph=\"\">$ pip install pip-tools==6.3.0 # installieren Sie das Paket, mit dem Sie\nIhre Abh\u00e4ngigkeiten richtig verwalten k\u00f6nnen\n<\/span><span id=\"497e\" class=\"ej je jf dm kv b kw lk ll lm ln lo ky s kz\" data-selectable-paragraph=\"\">$ echo \u201csacremoses==0.0.46\u201d &gt;&gt; requirements.in # F\u00fcgen Sie das Paket Ihrer\nIhrer Wahl in requirements.in\n<\/span><span id=\"fb7a\" class=\"ej je jf dm kv b kw lk ll lm ln lo ky s kz\" data-selectable-paragraph=\"\">$ pip-compile --generate-hashes # kompiliert requirements.txt mit\nHashes basierend auf dem, was Sie in requirements.in eingegeben haben<\/span><\/pre>\n<\/div><div class=\"fusion-text fusion-text-16\"><p>Ihre Datei requirements.txt sollte wie folgt aussehen:<\/p>\n<\/div><img decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27400%27%20height%3D%270%27%20viewBox%3D%270%200%20400%200%27%3E%3Crect%20width%3D%27400%27%20height%3D%270%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/article-benoit5.png\" alt=\"Image\" class=\"lazyload artefact-elegant-image align-left hover-enable\" style=\"width: 400px; border-radius: 59% 41% 41% 59% \/ 29% 48% 52% 71%; overflow: hidden;\" width=\"400\" height=\"auto\" \/><div class=\"fusion-text fusion-text-17\"><p>Jetzt, da Sie diese Datei haben, die alle Ihre Abh\u00e4ngigkeiten mit den zugeh\u00f6rigen Versionen und Hashes enth\u00e4lt, k\u00f6nnen Sie bei der n\u00e4chsten Bereitstellung den folgenden Befehl ausf\u00fchren:<\/p>\n<pre class=\"hp hq hr hs ht ku gv be\"><span id=\"7aa9\" class=\"ej je jf dm kv b kw kx ky s kz\" data-selectable-paragraph=\"\">pip install --require-hashes -r requirements.txt<\/span><\/pre>\n<p>So sind Sie sicher, dass die Pakete, die Sie in der Produktion verwenden, nicht ver\u00e4ndert wurden. Angenommen, Sie haben beim Schreiben Ihrer\u00a0<code class=\"kg la lb lc kv b\">Anforderungen.in<\/code>\u00a0Datei \ud83d\udc40, k\u00f6nnen Sie auch sicher sein, dass Sie das Paket herunterladen, das Sie wirklich wollen, da alles automatisiert ist. Kein Risiko eines Tippfehlers!<\/p>\n<p>Diese bew\u00e4hrte Methode ist gut, um sich gegen Angriffe durch Tippfehler zu sch\u00fctzen, aber was ist mit der Verwirrung von Abh\u00e4ngigkeiten?<\/p>\n<p>Wenn Sie sich die\u00a0<code class=\"kg la lb lc kv b\">pip<\/code>\u00a0Dokumentation sehen Sie, dass es zwei Optionen gibt, mit denen Sie Pakete aus einem internen Repository herunterladen k\u00f6nnen:<\/p>\n<\/div><ul style=\"--awb-line-height:27.2px;--awb-icon-width:27.2px;--awb-icon-height:27.2px;--awb-icon-margin:11.2px;--awb-content-margin:38.4px;\" class=\"fusion-checklist fusion-checklist-3 fusion-checklist-default type-icons\"><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\"><code class=\"kg la lb lc kv b\">--extra-index-url<\/code><\/div><\/li><li class=\"fusion-li-item\" style=\"\"><span class=\"icon-wrapper circle-no\"><i class=\"fusion-li-icon awb-icon-check\" aria-hidden=\"true\"><\/i><\/span><div class=\"fusion-li-item-content\">\n<p><code class=\"kg la lb lc kv b\">--index-url<\/code><\/p>\n<\/div><\/li><\/ul><div class=\"fusion-text fusion-text-18\"><p>In der Dokumentation steht:<\/p>\n<\/div><img decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27400%27%20height%3D%270%27%20viewBox%3D%270%200%20400%200%27%3E%3Crect%20width%3D%27400%27%20height%3D%270%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/10\/article-benoit6.png\" alt=\"Image\" class=\"lazyload artefact-elegant-image align-left hover-enable\" style=\"width: 400px; border-radius: 59% 41% 41% 59% \/ 29% 48% 52% 71%; overflow: hidden;\" width=\"400\" height=\"auto\" \/><div class=\"fusion-text fusion-text-19\"><p>Wie Sie sehen k\u00f6nnen, gibt es einen kleinen Unterschied zwischen den beiden und er ist auf den ersten Blick nicht offensichtlich. Der Unterschied besteht darin, dass Sie bei der Angabe der\u00a0<code class=\"kg la lb lc kv b\">--index-url<\/code>\u00a0Option,\u00a0<code class=\"kg la lb lc kv b\">pip<\/code>\u00a0w\u00fcrde nur Pakete aus dem Repository mit der von Ihnen angegebenen URL beziehen und nicht aus \u00f6ffentlichen Repositorys. Wenn Sie also das oben beschriebene Verhalten vermeiden m\u00f6chten, verwenden Sie\u00a0<code class=\"kg la lb lc kv b\">--index-url<\/code>\u00a0eher als\u00a0<code class=\"kg la lb lc kv b\">--extra-index-url<\/code>\u00a0und Sie werden sicher sein!<\/p>\n<p>Um schlie\u00dflich die neuesten Sicherheitsl\u00fccken zu verfolgen, die in Ihren Abh\u00e4ngigkeiten entdeckt werden, k\u00f6nnen Sie regelm\u00e4\u00dfig die\u00a0<a class=\"bv ig\" href=\"https:\/\/github.com\/advisories?query=ecosystem%3Apip\" target=\"_blank\" rel=\"noopener ugc nofollow\">GitHub-Beratung database<\/a>\u00a0oder besser, nutzen Sie Tools wie\u00a0<a class=\"bv ig\" href=\"https:\/\/dependabot.com\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">dependabot<\/a>\u00a0das automatisch eine Pull-Anfrage an Ihr Repository sendet, um eine Abh\u00e4ngigkeit zu aktualisieren, in der k\u00fcrzlich eine kritische Sicherheitsl\u00fccke entdeckt wurde.<\/p>\n<\/div><div class=\"fusion-title title fusion-title-6 fusion-sep-none fusion-title-text fusion-title-size-two\" style=\"--awb-margin-bottom-small:8px;\"><h2 class=\"fusion-title-heading title-heading-left fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:50;line-height:1.2;\">Zusammenfassung<\/h2><\/div><div class=\"fusion-text fusion-text-20\"><p>In diesem Artikel haben wir das Konzept der Lieferkette f\u00fcr die Softwarewelt vorgestellt. Wir haben speziell untersucht, wie dieses Konzept auf das Python-\u00d6kosystem anwendbar ist. Typo-Squatting und Abh\u00e4ngigkeitsverwirrung wurden erkl\u00e4rt und L\u00f6sungen vorgeschlagen, um das Risiko einer Gef\u00e4hrdung zu mindern.<\/p>\n<p>Diese kurze Einf\u00fchrung in die Sicherheit der Lieferkette hat nur die Spitze des Eisbergs abgedeckt, wir hatten keine Gelegenheit, dar\u00fcber zu sprechen, wie\u00a0<a class=\"bv ig\" href=\"https:\/\/about.codecov.io\/security-update\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">Systeme aufbauen<\/a>\u00a0oder sogar Ihr\u00a0<a class=\"bv ig\" href=\"https:\/\/snyk.io\/blog\/vulnerable-visual-studio-code-extensions-marketplace\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">IDEs<\/a> kompromittiert werden kann, aber das ist ein Thema f\u00fcr einen anderen Artikel!<\/p>\n<p>Danke, dass Sie so weit gelesen haben! Ich w\u00fcrde mich freuen, Ihr Feedback zu h\u00f6ren. Wenn Ihnen die Lekt\u00fcre gefallen hat, schauen Sie doch mal bei unserem\u00a0<a class=\"bv ig\" href=\"https:\/\/www.artefact.com\/de\/careers\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">Offene Stellen<\/a>\u00a0bei Artefact \ud83d\ude42<\/p>\n<\/div><\/div><\/div><\/div><\/article><div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-5 fusion-flex-container nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-margin-top:40px;--awb-margin-bottom:40px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-center fusion-flex-justify-content-center fusion-flex-content-wrap\" style=\"max-width:calc( 1440px + 20px );margin-left: calc(-20px \/ 2 );margin-right: calc(-20px \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-4 fusion_builder_column_1_1 1_1 fusion-flex-column fusion-flex-align-self-center\" style=\"--awb-padding-top:40px;--awb-padding-right:40px;--awb-padding-bottom:40px;--awb-padding-left:40px;--awb-overflow:hidden;--awb-bg-position:left center;--awb-bg-size:cover;--awb-border-color:rgba(10,17,40,0.1);--awb-border-style:solid;--awb-border-radius:4px 4px 4px 4px;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:10px;--awb-margin-bottom-large:0px;--awb-spacing-left-large:10px;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:10px;--awb-spacing-left-medium:10px;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:10px;--awb-spacing-left-small:10px;\"><div class=\"fusion-column-wrapper lazyload fusion-column-has-shadow fusion-flex-justify-content-center fusion-content-layout-column fusion-column-has-bg-image\" data-bg-url=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/03\/background.jpg\" data-bg=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/03\/background.jpg\"><div class=\"fusion-image-element\" style=\"text-align:center;--awb-margin-right:20px;--awb-margin-left:20px;--awb-max-width:150px;--awb-caption-title-font-family:var(--h2_typography-font-family);--awb-caption-title-font-weight:var(--h2_typography-font-weight);--awb-caption-title-font-style:var(--h2_typography-font-style);--awb-caption-title-size:var(--h2_typography-font-size);--awb-caption-title-transform:var(--h2_typography-text-transform);--awb-caption-title-line-height:var(--h2_typography-line-height);--awb-caption-title-letter-spacing:var(--h2_typography-letter-spacing);\"><span class=\"fusion-imageframe imageframe-none imageframe-3 hover-type-none\"><img decoding=\"async\" width=\"72\" height=\"41\" title=\"mittel\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%2772%27%20height%3D%2741%27%20viewBox%3D%270%200%2072%2041%27%3E%3Crect%20width%3D%2772%27%20height%3D%2741%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.artefact.com\/\/wp-content\/uploads\/2021\/03\/medium.png\" alt class=\"lazyload img-responsive wp-image-60927\"\/><\/span><\/div><div class=\"fusion-title title fusion-title-7 fusion-sep-none fusion-title-center fusion-title-text fusion-title-size-three\" style=\"--awb-margin-top:20px;--awb-margin-bottom:0px;--awb-margin-bottom-small:8px;\"><h3 class=\"fusion-title-heading title-heading-center fusion-responsive-typography-calculated\" style=\"margin:0;--fontSize:20;line-height:1.2;\">Mittel Blog von Artefact.<\/h3><\/div><div class=\"fusion-text fusion-text-21\" style=\"--awb-content-alignment:center;\"><p>Dieser Artikel wurde urspr\u00fcnglich ver\u00f6ffentlicht auf <strong>Medium.com<\/strong>.<br \/>\nFolgen Sie uns auf unserem Medium Blog !<\/p>\n<\/div><div style=\"text-align:center;\"><a class=\"fusion-button button-flat button-medium button-default fusion-button-default button-1 fusion-button-default-span fusion-button-default-type\" target=\"_blank\" rel=\"noopener noreferrer\" href=\"https:\/\/medium.com\/artefact-engineering-and-data-science\/how-to-secure-your-python-software-supply-chain-81490f6e4ff9\"><span class=\"fusion-button-text awb-button__text awb-button__text--default\">Unseren Artikel lesen<\/span><\/a><\/div><\/div><\/div><\/div><\/div><\/p>","protected":false},"excerpt":{"rendered":"<p>Ein Leitfaden, der Ihnen hilft, sich der Risiken bewusst zu sein, denen Sie ausgesetzt sind, und einige Tipps, wie Sie sich vor diesen Risiken sch\u00fctzen k\u00f6nnen.<\/p>","protected":false},"featured_media":68687,"parent":0,"template":"","meta":{"_acf_changed":false,"ep_exclude_from_search":false},"blog-category":[21939],"blog-language":[2991],"class_list":["post-64948","blog","type-blog","status-publish","has-post-thumbnail","hentry","blog-category-medium","blog-language-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/blog\/64948","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/types\/blog"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/media\/68687"}],"wp:attachment":[{"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/media?parent=64948"}],"wp:term":[{"taxonomy":"blog-category","embeddable":true,"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/blog-category?post=64948"},{"taxonomy":"blog-language","embeddable":true,"href":"https:\/\/www.artefact.com\/de\/wp-json\/wp\/v2\/blog-language?post=64948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}