Dieser Artikel wurde maschinell übersetzt.

Big Data

Schützen Sie Ihre Online Services mit Big Data und Machine Learning

Alisson Sol
Don Ankney
Eugene Bobukh

Laden Sie die Codebeispiele herunter

Derzeit gibt es mehrere Methoden zum Schutz von online-Diensten von der Security Development Lifecycle operative Verfahren zur raschen Reaktion auf Sicherheitsvorfälle. Einer der wichtigsten Trümpfe von online-Diensten wird in der Regel übersehen — Big Data erstellt von Protokolle und operative Ereignisüberwachung. In diesem Artikel untersuchen Datenverarbeitung der Verwendungsanalyse und Machine learning (ML) Techniken zur Verbesserung von Sicherheit, basierend auf den Erfahrungen zum Schutz der online Vermögenswerte in den Microsoft-Applications & Gruppe (ASG), Inklusivleistungen wie Bing, Bing anzeigen und MSN-Dienste.

Die meisten online-Dienste erstellen mehrere Datenströme angemeldet. Zwar gibt es keine standard-Taxonomie für die Arten von Messungen, die über einen Dienst gespeichert werden können, wenn Sie diese Daten, um Sicherheitsprobleme erforschen sind, können Sie es im großen und ganzen als Nutzungsdaten oder Betriebsdaten kategorisieren. Nutzungsdaten umfasst alle protokollierten Wert bezüglich der Nutzung des Dienstes von ihrer Zielgruppe. Ein typisches Beispiel ist ein Protokolleintrag für Anforderungen an eine Web-Site:

#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
2014-10-27 20:46:57 127.0.0.1 GET /search q=election+results&form=PRUSEN&mkt=en-us 80 - 127.0.0.1 Mozilla/5.0+(Windows+NT+6.4;+WOW64;+Trident/7.0;+Touch;+rv:11.0)+like+Gecko - 200 0 0 5265

Diese Art der Protokolleintrag enthält Daten, die nicht nur über die angeforderte Ressource, aber auch der Clientbrowser, Rückgabecode und Zeit, um die Anforderung abzuschließen. Komplexere Dienste können Nutzungsdaten mit abgeleiteten Informationen wie Geolocation oder anwendungsspezifische Informationen wie Benutzer-ID (für angemeldete Benutzer) bereichern. Gäbe es keine Nutzungsdaten ohne tatsächliche Benutzer, außer vielleicht für Prüfung und Überwachung von Agenten.

Betriebsdaten bezieht sich auf Server und operative Service-Messungen. Dazu gehören CPU-Auslastung oder Temperatur Speicherplatz auf der Festplatte, Netzwerk-Übertragungsrate, Anwendungsausnahmen, Speicherfehler und ähnliche Faktoren angemeldet, sobald ein Server eingeschaltet ist und ein Dienst gestartet. In modernen Rechenzentren umfasst Protokollinformationen in der Regel nicht nur Geräte, sondern auch Aspekte wie Klimaanlage-Messungen, die Anwesenheit von Personal und Besuchern in Zonen mit sensiblen Daten, Türen, die geöffnet und geschlossen und ähnliche operative Sicherheitsnormen geforderten Angaben.

Die Codebeispiele in diesem Artikel konzentrieren sich auf die Verarbeitung von Nutzungsdaten. Jedoch konnte die meisten der Grundsätze erläutert und demonstriert hier um Sicherheitslücken mit operativer Daten angewendet werden. Sie können auch Ihre Chancen zur Identifizierung von Sicherheitsvorfällen durch Korrelation von Nutzungsdaten mit Betriebsdaten verbessern.

Angreifende Endpunkte

Das Tempo der Veränderungen für einen großen online-Service macht es schwer, zu schützen, verwenden nur typische Security Development Lifecycle-Praktiken, wie Code-Reviews und statische Analysetools. Tausende von Änderungen sind verpflichtet, jeden Monat. Und es gibt oft zumindest ein paar hundert Experimente "im Flug" zu einem bestimmten Zeitpunkt. Diese Experimente präsentieren neue Features, um Benutzer zu sammeln Feedback vor weit verbreiteten Version auswählen. Neben der guten Entwicklung Vorgehensweisen und mit Penetration Teams ständig bemüht, um Schwachstellen zu identifizieren, zu testen, ist es wichtig, so viel von der Sicherheitsanfälligkeit Entdeckung wie möglich zu automatisieren.

Nahe dem Ende des Jahres 2014 generiert Microsoft Bing Service Hunderte von Terabyte an Daten über die Nutzung auf einer täglichen Basis, Anmeldung bis zu Hunderte von Milliarden Anfragen. Es ist sicher davon ausgehen, dass einige dieser Anforderungen waren tatsächlich Angriffe zu identifizieren oder Schwachstellen auszunutzen versuchen. Eine typische Abfrage Bing werden eine URL-Anforderung an den Dienst gesendet:

https://www.bing.com/search?q=election+results&form=PRUSEN&mkt=en-us

In diesem Beispiel sucht der Nutzer nach "Wahlergebnisse." Es gibt zwei andere Parameter in der URL, die das Webformular zu identifizieren, das entstand die Anforderung und die Markt-Einstellung (in diesem Fall darauf hin, dass die Sprache Englisch ist und in den Vereinigten Staaten). Vielleicht verstehen Sie das als Aufruf an die "Suche"-Anwendung innerhalb der Domäne Bing mit Parameter Q, Form und mkt. Solche Anfragen werden ausgedrückt in einem kanonischen Format, etwa so:

https://www.bing.com/search?q=[]&form=[]&mkt=[]

Es gibt andere Anwendungen innerhalb der Bing Domäne antwortenden ähnlichen Anforderungen. Es wäre eine Anforderung fordern "Wahlergebnisse" im video-Format:

https://www.bing.com/videos?q=election+results&form=PRUSEN&mkt=en-us

Wie online-Dienste wachsen, neue Anwendungen und Funktionen sind dynamisch hinzugefügt — einige für Bequemlichkeit und andere für die Kompatibilität. Verschiedene Formate sind oft für dieselbe Forderung zulässig. Bing Videos akzeptieren würde auch diese Anforderung:

http://videos.bing.com/?q=election+results&form=PRUSEN&mkt=en-us

Vorausgesetzt, dass Sie aus den Protokollen der Nutzung eine Liste mit allen kanonische Anforderungen an einen Dienst ableiten könnte, könnte Sie dann Sonde für Schwachstellen, die versuchen, die bekannte bösartige Nutzlasten in die Parameterwerte zu injizieren. Beispielsweise könnte ein Eindringling die folgende Anforderung verwenden, um zu überprüfen, ob die Bing-video-Anwendung anfällig für siteübergreifende Skripterstellung (XSS) in der Abfrageparameter ist:

https://www.bing.com/videos?q=<script>alert("XSS")
</script>&form=PRUSEN&mkt=en-us

Ein Eindringling, der Suche nach Schwachstellen werden auch die Antworten für böswillige Nutzlasten eingespritzt andere Parameter in allen möglichen Kombinationen testen. Sobald eine Sicherheitslücke gefunden wird, kann ein Angriff gestartet werden. Angriff URLs gehören in der Regel Spam-Nachrichten, in der Hoffnung, die ein kleiner Prozentsatz der Benutzer achtlos auf die Links klicken. Einige dieser Benutzer können auch URLs mit JavaScript Keywords vermuten. Allerdings erschwert Codierung die Anfragen um Angriffe unverzüglich zu identifizieren:

https://www.bing.com/videos?&form=PRUSEN&mkt=en-us&q=%3CscRipt%3Ealert(%22XSS%22)%3C%2FScriPT%3E

Injektion von bösartigen Nutzlasten für jede Art von möglichen Schwachstellen und erkennen aus der Service-Antwort, wenn der Angriff erfolgreich war, können Sie eine Anwendung, die die Liste der kanonischen Anforderungen an einen Dienst als Eingabe akzeptiert schreiben. Finden Sie den Code für die einzelne "Melder" für mehrere Arten von Schwachstellen (XSS, SQL Injection und offene Umleitungen) online. In diesem Artikel konzentrieren wir auf der Suche nach der "Angriffsfläche" für online-Dienste von der Verwendungsprotokolle Daten.

Umgebung

Weblogs sind in der Regel über mehrere Maschinen, die sequenzielle Log Datei liest sehr effizient (noch besser, wenn die Dateien auf verschiedenen Speichermedien in einem verteilten Dateisystem partitioniert sind) verteilt. Das macht die Verarbeitung Weblogs ein sehr gutes Programm für das MapReduce-Framework.

In diesem Beispiel werden wir unter dem gleichen Container namens InputContainer Weblogs in Microsoft Azure Blobs platzieren. Als Plattform Verarbeitung verwenden wir Azure HDInsight Streaming MapReduce Arbeitsplätze. Es gibt gute Informationen bereits verfügbar online zum Einrichten und konfigurieren HDInsight Cluster. Generiert den Code in diesem Artikel erläutert werden Binärdateien, die in einem Container werden zugänglich für den HDInsight-Cluster, die als ClusterBinariesContainer bezeichnet platziert sollten. Als Code wird ausgeführt und Eingaben verarbeitet, erstellt er Ausgabe in einem anderen Container, genannt ClusterOutputContainer, zusammen mit Statusinformationen in der ClusterStatusContainer gespeichert. Eine Visualisierung der Azure HDInsight Verarbeitung-Konfiguration erscheint Abbildung 1.

der azurblauen HDInsight Umgebung
Abbildung 1 der azurblauen HDInsight Umgebung

Sie müssen in die Platzhalter ersetzt Abbildung 1 mit Werten für Ihre spezifische Konfiguration. Sie können diese in einer Konfigurationsdatei festlegen. Das Windows PowerShell -Skript, das Erstellen und Ausführen des Auftrags HDInsight liest die XML-Konfigurationsdatei in gezeigten Abbildung 2. Nach dem Konfigurieren der Datei, werden Sie höchstwahrscheinlich führen Sie das Skript für die Verwendungsanalyse von Daten innerhalb einer Azure PowerShell-Eingabeaufforderung müssen ordnungsgemäß konfiguriert Ihr Azure Konto, um die Berechtigung zum Zugriff auf den Speicher und Dienste zu berechnen (siehe Get-AzureAccount und Cmdlets Add-AzureAccount-Hilfe).

Abbildung 2 Windows PowerShell -Skript XML-Konfigurationsdatei

<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <SubscriptionName>Your-SubscriptionName</SubscriptionName>
  <ClusterName>Your-ClusterName</ClusterName>
  <ClusterStorageAccountName>Your-ClusterStorageAccountName
    </ClusterStorageAccountName>
  <ClusterBinariesContainer>Your-ClusterBinariesContainer
    </ClusterBinariesContainer>
  <MapperBinary>UsageDataMapper.exe</MapperBinary>
  <ReducerBinary>UsageDataReducer.exe</ReducerBinary>
  <ClusterOutputContainer>Your-ClusterOutputContainer</ClusterOutputContainer>
  <ClusterStatusContainer>Your-ClusterStatusContainer</ClusterStatusContainer>
  <InputStorageAccountName>Your-InputStorageAccountName
    </InputStorageAccountName>
  <InputStorageAccountKey>Your-InputStorageAccountKey</InputStorageAccountKey>
  <InputContainer>Your-InputContainer</InputContainer>
  <DeployBinaries>true</DeployBinaries>
  <DeployFlavor>Release</DeployFlavor>
  <JobTimeOut>3600</JobTimeOut>
</Configuration>

Ordnen Sie kanonische Anforderungen

Immer die Angriffsfläche für die online-Dienste mithilfe der MapReduce besteht Verarbeitungsumgebung zum Erstellen einer Mapper-Anwendung die URLs aus der Weblogs extrahieren und verwandeln sie in kanonische Form. Dieser Wert wird der Schlüssel für die Reduktion, die dann Duplikate beseitigen wird. Das ist das gleiche Prinzip in der Word Count Beispielanwendung zur Verfügung für HDInsight verwendet. Entfernen alle Kommentare und einen Validierungscode, zeigt der folgende Code den Haupteinstiegspunkt für die Anwendung der Mapper:

public static void Main(string[] args)
{
  Console.SetIn(new StreamReader(args[0]));
  string inputLogLine;
  while ((inputLogLine = Console.ReadLine()) != null)
  {
    string outputKeyAndValues =
      ExtractKeyAndValuesFromLogLine(inputLogLine);
    Console.WriteLine(outputKeyAndValues);
  }
}

Dieser Code durchläuft jede Eingabezeile und extrahiert den eindeutigen Schlüssel, sowie ergänzende Werte relevant für das Problem gelöst. Beispielsweise wenn Sie die am häufigsten verwendeten Benutzerabfragen versuchten, wäre der Schlüssel für die Query-Parameter übergebene Wert. RAW Log-Zeilen werden wie folgt angezeigt:

#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc-substatus sc-win32-status time-taken
2014-10-27 20:46:57 127.0.0.1 GET /search q=election+results&form=PRUSEN&mkt=en-us 80 - 127.0.0.1 Mozilla/5.0+(Windows+NT+6.4;+WOW64;+Trident/7.0;+Touch;+rv:11.0)+like+Gecko - 200 0 0 5265

Spalten Cs-Uri-Stem und Cs-Uri-Query haben die relevante Informationen Sie analysiert haben, um die kanonische Form des Antrags zu erhalten müssen (der Beispielcode beinhalten nicht mehrere hosting Pro­gekündigt). Die Funktion zum Extrahieren von Schlüssel und Werte aus jeder Log-Zeile wird beschrieben Abbildung 3.

Abbildung 3-Funktion zum Extrahieren von Schlüssel und Werte aus Log-Line

private static string ExtractKeyAndValuesFromLogLine(string inputLogLine)
{
  StringBuilder keyAndValues = new StringBuilder();
  string[] inputColumns = inputLogLine.Split(DataFormat.MapperInputColumnSeparator);
  string uriReference = inputColumns[DataFormat.MapperInputUriReferenceColumn];
  string uriQuery = inputColumns[DataFormat.MapperInputUriQueryColumn];
  string parameterNames = ExtractParameterNamesFromQuery(uriQuery);
  // Key = uriReference + separator + parameterNames
  keyAndValues.Append(uriReference);
  keyAndValues.Append(DataFormat.ReferenceFromQuerySeparator);
  keyAndValues.Append(parameterNames);
  keyAndValues.Append(DataFormat.MapperOutputColumnSeparator);
  keyAndValues.Append(DataFormat.OneOccurrence);
  return keyAndValues.ToString();
}

Die einzige fehlende Logik bezieht sich auf die Namen der Parameter aus der Abfrage-Spalte extrahieren. Code zum Ausführen der Aufgabe erscheint Abbildung 4. Die Eingabe für diese Funktion — die zuvor bereitgestellten Beispielzeile — wäre eine Zeichenfolge wie folgt:

q=election+results&form=PRUSEN&mkt=en-us

Abbildung 4-Funktion, um nur die Parameternamen von Anfrage bekommen?

private static string ExtractParameterNamesFromQuery(string query)
{
  StringBuilder sb = new StringBuilder();
  // Go through each parameter adding to output string
  string[] nameValuePairs = query.Split(DataFormat.ParametersSeparator);
  Array.Sort(nameValuePairs, StringComparer.InvariantCultureIgnoreCase);
  List<string> uniqueParameterNames = new List<string>();
  foreach (string nameValuePair in nameValuePairs)
  {
    int indexOfSeparatorParameterNameFromValue =
      nameValuePair.IndexOf(DataFormat.ParameterNameFromValueSeparator);
    string paramName = nameValuePair;
    paramName = nameValuePair.Substring(0,
      indexOfSeparatorParameterNameFromValue);
    uniqueParameterNames.Add(paramName);
    sb.Append(paramName);
    sb.Append(DataFormat.ParameterNameFromValueSeparator);
    sb.Append(DataFormat.OneOccurrence);
    sb.Append(DataFormat.ParametersSeparator);
  }
  return sb.ToString();
}

Die kanonische Form im Beispielcode verwendet wird entfernen Sie die Parameterwerte, sortieren die Parameternamen und verwandeln diese in eine noch gültige Abfrage-Zeichenfolge:

form=1&mkt=1&q=1&

Sortieren die Parameternamen hilft Doppelarbeit zu vermeiden, weil Webanforderungen nicht die Reihenfolge der Parameter vom abhängen. Der Platzhalter für den Parameterwert verwendet wird "1" statt "[]", weil es kürzer ist. Es kann auch verwendet werden, für andere Dinge wie zählen die Anzahl der Parameter in allen Kombinationen von Anforderungsparametern erscheinen, siehe Abbildung 4.

Die Angriffsfläche verkleinern

Die Zuordnungscode sequenziell liest die Weblog-Zeilen und gibt einen Schlüssel und Wert für jeden. MapReduce ist eine "Combine"-Phase, die alle Datensätze mit demselben Schlüssel für die Verarbeitung durch den Abschwächer-Code montiert. Wenn ein Eingabe-Protokoll mehrere Zeilen Suchanfragen zu tun hatte, jetzt produzieren diejenigen identische Ausgaben:

search?form=1&mkt=1&q=1&         1
search?form=1&mkt=1&q=1&         1
search?form=1&mkt=1&q=1&         1

Abbildung 5 hat die Kontur für den Abschwächer-Code. Es liest Eingabezeilen und teilt diese in Schlüssel und Werte. Es hält einen Zähler bis die wichtigsten Änderungen und gibt dann das Ergebnis.

Abbildung 5 Reducer Hauptschleife

public static void Main(string[] args)
{
  string currentKey, previousKey = null;
  int count = 0;
  Console.SetIn(new StreamReader(args[0]));
  string inputLine;
  while ((inputLine = Console.ReadLine()) != null)
  {
    string[] keyValuePair =
      inputLine.Split(DataFormat.ReducerInputColumnSeparator);
    currentKey = keyValuePair[0];
    if (currentKey != previousKey)
    {
      Console.WriteLine(DataFormat.ReducerOutputLineFormat, 
        previousKey, count);
      count = 1;
      previousKey = currentKey;
    }
    else count++;
  }
  Console.WriteLine(DataFormat.ReducerOutputLineFormat, 
    previousKey, count);
}

Sie können einfach den Code und Skripts, die in diesem Artikel bereitgestellt wird, für andere Zwecke modifizieren. Änderungsfunktion ExtractKeyAndValuesFromLogLine müssen die Parameterwerte als den Schlüssel und Sie würden eine nützliche Distribution Wert Frequenz haben. In seiner gegenwärtigen Form werden die Ausgabe eine Liste mit die Angriffsfläche, die normalisierte Anwendungspfad und Häufigkeit der Zugriffe:

search?form=1&mkt=1&q=1&         3
video?form=1&mkt=1&q=1&           10

Service Verkehr zu verstehen

Die Angriffsfläche wird bereits wertvolle, damit Sie verstehen, was geschieht mit Ihren Dienst, auch wenn Sie keine, proaktive Penetrationstests ausführen um Schwachstellen offen zu legen. Obwohl Abfragehäufigkeit pro Stunde, pro Tag der Woche und andere saisonalen Faktoren, ändert sich das normale Verhalten über Zeitänderungen mit Feature veröffentlicht oder sogar koordinierte Angriffe. Bing erhält beispielsweise Hunderte von Milliarden Anfragen pro Tag. Die Angriff Oberfläche Liste hat in der Regel mehrere hunderttausend Werte pro Tag. Nicht alle Pfade werden noch erwartet. Abbildung 6 fasst zusammen, was an einem normalen Tag auf die Angriffsfläche gefunden wird. Die erste Zeile gibt die Top 10 kanonische Pfade auf 89,8 Prozent von der üblichen Datenverkehr. Die nächsten Top-10-Pfade hinzufügen bis zu 6,3 Prozent der Anzahl der Anfrage (oder 96,1 Prozent für die Top 20). Das sind wirklich die besten Anwendungen für den Dienst. Alles andere beläuft sich auf weniger als 4 Prozent. Eine solches Muster Anfrage unterscheidet sich sehr für eine Website mit syndizierte Inhalte, wie MSN.com.

Abbildung 6 typische Verteilung der Anforderung Pfade für Bing im Jahr 2013

Kanonische Pfade Prozentsatz
Top 10 89.8
Top 20 96.1
Pfade mit < = 1.000 Anfragen 99.9
Pfade mit < = 100 Anfragen 99.6
Pfade mit < = 10 Anfragen 97.6
Pfade mit = 1 Antrag 67.5

Es ist zu beachten, dass etwa zwei Drittel der Anträge zu eindeutige Pfade sind besonders interessant. Einige dieser Anforderungen kann kommen vor Angreifern, die versuchen, zur Suche nach Anwendungsparameter, die bestimmte Funktionen auslösen könnten. Das Wesen der Onlinedienste generiert noch eine Menge solcher Verkehr. Links zu Ihrem Dienst gespeichert vor ein paar Jahren noch von Menschen aktiviert werden kann oder automatisierte Prozesse. Sie können während der Suche nach einem Angreifer, entdecken die Notwendigkeit ein Kompatibilitätsmodus für alte URLs und automatisch umgeleitet zu neuen Versionen der Anwendung. Das ist ein gutes Geschäft-Ergebnis.

Entwicklung der angreifenden Anwendung ist eine Reise, die Sie mit Sorgfalt sollten. Angenommen, Ihre Detektoren alle perfekt sind, werde Sie jetzt eine Ladung auf Ihren Dienst zu verhängen, die ordnungsgemäß gedrosselt werden muss. Du musst zu verhindern, dass einen Denial-of-Service-Angriff oder Leistung für echte Benutzer beeinträchtigen. Es ist auch wesentlich, zahlreichen Fehlalarme zu vermeiden. Wenn das passiert, werden bald Schadensberichte von der angreifenden Dienst ignoriert.

Lernen Sie von Service-Daten

ML können Sie mehrere Prozesse zu automatisieren, die schwer zu tun, indem Sie direkt Codierung Anweisungen oder Regeln wären. Beispielsweise wäre es schwer vorstellbar, dass der Code für eine Computer-Vision-Anwendung, die eine Person erkennen würde vor einer Kamera ist. Nach dem Etikettieren Tausende von Bildern mit Tiefeninformationen, konnte jedoch das Kinect-Team bei Microsoft "ein ML-Modul mit ausreichender Genauigkeit dazu train". Die beschrifteten Tiefe Bilder, die nicht nur die menschliche Präsenz, sondern auch die Körperhaltung, aktiviert den Lernprozess.

Einen Angriff-Service, die Anforderungen der bekannten Kategorien generiert (XSS, SQL Injection und So weiter) einen wichtigen Teil des Prozesses, ML-Methoden zu verwenden, für die Bewertung von online-Traffic automatisiert. Es erzeugt eine große Menge an synthetischem Boden Wahrheit. Überprüfen Sie die Nutzung-Protokolle, um alle Anforderungen dieser Angriff bekannt durch den Angriff-Service zu einem bestimmten Zeitpunkt erfolgen leicht zu erkennen. Sie sind jetzt mit Benutzeranforderungen, für die gibt es nicht doch eine bekannte Klassifikation (normal oder böswillige Anfrage) gemischt.

Eine Schichtung der Daten erstellen, die den Verkehr schlagen den Dienst wirklich entspricht, müssen Sie die Natur, dass der Verkehr zu verstehen. Generieren einer experimentellen Probe mit 0,1 Prozent der Nutzungsdaten für einen Dienst, der Empfang von 100 Milliarden Anforderungen führt ein Tag noch 100 Millionen Zugriffe. Nur synthetische Daten können helfen, solch eine erste Boden-Wahrheit zu erstellen.

Angenommen, Sie haben qualitativ hochwertige Boden-Wahrheit und geeignete Instrumente, der iterative Zyklus für den Lernprozess für eine ML-Lösung für Benutzeranforderungen zu bewerten ist gemäß Abbildung 7. Beginnend mit synthetischen Daten in die Boden-Wahrheit, macht Experimente und kick-off ein Trainingsprozess im ML-Modul, um Anfragen zu klassifizieren (in Kategorien wie Normal, XSS, SQL-Injektion und So weiter) oder machen eine Regression (Hinweis auf das Vertrauen, die eine Anforderung gehört zu einem oder mehreren der Kategorien). Sie könnten dann dieses ML-Modul als Teil einer Lösung bereitstellen und Empfang Bewertung-Anforderungen. Die Ausgabe ist dann ein scoring unterzogen, die angegeben wird, ob das ML-Modul korrekt die Anfragen (wahren positiven und richtig negativen identifiziert), verdächtige Anfragen (false negative verpasst) oder eine falsche erzeugt Warnung (falsch positiv).

Lern-Zyklus zum Erstellen einer Machine Learning-basierte Lösung
Abbildung 7 Lern-Zyklus zum Erstellen einer Machine Learning-basierte Lösung

Wenn die erste Experimente eine gute genug ML-Modul anhand von synthetischen Daten produziert, sollte dieses Modul ziemlich genau mit paar falsch ausgewertete tatsächliche Benutzeranforderungen. Sie können dann richtig beschriften Sie diejenigen, die falsch ausgewertet wurden und fügen sie die Boden-Wahrheit. Ein paar weitere Experimente und Training sollte jetzt ein neues ML-Modul mit restaurierten Genauigkeit erzeugen. Wie Sie genau diesen Prozess durchlaufen, die ersten synthetischen Daten werden ein kleinerer Teil der Boden Wahrheit in den Trainingsprozess verwendet und Iterationen des Moduls ML besser genau Bewertung Benutzeranforderungen. Für die zusätzliche Überprüfung können Sie das ML-Modul für offline-Anwendungen untersucht Verwendungsprotokolle und bösartige Anforderungen identifizieren. Nach ausreichender Entwicklung können Sie das ML-Modul online bereitstellen, wenn Anforderungen in Echtzeit zu bewerten und zu verhindern, dass Angriffe immer schlagen Back-End-Anwendungen.

Zusammenfassung

Während Sie solide Entwicklung-Prozesse weiterhin sollten (einschließlich der Security Development Lifecycle) folgen, sollten Sie auch davon ausgehen, dass Ihre online-Service unter Beschuss zu einem beliebigen Zeitpunkt sein kann. Verwendungsprotokolle können Ihnen aufschlussreiche Informationen, wie solche Angriffe auftreten. Kennen Ihre Angriffsfläche hilft Ihnen proaktiv Angriffe Ihren Dienst zu identifizieren und Sicherheitslücken zu schließen, bevor sie ausgebeutet sind. Gebäude, dass Angriff Dienst dann synthetische Boden Wahrheit erstellt, was den Einsatz von ML-Techniken, eine ML-Modul auszuwertende Dienstanforderungen zu trainieren. Erstellen des Angriffs-Diensts ist keine triviale Aufgabe, aber die unmittelbaren und langfristigen geschäftlichen Ergebnisse mehr als rechtfertigen die Investition.


Alisson Sol ist ein leitender Architekt für Microsoft. Er hat viele Jahre Software-Entwicklungserfahrung mit Schwerpunkt Bildverarbeitung, Bildanalyse, ERP und Business Intelligence, Big Data, Maschinelles Lernen und verteilten Systemen. Bevor Sie beginnen bei Microsoft im Jahr 2000, er war er Mitbegründer drei Software-Unternehmen, veröffentlicht mehrere Fachartikel und mehrere Patentanmeldungen. Lesen Sie seinen Blog unter AlissonSol.com/blog.

Don Ankney ist in die Microsoft Information Platform Group, wo er, zum Anwenden von Microsoft Maschine lernen Investitionen auf der Service-Sicherheit-Raum arbeitet, leitende Sicherheitsexperte. Er war Gründungsmitglied der Black Lodge Research, einer Non-Profit mit Schwerpunkt Sicherheit und unterrichtet regelmäßig sichere Entwicklungstechniken an regionale Treffen-Ups, Workshops und Konferenzen der Vereinten Nationen.

Eugene Bobukh ist senior Sicherheitsdaten / Programmmanager bei Microsoft. Konzentration auf die Anwendung von wissenschaftlichen Ansatzes zu Sicherheitsproblemen, er leitete Sicherheitstests und Sicherheitsüberprüfungen für mehr als 200 Microsoft Veröffentlichungen seit 2000, einschließlich .NET, Silverlight und Internet Explorer durchgeführt. Einige der Bobukhs Arbeit wird beschrieben, auf blogs.msdn.com/b/eugene_bobukh.

Unser Dank gilt den folgenden technischen Experten von Microsoft für die Durchsicht dieses Artikels: Barry Markey und Viresh Ramdatmisier