<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE FL_Course SYSTEM "https://www.flane.de/dtd/fl_course095.dtd"><?xml-stylesheet type="text/xsl" href="https://portal.flane.ch/css/xml-course.xsl"?><course productid="36420" language="de" source="https://portal.flane.ch/swisscom/xml-course/cydrill-crwgaic" lastchanged="2025-10-29T08:41:21+01:00" parent="https://portal.flane.ch/swisscom/xml-courses"><title>Code responsibly with generative AI in C# (desktop applications)</title><productcode>CRWGAIC</productcode><vendorcode>CY</vendorcode><vendorname>Cydrill</vendorname><fullproductcode>CY-CRWGAIC</fullproductcode><version>1.0</version><objective>&lt;ul&gt;
&lt;li&gt;Das Wesentliche der verantwortungsvollen KI verstehen&lt;/li&gt;&lt;li&gt;Vertrautmachen mit grundlegenden Konzepten der Cybersicherheit&lt;/li&gt;&lt;li&gt;Ans&amp;auml;tze und Grunds&amp;auml;tze der Eingabevalidierung&lt;/li&gt;&lt;li&gt;Ermittlung von Schwachstellen und deren Folgen&lt;/li&gt;&lt;li&gt;Lernen Sie die besten Sicherheitspraktiken in C#&lt;/li&gt;&lt;li&gt;Korrekte Implementierung verschiedener Sicherheitsmerkmale&lt;/li&gt;&lt;li&gt;Verwaltung von Schwachstellen in Komponenten von Drittanbietern&lt;/li&gt;&lt;li&gt;Verstehen, wie Kryptographie die Sicherheit unterst&amp;uuml;tzt&lt;/li&gt;&lt;li&gt;Lernen, wie man kryptografische APIs in C# richtig verwendet&lt;/li&gt;&lt;li&gt;All dies im Kontext von GitHub Copilot&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;&lt;/h4&gt;
&lt;h4&gt;&lt;/h4&gt;</objective><essentials>&lt;p&gt;Allgemeine C#-Entwicklung&lt;/p&gt;</essentials><audience>&lt;p&gt;C#-Entwickler, die Copilot oder andere GenAI-Tools verwenden&lt;/p&gt;</audience><contents>&lt;h4&gt;Tag 1&lt;/h4&gt;&lt;h4&gt;Verantwortungsbewusst kodieren mit GenAI&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Was ist verantwortungsvolle KI?&lt;/li&gt;&lt;li&gt;Was ist Sicherheit?&lt;/li&gt;&lt;li&gt;Bedrohung und Risiko&lt;/li&gt;&lt;li&gt;Arten von Cybersicherheitsbedrohungen - die CIA-Triade&lt;/li&gt;&lt;li&gt;Folgen von unsicherer Software&lt;/li&gt;&lt;li&gt;Sicherheit und verantwortungsvolle KI in der Softwareentwicklung&lt;/li&gt;&lt;li&gt;GenAI-Werkzeuge f&amp;uuml;r die Kodierung: Copilot, Codeium und andere&lt;/li&gt;&lt;li&gt;&amp;Uuml;berpr&amp;uuml;fung der Eingaben
&lt;ul&gt;
&lt;li&gt;Input-Validierungsprinzipien&lt;/li&gt;&lt;li&gt;Denylisten und Zulassungslisten&lt;/li&gt;&lt;li&gt;Was zu validieren ist - die Angriffsfl&amp;auml;che&lt;/li&gt;&lt;li&gt;Wo soll validiert werden - Verteidigung in der Tiefe&lt;/li&gt;&lt;li&gt;Wann validieren - Validierung vs. Umwandlung&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Einspritzung
&lt;ul&gt;
&lt;li&gt;Code-Einspritzung&lt;/li&gt;&lt;li&gt;OS-Befehlsinjektion&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Befehlsinjektion&lt;/li&gt;&lt;li&gt;Bew&amp;auml;hrte Praktiken zur Injektion von OS-Befehlen&lt;/li&gt;&lt;li&gt;Vermeidung von Befehlseingaben mit den richtigen APIs&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Bew&amp;auml;hrte Praktiken der Befehlsinjektion&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Experimentieren mit der Befehlsinjektion in Copilot&lt;/li&gt;&lt;li&gt;Fallstudie - Befehlsinjektion in Ruckus&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Probleme im Umgang mit Ganzzahlen
&lt;ul&gt;
&lt;li&gt;Darstellung von Zahlen mit Vorzeichen&lt;/li&gt;&lt;li&gt;Integer-Visualisierung&lt;/li&gt;&lt;li&gt;Integer-&amp;Uuml;berlauf&lt;/li&gt;&lt;li&gt;Labor - Integer-&amp;Uuml;berlauf&lt;/li&gt;&lt;li&gt;Verwirrung mit Vorzeichen / ohne Vorzeichen&lt;/li&gt;&lt;li&gt;Fallstudie - Die Stockholmer B&amp;ouml;rse&lt;/li&gt;&lt;li&gt;Labor - Verwechslung mit Vorzeichen / ohne Vorzeichen&lt;/li&gt;&lt;li&gt;Labor - Experimentieren mit vorzeichenlosen/vorzeichenbehafteten Verwechslungen in Copilot&lt;/li&gt;&lt;li&gt;Ganzzahlige Trunkierung&lt;/li&gt;&lt;li&gt;Bew&amp;auml;hrte Praktiken&lt;/li&gt;&lt;li&gt;Upcasting&lt;/li&gt;&lt;li&gt;Pr&amp;uuml;fung der Vorbedingungen&lt;/li&gt;&lt;li&gt;Pr&amp;uuml;fung nach der Bedingung&lt;/li&gt;&lt;li&gt;Integer-Verarbeitung in C#&lt;/li&gt;&lt;li&gt;Labor - Kontrollierte Arithmetik&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Experimentieren mit Integer-&amp;Uuml;berlauf in Copilot&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Dateien und Datenstr&amp;ouml;me
&lt;ul&gt;
&lt;li&gt;Pfad&amp;uuml;berquerung&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Pfad&amp;uuml;berquerung&lt;/li&gt;&lt;li&gt;Zus&amp;auml;tzliche Herausforderungen in Windows&lt;/li&gt;&lt;li&gt;Fallstudie - Dateispoofing in WinRAR&lt;/li&gt;&lt;li&gt;Bew&amp;auml;hrte Verfahren zur Pfad&amp;uuml;berquerung&lt;/li&gt;&lt;li&gt;Labor - Kanonisierung von Pfaden&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Experimentieren mit der Pfadverfolgung in Copilot&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Tag 2&lt;/h4&gt;&lt;h4&gt;&amp;Uuml;berpr&amp;uuml;fung der Eingaben&lt;/h4&gt;&lt;ul&gt;
&lt;li&gt;Unsichere Reflexion
&lt;ul&gt;
&lt;li&gt;Reflexion ohne Validierung&lt;/li&gt;&lt;li&gt;Labor - Unsichere Reflexion&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Experimentieren mit unsicherer Reflexion in Copilot&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Unsicherer nativer Code
&lt;ul&gt;
&lt;li&gt;Abh&amp;auml;ngigkeit von nativem Code&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Unsicherer nativer Code&lt;/li&gt;&lt;li&gt;Bew&amp;auml;hrte Praktiken f&amp;uuml;r den Umgang mit nativem Code&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Sicherheitsmerkmale
&lt;ul&gt;
&lt;li&gt;Authentifizierung
&lt;ul&gt;
&lt;li&gt;Grundlagen der Authentifizierung&lt;/li&gt;&lt;li&gt;Multi-Faktor-Authentifizierung (MFA)&lt;/li&gt;&lt;li&gt;Fallstudie - Der InfinityGauntlet-Angriff&lt;/li&gt;&lt;li&gt;Zeitbasierte Einmal-Passw&amp;ouml;rter (TOTP)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Passwortverwaltung
&lt;ul&gt;
&lt;li&gt;Verwaltung eingehender Passw&amp;ouml;rter&lt;/li&gt;&lt;li&gt;Speichern von Kontopassw&amp;ouml;rtern&lt;/li&gt;&lt;li&gt;Passwort im Transit&lt;/li&gt;&lt;li&gt;Labor - Reicht das Hashing von Passw&amp;ouml;rtern aus?&lt;/li&gt;&lt;li&gt;W&amp;ouml;rterbuchangriffe und Brute-Forcing&lt;/li&gt;&lt;li&gt;Salzen&lt;/li&gt;&lt;li&gt;Adaptive Hash-Funktionen f&amp;uuml;r die Passwortspeicherung&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Verwendung adaptiver Hash-Funktionen in C#&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Verwendung adaptiver Hash-Funktionen in Copilot&lt;/li&gt;&lt;li&gt;Fallstudie - Fehlende Authentifizierung und Klartext-Passwortspeicherung bei Veeam&lt;/li&gt;&lt;li&gt;Passwort-Politik&lt;/li&gt;&lt;li&gt;NIST-Authentifikator-Anforderungen f&amp;uuml;r gespeicherte Geheimnisse&lt;/li&gt;&lt;li&gt;Migration der Passwort-Datenbank&lt;/li&gt;&lt;li&gt;Fest kodierte Passw&amp;ouml;rter&lt;/li&gt;&lt;li&gt;Bew&amp;auml;hrte Praktiken&lt;/li&gt;&lt;li&gt;Labor - Hartkodiertes Passwort&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Schutz sensibler Informationen im Speicher
&lt;ul&gt;
&lt;li&gt;Herausforderungen beim Schutz der Erinnerung&lt;/li&gt;&lt;li&gt;Fallstudie - Diebstahl geheimer Microsoft-Schl&amp;uuml;ssel &amp;uuml;ber Dump-Dateien&lt;/li&gt;&lt;li&gt;Speicherung sensibler Daten im Speicher&lt;/li&gt;&lt;li&gt;Fallstudie - KeePass-Passwortleck &amp;uuml;ber Zeichenketten&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Informationsexposition
&lt;ul&gt;
&lt;li&gt;Offenlegung durch extrahierte Daten und Aggregation&lt;/li&gt;&lt;li&gt;Fallstudie - Strava-Datenexposition&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Sicherheit der Plattform
&lt;ul&gt;
&lt;li&gt;Sicherheit der .NET-Plattform&lt;/li&gt;&lt;li&gt;Schutz von .NET-Code und -Anwendungen&lt;/li&gt;&lt;li&gt;Unterzeichnung des Codes&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Denial of Service
&lt;ul&gt;
&lt;li&gt;&amp;Uuml;berschwemmungen&lt;/li&gt;&lt;li&gt;Ersch&amp;ouml;pfung der Ressourcen&lt;/li&gt;&lt;li&gt;Fragen der algorithmischen Komplexit&amp;auml;t&lt;/li&gt;&lt;li&gt;Denial of Service mit regul&amp;auml;ren Ausdr&amp;uuml;cken (ReDoS)&lt;/li&gt;&lt;li&gt;Labor - ReDoS&lt;/li&gt;&lt;li&gt;Labor - Experimentieren mit ReDoS in Copilot&lt;/li&gt;&lt;li&gt;Der Umgang mit ReDoS&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Verwendung anf&amp;auml;lliger Komponenten
&lt;ul&gt;
&lt;li&gt;Fallstudie - Der Angriff auf die Lieferkette von Polyfill.io&lt;/li&gt;&lt;li&gt;Management von Schwachstellen&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Auffinden von Schwachstellen in Komponenten von Drittanbietern&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Sicherheit von KI-generiertem Code
&lt;ul&gt;
&lt;li&gt;Praktische Angriffe auf Tools zur Codegenerierung&lt;/li&gt;&lt;li&gt;Abh&amp;auml;ngigkeits-Halluzination durch generative KI&lt;/li&gt;&lt;li&gt;Fallstudie - Eine Geschichte der Schw&amp;auml;chen von GitHub Copilot (bis Mitte 2024)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;

&lt;h4&gt;Tag 3&lt;/h4&gt;

&lt;h4&gt;Kryptographie f&amp;uuml;r Entwickler&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Grundlagen der Kryptographie&lt;/li&gt;&lt;li&gt;Krypto-APIs in C#&lt;/li&gt;&lt;li&gt;Elementare Algorithmen&lt;/li&gt;&lt;li&gt;Hashing
&lt;ul&gt;
&lt;li&gt;Grundlagen des Hashings&lt;/li&gt;&lt;li&gt;Hashing in C#&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Hashing in C# (Erkundung mit Copilot)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Erzeugung von Zufallszahlen
&lt;ul&gt;
&lt;li&gt;Pseudo-Zufallszahlengeneratoren (PRNGs)&lt;/li&gt;&lt;li&gt;Kryptografisch sichere PRNGs&lt;/li&gt;&lt;li&gt;Schwache und starke PRNGs&lt;/li&gt;&lt;li&gt;Verwendung von Zufallszahlen in C#&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Verwendung von Zufallszahlen in C# (Erkundung mit Copilot)&lt;/li&gt;&lt;li&gt;Fallstudie - Equifax-Kontosperrung&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Schutz der Vertraulichkeit
&lt;ul&gt;
&lt;li&gt;Symmetrische Verschl&amp;uuml;sselung
&lt;ul&gt;
&lt;li&gt;Blockchiffren&lt;/li&gt;&lt;li&gt;Betriebsarten&lt;/li&gt;&lt;li&gt;Betriebsarten und IV - bew&amp;auml;hrte Verfahren&lt;/li&gt;&lt;li&gt;Symmetrische Verschl&amp;uuml;sselung in C#&lt;/li&gt;&lt;li&gt;Symmetrische Verschl&amp;uuml;sselung in C# mit Streams&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Symmetrische Verschl&amp;uuml;sselung in C# (Erkundung mit Copilot)&lt;/li&gt;&lt;li&gt;Fallstudie - Padding-Orakel in RCE gegen Citrix ShareFile verwendet&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Asymmetrische Verschl&amp;uuml;sselung
&lt;ul&gt;
&lt;li&gt;Der RSA-Algorithmus&lt;/li&gt;&lt;li&gt;RSA in C#&lt;/li&gt;&lt;li&gt;Kombination von symmetrischen und asymmetrischen Algorithmen&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Schl&amp;uuml;sselaustausch und Vereinbarung
&lt;ul&gt;
&lt;li&gt;Austausch von Schl&amp;uuml;sseln&lt;/li&gt;&lt;li&gt;Diffie-Hellman-Schl&amp;uuml;sselvereinbarungsalgorithmus&lt;/li&gt;&lt;li&gt;Die wichtigsten Fallstricke beim Austausch und bew&amp;auml;hrte Verfahren&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Schutz der Integrit&amp;auml;t
&lt;ul&gt;
&lt;li&gt;Nachrichten-Authentifizierungs-Code (MAC)&lt;/li&gt;&lt;li&gt;HMAC-Berechnung in C#&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - MAC-Berechnung in C#&lt;/li&gt;&lt;li&gt;Digitale Unterschrift
&lt;ul&gt;
&lt;li&gt;Digitale Unterschrift mit RSA&lt;/li&gt;&lt;li&gt;Elliptische Kurven Kryptographie&lt;/li&gt;&lt;li&gt;ECC-Grundlagen&lt;/li&gt;&lt;li&gt;Digitale Unterschrift mit ECC&lt;/li&gt;&lt;li&gt;Digitale Unterschrift in C#&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Digitale Signatur mit ECDSA in C#&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;H&amp;auml;ufige Sicherheitsl&amp;uuml;cken in Software
&lt;ul&gt;
&lt;li&gt;Code quality
&lt;ul&gt;
&lt;li&gt;Codequalit&amp;auml;t und Sicherheit&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Umgang mit Daten
&lt;ul&gt;
&lt;li&gt;Initialisierung und Bereinigung&lt;/li&gt;&lt;li&gt;Initialisierungszyklen der Klasse&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Initialisierungszyklen (Erkundung mit Copilot)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Fallstricke der objektorientierten Programmierung
&lt;ul&gt;
&lt;li&gt;Vererbung und Overriding&lt;/li&gt;&lt;li&gt;Ver&amp;auml;nderlichkeit&lt;/li&gt;&lt;li&gt;Lab - Ver&amp;auml;nderbares Objekt (Erkundung mit Copilot)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Serialisierung
&lt;ul&gt;
&lt;li&gt;Herausforderungen bei Serialisierung und Deserialisierung&lt;/li&gt;&lt;li&gt;Integrit&amp;auml;t - Deserialisierung nicht vertrauensw&amp;uuml;rdiger Datenstr&amp;ouml;me&lt;/li&gt;&lt;li&gt;Integrit&amp;auml;t - bew&amp;auml;hrte Verfahren zur Deserialisierung&lt;/li&gt;&lt;li&gt;Vorausschauende Deserialisierung&lt;/li&gt;&lt;li&gt;Eigenschaftsorientiertes Programmieren (POP)&lt;/li&gt;&lt;li&gt;Erstellen einer POP-Nutzlast&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Erstellen einer POP-Nutzlast&lt;/li&gt;&lt;li&gt;&amp;Uuml;bung - Verwendung der POP-Nutzlast&lt;/li&gt;&lt;li&gt;Fallstudie - Deserialisierung RCE in Veeam&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Einpacken
&lt;ul&gt;
&lt;li&gt;Grunds&amp;auml;tze der sicheren Kodierung&lt;/li&gt;&lt;li&gt;Grunds&amp;auml;tze der robusten Programmierung von Matt Bishop&lt;/li&gt;&lt;li&gt;Sichere Gestaltungsprinzipien von Saltzer und Schroeder&lt;/li&gt;&lt;li&gt;Und was nun?&lt;/li&gt;&lt;li&gt;Quellen zur Softwaresicherheit und weiterf&amp;uuml;hrende Literatur&lt;/li&gt;&lt;li&gt;.NET- und C#-Ressourcen&lt;/li&gt;&lt;li&gt;Verantwortungsvolle KI-Prinzipien in der Softwareentwicklung&lt;/li&gt;&lt;li&gt;Generative AI - Ressourcen und zus&amp;auml;tzliche Anleitungen&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;</contents><comments>&lt;p&gt;&lt;em&gt;Dieser Text wurde automatisiert &amp;uuml;bersetzt. Um den englischen Originaltext anzuzeigen, klicken Sie bitte &lt;span class=&quot;cms-link-marked&quot;&gt;&lt;a class=&quot;fl-href-prod&quot; href=&quot;/swisscom/en/course/cydrill-crwgaic&quot;&gt;&lt;svg role=&quot;img&quot; aria-hidden=&quot;true&quot; focusable=&quot;false&quot; data-nosnippet class=&quot;cms-linkmark&quot;&gt;&lt;use xlink:href=&quot;/css/img/icnset-linkmarks.svg#linkmark&quot;&gt;&lt;/use&gt;&lt;/svg&gt;hier&lt;/a&gt;&lt;/span&gt;.&lt;/em&gt;&lt;/p&gt;</comments><objective_plain>- Das Wesentliche der verantwortungsvollen KI verstehen
- Vertrautmachen mit grundlegenden Konzepten der Cybersicherheit
- Ansätze und Grundsätze der Eingabevalidierung
- Ermittlung von Schwachstellen und deren Folgen
- Lernen Sie die besten Sicherheitspraktiken in C#
- Korrekte Implementierung verschiedener Sicherheitsmerkmale
- Verwaltung von Schwachstellen in Komponenten von Drittanbietern
- Verstehen, wie Kryptographie die Sicherheit unterstützt
- Lernen, wie man kryptografische APIs in C# richtig verwendet
- All dies im Kontext von GitHub Copilot</objective_plain><essentials_plain>Allgemeine C#-Entwicklung</essentials_plain><audience_plain>C#-Entwickler, die Copilot oder andere GenAI-Tools verwenden</audience_plain><contents_plain>Tag 1

Verantwortungsbewusst kodieren mit GenAI


- Was ist verantwortungsvolle KI?
- Was ist Sicherheit?
- Bedrohung und Risiko
- Arten von Cybersicherheitsbedrohungen - die CIA-Triade
- Folgen von unsicherer Software
- Sicherheit und verantwortungsvolle KI in der Softwareentwicklung
- GenAI-Werkzeuge für die Kodierung: Copilot, Codeium und andere
- Überprüfung der Eingaben

- Input-Validierungsprinzipien
- Denylisten und Zulassungslisten
- Was zu validieren ist - die Angriffsfläche
- Wo soll validiert werden - Verteidigung in der Tiefe
- Wann validieren - Validierung vs. Umwandlung
- Einspritzung

- Code-Einspritzung
- OS-Befehlsinjektion
- Übung - Befehlsinjektion
- Bewährte Praktiken zur Injektion von OS-Befehlen
- Vermeidung von Befehlseingaben mit den richtigen APIs
- Übung - Bewährte Praktiken der Befehlsinjektion
- Übung - Experimentieren mit der Befehlsinjektion in Copilot
- Fallstudie - Befehlsinjektion in Ruckus
- Probleme im Umgang mit Ganzzahlen

- Darstellung von Zahlen mit Vorzeichen
- Integer-Visualisierung
- Integer-Überlauf
- Labor - Integer-Überlauf
- Verwirrung mit Vorzeichen / ohne Vorzeichen
- Fallstudie - Die Stockholmer Börse
- Labor - Verwechslung mit Vorzeichen / ohne Vorzeichen
- Labor - Experimentieren mit vorzeichenlosen/vorzeichenbehafteten Verwechslungen in Copilot
- Ganzzahlige Trunkierung
- Bewährte Praktiken
- Upcasting
- Prüfung der Vorbedingungen
- Prüfung nach der Bedingung
- Integer-Verarbeitung in C#
- Labor - Kontrollierte Arithmetik
- Übung - Experimentieren mit Integer-Überlauf in Copilot
- Dateien und Datenströme

- Pfadüberquerung
- Übung - Pfadüberquerung
- Zusätzliche Herausforderungen in Windows
- Fallstudie - Dateispoofing in WinRAR
- Bewährte Verfahren zur Pfadüberquerung
- Labor - Kanonisierung von Pfaden
- Übung - Experimentieren mit der Pfadverfolgung in Copilot
Tag 2

Überprüfung der Eingaben


- Unsichere Reflexion

- Reflexion ohne Validierung
- Labor - Unsichere Reflexion
- Übung - Experimentieren mit unsicherer Reflexion in Copilot
- Unsicherer nativer Code

- Abhängigkeit von nativem Code
- Übung - Unsicherer nativer Code
- Bewährte Praktiken für den Umgang mit nativem Code
- Sicherheitsmerkmale

- Authentifizierung

- Grundlagen der Authentifizierung
- Multi-Faktor-Authentifizierung (MFA)
- Fallstudie - Der InfinityGauntlet-Angriff
- Zeitbasierte Einmal-Passwörter (TOTP)
- Passwortverwaltung

- Verwaltung eingehender Passwörter
- Speichern von Kontopasswörtern
- Passwort im Transit
- Labor - Reicht das Hashing von Passwörtern aus?
- Wörterbuchangriffe und Brute-Forcing
- Salzen
- Adaptive Hash-Funktionen für die Passwortspeicherung
- Übung - Verwendung adaptiver Hash-Funktionen in C#
- Übung - Verwendung adaptiver Hash-Funktionen in Copilot
- Fallstudie - Fehlende Authentifizierung und Klartext-Passwortspeicherung bei Veeam
- Passwort-Politik
- NIST-Authentifikator-Anforderungen für gespeicherte Geheimnisse
- Migration der Passwort-Datenbank
- Fest kodierte Passwörter
- Bewährte Praktiken
- Labor - Hartkodiertes Passwort
- Schutz sensibler Informationen im Speicher

- Herausforderungen beim Schutz der Erinnerung
- Fallstudie - Diebstahl geheimer Microsoft-Schlüssel über Dump-Dateien
- Speicherung sensibler Daten im Speicher
- Fallstudie - KeePass-Passwortleck über Zeichenketten
- Informationsexposition

- Offenlegung durch extrahierte Daten und Aggregation
- Fallstudie - Strava-Datenexposition
- Sicherheit der Plattform

- Sicherheit der .NET-Plattform
- Schutz von .NET-Code und -Anwendungen
- Unterzeichnung des Codes
- Denial of Service

- Überschwemmungen
- Erschöpfung der Ressourcen
- Fragen der algorithmischen Komplexität
- Denial of Service mit regulären Ausdrücken (ReDoS)
- Labor - ReDoS
- Labor - Experimentieren mit ReDoS in Copilot
- Der Umgang mit ReDoS
- Verwendung anfälliger Komponenten

- Fallstudie - Der Angriff auf die Lieferkette von Polyfill.io
- Management von Schwachstellen
- Übung - Auffinden von Schwachstellen in Komponenten von Drittanbietern
- Sicherheit von KI-generiertem Code

- Praktische Angriffe auf Tools zur Codegenerierung
- Abhängigkeits-Halluzination durch generative KI
- Fallstudie - Eine Geschichte der Schwächen von GitHub Copilot (bis Mitte 2024)


Tag 3



Kryptographie für Entwickler




- Grundlagen der Kryptographie
- Krypto-APIs in C#
- Elementare Algorithmen
- Hashing

- Grundlagen des Hashings
- Hashing in C#
- Übung - Hashing in C# (Erkundung mit Copilot)
- Erzeugung von Zufallszahlen

- Pseudo-Zufallszahlengeneratoren (PRNGs)
- Kryptografisch sichere PRNGs
- Schwache und starke PRNGs
- Verwendung von Zufallszahlen in C#
- Übung - Verwendung von Zufallszahlen in C# (Erkundung mit Copilot)
- Fallstudie - Equifax-Kontosperrung
- Schutz der Vertraulichkeit

- Symmetrische Verschlüsselung

- Blockchiffren
- Betriebsarten
- Betriebsarten und IV - bewährte Verfahren
- Symmetrische Verschlüsselung in C#
- Symmetrische Verschlüsselung in C# mit Streams
- Übung - Symmetrische Verschlüsselung in C# (Erkundung mit Copilot)
- Fallstudie - Padding-Orakel in RCE gegen Citrix ShareFile verwendet
- Asymmetrische Verschlüsselung

- Der RSA-Algorithmus
- RSA in C#
- Kombination von symmetrischen und asymmetrischen Algorithmen
- Schlüsselaustausch und Vereinbarung

- Austausch von Schlüsseln
- Diffie-Hellman-Schlüsselvereinbarungsalgorithmus
- Die wichtigsten Fallstricke beim Austausch und bewährte Verfahren
- Schutz der Integrität

- Nachrichten-Authentifizierungs-Code (MAC)
- HMAC-Berechnung in C#
- Übung - MAC-Berechnung in C#
- Digitale Unterschrift

- Digitale Unterschrift mit RSA
- Elliptische Kurven Kryptographie
- ECC-Grundlagen
- Digitale Unterschrift mit ECC
- Digitale Unterschrift in C#
- Übung - Digitale Signatur mit ECDSA in C#
- Häufige Sicherheitslücken in Software

- Code quality

- Codequalität und Sicherheit
- Umgang mit Daten

- Initialisierung und Bereinigung
- Initialisierungszyklen der Klasse
- Übung - Initialisierungszyklen (Erkundung mit Copilot)
- Fallstricke der objektorientierten Programmierung

- Vererbung und Overriding
- Veränderlichkeit
- Lab - Veränderbares Objekt (Erkundung mit Copilot)
- Serialisierung

- Herausforderungen bei Serialisierung und Deserialisierung
- Integrität - Deserialisierung nicht vertrauenswürdiger Datenströme
- Integrität - bewährte Verfahren zur Deserialisierung
- Vorausschauende Deserialisierung
- Eigenschaftsorientiertes Programmieren (POP)
- Erstellen einer POP-Nutzlast
- Übung - Erstellen einer POP-Nutzlast
- Übung - Verwendung der POP-Nutzlast
- Fallstudie - Deserialisierung RCE in Veeam
- Einpacken

- Grundsätze der sicheren Kodierung
- Grundsätze der robusten Programmierung von Matt Bishop
- Sichere Gestaltungsprinzipien von Saltzer und Schroeder
- Und was nun?
- Quellen zur Softwaresicherheit und weiterführende Literatur
- .NET- und C#-Ressourcen
- Verantwortungsvolle KI-Prinzipien in der Softwareentwicklung
- Generative AI - Ressourcen und zusätzliche Anleitungen</contents_plain><comments_plain>Dieser Text wurde automatisiert übersetzt. Um den englischen Originaltext anzuzeigen, klicken Sie bitte hier.</comments_plain><duration unit="d" days="3">3 Tage</duration><pricelist><price country="DE" currency="EUR">2250.00</price><price country="SI" currency="EUR">2250.00</price><price country="AT" currency="EUR">2250.00</price><price country="SE" currency="EUR">2250.00</price><price country="CH" currency="CHF">2250.00</price></pricelist><miles/></course>