DE112010003979T5 - System und Verfahren für das statische Erkennen und Kategorisieren von Informationsfluss-Herabstufungseinrichtungen - Google Patents

System und Verfahren für das statische Erkennen und Kategorisieren von Informationsfluss-Herabstufungseinrichtungen Download PDF

Info

Publication number
DE112010003979T5
DE112010003979T5 DE112010003979T DE112010003979T DE112010003979T5 DE 112010003979 T5 DE112010003979 T5 DE 112010003979T5 DE 112010003979 T DE112010003979 T DE 112010003979T DE 112010003979 T DE112010003979 T DE 112010003979T DE 112010003979 T5 DE112010003979 T5 DE 112010003979T5
Authority
DE
Germany
Prior art keywords
program
function
downgrader
strings
string
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE112010003979T
Other languages
English (en)
Inventor
Roee Hay
Guy Podjarny
Adi Sharabani
Omer Tripp
Omri Weisman
Yinnon Haviv
Marco Pistoia
Takaaki Tateishi
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112010003979T5 publication Critical patent/DE112010003979T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/49Partial evaluation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Ein System und ein Verfahren zum statischen Erkennen und Kategorisieren von Herabstufungseinrichtung des Informationsflusses enthalten das Transformieren (502) eines Programms, das in einer Speichereinheit gespeichert ist, durch statisches Analysieren von Programmvariablen, um eine einzige Zuweisung zu jeder Variable in einer Befehlsmenge zu erreichen. Die Befehlsmenge wird in Produktionsregeln mit Zeichenfolgenoperationen übersetzt (504). Eine kontextfreie Grammatik wird aus den Produktionsregeln erzeugt (508), um eine endliche Menge von Zeichenfolgen zu erkennen. Eine Funktion der Herabstufungseinrichtung des Informationsflusses wird durch Vergleichen der endlichen Menge von Zeichenfolgen mit einer oder mehreren Funktionsbeschreibungen erkannt (510).

Description

  • HINTERGRUND
  • Technisches Gebiet
  • Die vorliegende Erfindung bezieht sich auf die statische Programmanalyse und insbesondere auf Zeichenfolgenanalysen, die ohne Ausführung eines Programms während der Laufzeit auftretende Zeichenfolgenwerte ableiten, um eine Funktionsanalyse für das automatische Erkennen und Kategorisieren von Informationsfluss-Herabstufungseinrichtungen bereitzustellen.
  • Beschreibung der verwandten Technik
  • Die Prinzipien der Informationsfluss-Sicherheit legen fest, dass in einem Programm kein ”unerlaubter Fluss” von Informationen zulässig ist. Ein Fluss ist unerlaubt, wenn er ermöglicht, dass nichtvertrauenswürdige (untrusted) Informationen in einer vertrauenswürdigen (trusted) Berechnung verwendet werden (eine Verletzung der Unverfälschtheit) oder wenn er ermöglicht, dass geheime Informationen unberechtigten Benutzern vollständig oder teilweise preisgegeben werden (eine Verletzung der Vertraulichkeit). Unverfälschtheit (integrity) und Vertraulichkeit (confidentiality) können als duale Probleme betrachtet werden, indem einfach festgelegt wird, dass es keinen Informationsfluss von ”hoch” nach ”niedrig” geben sollte, wobei ”hoch” in Bezug auf Unverfälschtheit ”nichtvertrauenswürdig” und in Bezug auf Vertraulichkeit ”geheim” bedeutet und ”niedrig” in Bezug auf Unverfälschtheit ”vertrauenswürdig” und in Bezug auf Vertraulichkeit ”öffentlich” bedeutet.
  • Informationen können mit Informationsfluss-Kennzeichen markiert werden. Informationsfluss-Kennzeichen bilden üblicherweise eine teilweise geordnete Menge oder sogar ein Netz. Wenn die Informationsfluss-Sicherheit streng durchgesetzt und kein unerlaubter Informationsfluss zugelassen werden würde, würden die meisten Programme nicht funktionieren. Damit ein Informationsfluss sicher wäre, müsste ein Programm ”partitioniert” werden, so dass Informationen, die mit einem bestimmten Kennzeichen ”/” markiert sind, lediglich zu Programmpunkten fließen können, die mit Kennzeichen markiert wurden, die höher als oder gleich ”/” sind. Es ist sehr unwahrscheinlich, dass ein Programm mit diesen Einschränkungen nützlich wäre. Vom Standpunkt der Unverfälschtheit wird z. B. angenommen, dass eine Netzanwendung Eingaben von potentiell nichtvertrauenswürdigen Benutzern akzeptiert und diese Eingaben bei vertrauenswürdigen Berechnungen verwendet. Ein Programm zum Online-Banking verwendet z. B. als Eingabe die Kontonummer und das Passwort eines Benutzers (potentiell nichtvertrauenswürdige oder fehlerhafte Informationen) und leitet sie zu dem nachgestellten Datenbanksystem, wo sie in einer vertrauenswürdigen Umgebung verwendet werden. In einem anderen Beispiel verwendet eine Online-Buchhandlung die Benutzerkennung und das Passwort des Kunden und den Titel des Buchs, das der Kunde kaufen möchte (alles potentiell nichtvertrauenswürdige oder fehlerhafte Informationen), und verwendet sie, um eine Transaktion auszuführen usw.
  • Vom Standpunkt der Vertraulichkeit gibt eine Netzanwendung häufig Daten aus, die auf der Grundlage von geheimen Informationen berechnet wurden und daher ebenfalls als geheim betrachtet werden sollten. Eine Banking-Anwendung kann z. B. die letzten vier Ziffern der Sozialversicherungsnummer eines Benutzers für jeden Bankangestellten einsehbar machen, eine Online-Buchhandlung kann die letzten vier Ziffern der Kreditkartennummer eines Kunden für jeden Verkäufer einsehbar machen usw. Unter der Voraussetzung, dass alle diese Programme Informationsflüsse enthalten, die zulassen, dass ”höherwertige” Informationen zu ”niederwertigen” Programmpunkten fließen, würden alle diese Programme zurückgewiesen werden, wenn die Sicherheit des Informationsflusses einfach durchgesetzt würde. Damit diese Programme funktionieren können, können ”höherwertige” Informationen ”herabgestuft” und in ausreichendem Maße ”niederwertig” werden, damit sie in ”niederwertigen” Programmpunkten verwendet werden können.
  • Herabstufung lässt sich in Bezug auf Unverfälschtheit als ”Aufwertung” und in Bezug auf Vertraulichkeit als ”Abwertung” übersetzen. Nachdem z. B. ein Programm festgestellt hat, dass die von Benutzer gelieferte Eingabe in eine Netzanwendung eine richtig formatierte Zeichenfolge ist, kann das Programm diese Eingabe aufwerten, die nun ausreichend sicher wird, damit sie in einer sicheren Berechnung verwendet werden kann. Nachdem ein Programm in ähnlicher Weise festgestellt hat, dass die aus einem Geheimnis gewonnenen Informationen nicht ausreichend sind, um das eigentliche Geheimnis preiszugeben, kann das Programm die gewonnenen Informationen abwerten, die nun in ausreichendem Maße öffentlich werden, damit sie für einen öffentlichen Empfänger einsehbar werden können. Tabelle 1: Sicherheit des Informationsflusses
    Unverfälschtheit Vertraulichkeit
    Hoch nichtvertauenswürdig geheim
    Niedrig vertrauenswürdig öffentlich
    Herabstufung Aufwertung Abwertung
  • Mit einem Programm sind viele Herabstufungseinrichtungen möglich. Ein Programm sollte keine ”höherwertige” Eingabe in eine ”niederwertige” Funktion akzeptieren, es sei denn, die ”höherwertige” Eingabe wurde zuvor herabgestuft. Eine Herabstufungseinrichtung ist ferner spezifisch für lediglich eine Teilmenge aus der Menge von ”niederwertigen” Funktionen. Eine ”niederwertige” Funktion in Bezug auf Unverfälschtheit, die z. B. eine Eingabe in Form einer Zeichenfolge akzeptiert, verknüpft diese Zeichenfolge zu einer Abfrage in einer strukturierten Abfragesprache (Structured Query Language – SQL) und übermittelt diese an eine Datenbank. Die Funktion wird fordern, dass ihre Eingabe keine Semikolons und Apostrophe enthält, da diese Zeichen durch die Datenbank als SQL-Befehle interpretiert werden. Deswegen sollten alle Eingaben in diese ”niederwertige” Funktion einer Bereinigung oder Aufwertung unterzogen worden sein, um sicherzustellen, dass keine derartigen unzulässigen Zeichen vorhanden sind.
  • Nur wenn eine vertrauenswürdige Bereinigungseinrichtung feststellt, dass keine derartigen unzulässigen Zeichen auftreten, wird diese anfangs nichtvertrauenswürdige Zeichenfolge für eine Verwendung in der SQL-Abfrage akzeptiert. Wenn jedoch die ”niederwertige” Funktion nicht für das Ausführen von SQL-Abfragen, sondern für das Verknüpfen ihrer Zeichenfolge-Eingabewerte im Code der HyperText Markup Language (HTML) verantwortlich ist, ist eine andere Bereinigung erforderlich. Das Problem besteht nicht mehr darin, SQL-Injektionen zu verhindern, sondern Angriffe im so genannten Cross-Site Scripting (XSS) zu verhindern. In diesem Fall muss die Bereinigungsfunktion prüfen, ob spezifische JavaScript-Markierungen wie etwa <script> und </script> nicht vorhanden sind.
  • Herabstufungseinrichtungen stehen häufig in Bibliotheken zur Verfügung und werden anhand der Beschreibung der entsprechenden ”niederwertigen” Funktionen kategorisiert. Bei Netzanwendungen kommen jedoch häufig deren eigenen Herabstufungsfunktionen zum Tragen. Das macht eine statische Analyse der Sicherheit von Netzanwendungen sehr komplex. Eine statische Analyse der Sicherheit des Informationsflusses sollte tatsächlich als Eingabe die Signatur der Herabstufungsfunktionen sowie Regeln, die Herabstufungsfunktionen auf die entsprechenden ”niederwertigen” Funktionen abbilden, empfangen. An diesem Punkt kann die statische Analyse feststellen, ob die Eingabe für eine ”niederwertige” Funktion bereits einer geeigneten Herabstufung unterzogen wurde, ohne dass ein Weg zu einer ”niederwertigen” Funktion führt, es sei denn, ihre Eingaben sind in geeigneter Weise herabgestuft worden. Wenn bei Netzanwendungen deren eigene Herabstufungseinrichtungen realisiert werden, ist es leider sehr schwierig, diese Herabstufungseinrichtungen zu erkennen und sie in einer solchen Weise zu kategorisieren, dass die statische Analyse der Sicherheit des Informationsflusses sie nachfolgend berücksichtigen kann.
  • Zu den Schwierigkeiten kann Folgendes gehören: 1. Wenn eine manuelle Codeprüfung verwendet wird, steht unter Umständen nicht der gesamte Quellencode zur Verfügung. Ein bestimmter Code kann von einer dritten Stelle hergestellt und verkauft worden sein. Deswegen ist eine manuelle Codeprüfung für ein Erkennen und Kategorisieren von Herabstufungseinrichtungen des Informationsflusses eventuell nicht möglich. Selbst wenn der gesamte Quellencode verfügbar ist, ist die manuelle Codeprüfung gegebenenfalls keine durchführbare Option, wenn ein großer Umfang des Codes geprüft werden muss. Eine manuelle Codeprüfung ist im Allgemeinen fehleranfällig, schwierig, zeitaufwändig und unzuverlässig. 2. Eine dynamische Analyse oder Prüfung könnte verwendet werden. Die Abdeckung der dynamischen Analyse hängt jedoch von der Vollständigkeit der verwendeten Prüffallfolge ab. Wenn die Folge von Prüffällen unvollständig ist, ist nicht garantiert, dass eine dynamische Analyse alle möglichen Herabstufungseinrichtungen, die von einer Anwendung verwendet werden, erkennt, sodass das Kategorisieren der Herabstufungseinrichtungen unvollständig sein wird.
  • ZUSAMMENFASSUNG
  • Ein System und ein Verfahren für das statische Erkennen und Kategorisieren von Herabstufungseinrichtungen des Informationsflusses enthalten das Transformieren eines Programms, das in einer Speichereinheit gespeichert ist, durch statisches Analysieren von Programmvariablen, um eine einzige Zuweisung zu jeder Variablen in einer Befehlsmenge zu erreichen. Die Befehlsmenge wird in Produktionsregeln bei Zeichenfolgenoperationen übersetzt. Eine kontextfreie Grammatik wird aus den Produktionsregeln erzeugt, um eine endliche Menge von Zeichenfolgen zu identifizieren. Eine Funktion einer Herabstufungseinrichtung für einen Informationsfluss wird durch Vergleichen der endlichen Menge von Zeichenfolgen mit einer oder mehreren Funktionsbeschreibungen erkannt.
  • Ein Verfahren für das statische Erkennen und Kategorisieren von Herabstufungseinrichtungen des Informationsflusses enthält das Transformieren eines Programms, das in einer Speichereinheit gespeichert ist, durch statisches Analysieren von Programmvariablen, um eine einzige Zuweisung zu jeder Variablen in einer Befehlsmenge zu erreichen. Die Befehlsmenge wird in Produktionsregeln mit Zeichenfolgenoperationen übersetzt. Eine Zeigeranalyse wird an den Produktionsregeln mit Zeichenfolgenoperationen ausgeführt, um die Genauigkeit zu verbessern. Eine kontextfreie Grammatik wird aus den Produktionsregeln erzeugt, um eine endliche Menge von Zeichenfolgen zu identifizieren. Die kontextfreie Grammatik wird mit einer Beschreibung einer sicherheitsempfindlichen Funktion verglichen, so dass dann, wenn die Grammatik der Beschreibung entspricht, die Eingabe als in geeigneter Weise herabgestuft betrachtet wird. Eine Zeichenfolge wird gekennzeichnet, um Zeichenfolgen manipulierende Funktionen zu lokalisieren, die eine Eingabe modifizieren und die Eingabe beschreibungskonform machen würden, um eine Funktion einer Herabstufungseinrichtung für einen Informationsfluss zu identifizieren und zu kategorisieren.
  • Ein System für das statische Erkennen und Kategorisieren von Herabstufungseinrichtungen des Informationsflusses enthält eine Programmspeichereinheit, die so eingerichtet ist, dass sie ein Programm speichern kann. Die Programmspeichereinheit ist so eingerichtet, dass sie in Verbindung mit einem Prozessor arbeiten kann, um Programmbefehle auszuführen, um Herabstufungseinrichtungen des Informationsflusses in dem Programm zu erkennen und zu kategorisieren. Eine statische Analyserahmenstruktur ist so eingerichtet, dass sie ein Anwendungsprogramm analysieren und eine statische Zeichenfolgenzuweisung an dem Anwendungsprogramm ausführen kann, um Programmvariable zu transformieren, um eine einzige Zuweisung für jede Variable in einer Befehlsmenge zu erreichen. Die Rahmenstruktur ist so eingerichtet, dass sie die Befehlsmenge in Produktionsregeln mit Zeichenfolgenoperationen übersetzen und eine kontextfreie Grammatik aus den Produktionsregeln erzeugen kann, um eine endliche Menge von Zeichenfolgen zu identifizieren. Ein Vergleichsmodul ist so eingerichtet, dass es die endliche Menge von Zeichenfolgen durch Vergleichen der endlichen Menge von Zeichenfolgen mit einer oder mehreren Funktionsspezifikationen erkennen und kategorisieren kann, um eine Funktion einer Herabstufungseinrichtung des Informationsflusses zu erkennen.
  • Diese und weitere Merkmale und Vorteile werden aus der folgenden genauen Beschreibung ihrer veranschaulichenden Ausführungsformen deutlich, die in Verbindung mit den beigefügten Zeichnungen zu lesen ist.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Offenbarung liefert Einzelheiten in der folgenden Beschreibung bevorzugter Ausführungsformen unter Bezugnahme auf die folgenden Zeichnungen, worin:
  • 1 ein Ablaufplan in Blockform ist, der ein System/Verfahren zur Zeichenfolgenanalyse gemäß einer veranschaulichenden Ausführungsform zeigt;
  • 2 ein Transducer-Schaubild für einen veranschaulichenden Transducer substring(_,2) ist;
  • 3 ein Ablaufplan in Blockform ist, der ein System/Verfahren zur Zeichenfolgenanalyse gemäß einer weiteren veranschaulichenden Ausführungsform zeigt;
  • 4 ein Aufruf-Graph zum Aufrufen einer Nappend-Routine gemäß einer veranschaulichenden Ausführungsform ist;
  • 5 ein Ablaufplan in Blockform ist, der ein System/Verfahren zum Erkennen und Kategorisieren von Herabstufungseinrichtungen gemäß einer veranschaulichenden Ausführungsform zeigt; und
  • 5 ein Blockschalt-/Ablaufplan ist, der ein System zum Erkennen und Kategorisieren von Herabstufungseinrichtungen gemäß den vorliegenden Prinzipien zeigt.
  • GENAUE BESCHREIBUNG BEVORZUGTER AUSFÜHRUNGSFORMEN
  • Ausführungsformen gemäß den vorliegenden Grundgedanken verwenden eine statische Zeichenfolgeanalyse zum automatischen Erkennen und Kategorisieren von Herabstufungseinrichtungen des Informationsflusses. Die Verwendung einer statischen Zeichenfolgeanalyse identifiziert Herabstufungseinrichtungen und kategorisiert sie anhand ihrer Verwendungszwecke. In einer veranschaulichenden Ausführungsform läuft die Analyse folgendermaßen ab. Für jede sicherheitsempfindliche Funktion in dem Programm wird die Zeichenfolgeanalyse verwendet, um die Grammatik(en) der Zeichenfolgeneingabe(n) für die Funktion zu erkennen. Dann wird die Grammatik mit einer Beschreibung der sicherheitsempfindlichen Funktion verglichen. Wenn die Grammatik der Beschreibung entspricht, bedeutet das, dass die Eingabe ordnungsgemäß herabgestuft wurde. In diesem Fall ist es unter Verwendung des Kennzeichnungsmerkmals der Zeichenfolgenanalyse möglich, die Zeichenfolgen manipulierenden Funktionen zu lokalisieren, die die Eingabe modifizieren und beschreibungskonform machen würden. Diese Funktionen bilden eine Herabstufungseinrichtung für die sicherheitsempfindliche Funktion. Die Beschreibung der sicherheitsempfindlichen Funktion kann ferner verwendet werden, um die neu entdeckte Herabstufungseinrichtung zu kategorisieren, was ein wichtiges Merkmal darstellt, vorausgesetzt, dass eine Herabstufungseinrichtung für eine sicherheitsempfindliche Funktion nicht für eine andere sicherheitsempfindliche Funktion funktionieren kann.
  • Es wird von einem Fachmann anerkannt, dass Aspekte der vorliegenden Erfindung als ein System, Verfahren oder Computerprogrammprodukt ausgeführt werden können. Dementsprechend können Aspekte der vorliegenden Erfindung die Form einer vollständigen Hardware-Ausführungsform, einer vollständigen Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform, die Software- und Hardware-Aspekte kombiniert, besitzen, die hier alle im Allgemeinen als ”Schaltung”, ”Modul” oder ”System” bezeichnet werden können. Ferner können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts besitzen, das sich auf einem oder mehreren computerlesbaren Medien befindet, die computerlesbaren Programmcode aufweisen, der darin enthalten ist.
  • Alle Kombinationen aus einem oder mehreren computerlesbaren Medien können verwendet werden. Das computerlesbare Medium kann ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium sein. Ein computerlesbares Speichermedium kann z. B. ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, Vorrichtung oder Einheit oder jede geeignete Kombination des Vorhergehenden sein, ohne darauf beschränkt zu sein. Zu weiteren spezifischen Beispielen (einer nicht erschöpfenden Liste) des computerlesbaren Speichermediums gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Arbeitsspeicher (RAM), ein Festwertspeicher (ROM), ein löschbarer programmierbarer Festwertspeicher (EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Kompaktdisk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine magnetische Speichereinheit oder jede geeignete Kombination des Vorhergehenden. Im Kontext dieses Dokuments kann ein computerlesbares Speichermedium jedes materielle Medium sein, das ein Programm für eine Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zur Ausführung von Befehlen enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein verbreitetes Datensignal enthalten, wobei darin z. B. im Basisband oder als Teil einer Trägerwelle computerlesbarer Programmcode enthalten ist. Ein derartiges verbreitetes Signal kann eine von einer Vielfalt von Formen, darunter eine elektromagnetische Form, eine optischen Form oder jede geeigneten Kombination hiervon besitzen, ohne jedoch auf diese beschränkt zu sein. Ein computerlesbares Signalmedium kann jedes computerlesbare Medium sein, das kein computerlesbares Speichermedium ist und ein Programm zur Verwendung durch oder in Verbindung mit einem System, einer Vorrichtung oder Einheit zur Ausführung von Befehlen übertragen, ausbreiten oder transportieren kann.
  • Programmcode, der sich auf einem computerlesbaren Medium befindet, kann unter Verwendung eines geeigneten Mediums, zu dem drahtlose, leitungsgebundene, Lichtwellenleiterkabel-, HF-Medien usw. zählen oder jede geeignete Kombination des Vorhergehenden übertragen werden.
  • Computerprogrammcode zum Ausführen von Operationen für Aspekte der vorliegenden Erfindung kann in jeder Kombination aus einer oder mehreren Programmiersprachen geschrieben sein, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ oder dergleichen und herkömmliche Prozedur-Programmiersprachen wie die Programmiersprache ”C” oder ähnliche Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als ein selbstständiges Softwarepaket teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jeden Typ von Netzwerk verbunden sein, darunter ein Lokalbereich-Netzwerk (LAN) oder ein Weitbereich-Netzwerk (WAN), oder die Verbindung kann (z. B. über das Internet unter Verwendung eines Internet-Dienstanbieters) mit einem externen Computer erfolgen.
  • Aspekte der vorliegenden Erfindung werden im Folgenden unter Bezugnahme auf Ablaufplan-Darstellungen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es ist klar, dass jeder Block von Ablaufplan-Darstellungen und/oder Blockschaubildern und Kombinationen von Blöcken der Ablaufplan-Darstellungen und/oder Blockschaubildern durch Computerprogrammbefehle ausgeführt werden kann. Diese Computerprogrammbefehle können an einen Prozessor eines Mehrzweck-Computers, eines speziellen Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung geliefert werden, um eine Maschine zu bilden, so dass die Befehle, die über den Prozessor des Computers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, Mittel zum Umsetzen der Funktionen/Wirkungen, die in dem Block oder den Blöcken des Ablaufplans und/oder des Blockschaubilds angegeben sind, erzeugen.
  • Diese Computerprogrammbefehle können außerdem in einem computerlesbaren Medium gespeichert sein, das einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder andere Einheiten anweisen kann, in der bestimmten Weise zu funktionieren, so dass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand produzieren, der Befehle, die die Funktion/Wirkung umsetzen, die in dem Block (den Blöcken) des Ablaufplans und/oder des Blockschaubilds angegeben sind, enthält.
  • Die Computerprogrammbefehle können außerdem auf einen Computer, andere programmierbare Datenverarbeitungsvorrichtungen oder andere Einheiten geladen werden, um zu bewirken, dass eine Reihe von Operationsschritten auf dem Computer, den anderen programmierbaren Vorrichtungen oder anderen Einheiten ausgeführt wird, so dass die Befehle, die auf dem Computer oder den anderen programmierbaren Vorrichtungen ausgeführt werden, Prozesse zum Umsetzen der Funktionen/Wirkungen, die in dem Block/den Blöcken des Ablaufplans und/oder des Blockschaubilds angegeben sind, bereitstellen.
  • Die Ablaufplan- und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Betriebsweise von möglichen Realisierungen der Systeme, Verfahren und Computerprogrammprodukten gemäß verschiedener Ausführungsformen der vorliegenden Erfindung. In dieser Hinsicht kann jeder Block in den Ablaufplan- oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt von Code repräsentieren, die einen oder mehrere ausführbare Befehle zum Ausführen der spezifizierten logischen Funktion(en) umfassen. Es sollte außerdem angemerkt werden, dass in einigen alternativen Ausführungsformen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. Zum Beispiel können zwei Blöcke, die nacheinander gezeigt sind, tatsächlich im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können gelegentlich in Abhängigkeit von der beteiligten Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es wird außerdem angemerkt, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen oder jede Kombinationen von Blöcken in der Blockschaubild- und/oder Ablaufplandarstellung durch auf spezielle hardwaregestützte Systeme realisiert werden kann, die die angegebenen Funktionen oder Wirkungen oder Kombinationen aus spezieller Hardware oder Computerbefehlen ausführen.
  • In den Zeichnungen, in denen gleiche Bezugszeichen gleiche oder ähnliche Elemente repräsentieren, und anfangs in 1 ist ein Ablaufplan in Blockform veranschaulichend gezeigt, der übersichtsmäßig Schritte zum Ausführen einer Zeichenfolgenanalyse gemäß den vorliegenden Grundgedanken zeigt. Zuerst wird im Block 102 ein Programm in eine kontextfreie Grammatik (CFG) mit Zeichenfolgenoperationen übersetzt (siehe z. B. Yasuhiko Minamide, "Static approximation of dynamically generated web pages", "Proceedings of the 14th international conference an World Wide Web (WWW'05), 2005). Dann werden im Block 104 durch Anwenden von Funktionen über CFGs die Zeichenfolgenoperationen aus den Produktionsregeln entfernt. Diese Funktionen, die als angenäherte Zeichenfolgenoperationen bezeichnet werden, entsprechen jeweils den Zeichenfolgenoperationen in dem Programm. Die Anwendung der angenäherten Zeichenfolgenoperationen erfolgt iterierend, bis keine Zeichenfolgenoperationen in den Produktionsregeln vorhanden sind. Schließlich erhält man im Block 106 die kontextfreie Grammatik, die die Produktionsregeln ohne Zeichenfolgenoperationen enthält.
  • Es soll das folgende Java-Programm betrachtet werden, das an die der Variable a zugewiesene Zeichenfolge nach dem Initialisieren mit ”a” dreimal ”a” anfügt.
  • Figure 00150001
  • Man erhält die folgende CFG durch Übersetzen jeder Programmvariable v in ein nichtletztes Sv und = in → wie in Produktionsregeln, wobei einfach die Zeichenfolgenverknüpfung durch + als die Zeichenfolgenverknüpfung in der CFG betrachtet wird.
    Sa → a
    Sa → Saa
    Sr → Sa
  • Die CFG mit dem Anfangssymbol Sa repräsentiert z. B. eine Menge möglicher Zeichenfolgenwerte, die der Programmvariablen a zugewiesen sind, die zu der Menge von Zeichenfolgen {”a”, ”aa”, ”aaa”, ”aaaa”, ...} führt, und Sr repräsentiert gleichfalls eine Menge möglicher Zeichenfolgenwerte, die der Programmvariablen r zugewiesen sind. Sie enthält Zeichenfolgen, die niemals der Variablen a und r zugewiesen sind, da die Zeichenfolgenanalyse die Bedingung für die Anweisung „for” ab sofort ignoriert.
  • Wenn im Block 104 ein Programm vorhanden ist, das im Voraus definierte Zeichenfolgenoperationen wie etwa String.substring wie im folgenden Programm gezeigt, verwendet, wird für jede Zeichenfolgenoperation zum Übersetzen einer CFG in eine CFG eine Komplettnäherung verwendet.
  • Figure 00160001
  • Komplettheit bedeutet, dass eine resultierende CFG, die durch die Zeichenfolgenanalyse berechnet wird, alle gegenwärtigen Zeichenfolgen enthält, die zur Laufzeit auftreten. Komplettheit kann formal wie folgt definiert werden: f ist eine Komplettnäherung für eine Zeichenfolgenoperation f, wenn S' ⊆ f(S), wobei S' = (s'|s' = f(s), s ∊ S). Eines der Verfahren zum Annähern im Voraus definierter Zeichenfolgenoperation besteht in der Verwendung eines Transducers, der ein Automat mit Ausgabe ist. Es ist allgemein bekannt, dass die Abbildung eines Transducers ebenfalls eine CFG ist. Weitere Verfahren sind Homomorphismen auf (Σ, +), wobei Σ eine Menge von Zeichen ist und + eine Verknüpfungsfunktion bezeichnet, die stets zur gleichen CFG zurückkehrt, was alle möglichen Zeichenfolgen ergibt, die durch die entsprechenden im Voraus definierten Zeichenfolgenoperationen zurückgeführt werden usw. Die folgenden Produktionsregeln mit der genäherten Zeichenfolgenoperation substring(_, 2) sind diejenigen, die aus dem obigen Programm erhalten werden.
    Sa → xxa
    Sa → Saa
    Sr → substring(Sa, 2)
  • In 2 ist ein Transducer 200 erläuternd dargestellt. Eine genäherte Zeichenfolgenoperation substring(_, 2) ist durch den Transducer 200 definiert und ist eine Komplettnäherung für die Zeichenfolgenoperation _.substring(2). Durch Anwenden dieses Transducers 200 auf die Grammatik erhält man die folgende CFG, die die Menge {”a”, ”aa”, ”aaa”, ”aaaa”, ...} repräsentiert.
    S'a → a
    S'a → S'aa
    Sr→ S'a
  • In 2 repräsentiert A ein beliebiges Zeichen, während A/ε eine Transformation jedes Zeichens zum Leerzeichen repräsentiert, was ein Entfernen des Zeichens bedeutet.
  • Im Block 106 gibt es keine Zeichenfolgenoperation in den Produktionsregeln. Somit ist eine kontextfreie Grammatik, die die resultierenden Produktionsregeln enthält, das Ergebnis der Zeichenfolgenanalyse.
  • In 3 wird eine bevorzugte Ausführungsform zum Ausführen einer statischen Zeichenfolgenanalyse (SSA) gemäß den vorliegenden Grundgedanken beschrieben. Die angegebene Beschreibung beschäftigt sich mit einer innerprozeduralen Zeichenfolgenanalyse und erklärt anschließend, wie diese auf eine interprozedurale Zeichenfolgenanalyse zu erweitern ist. Bei den dargestellten Einzelheiten der Ausführung wird angenommen, dass die Zeichenfolgenanalyse auf einer Rahmenstruktur der statischen Analyse realisiert wurde. Bei der verwendeten Rahmenstruktur der statischen Analyse kann es sich um jede bekannte Rahmenstruktur handeln, und sie kann z. B. die Watson-Bibliotheken zur Analyse (WALA) enthalten, die als Produkt einer offenen Quelle von http://wala.sourceforge.net zur Verfügung stehen.
  • Um die innerprozedurale Zeichenfolgenanalyse zu beschreiben, soll ein Nappend-Verfahren in JavaTM wie folgt betrachtet werden:
    Figure 00180001
  • Im Block 302 erfolgt eine Übersetzung eines Programms in die Form der statischen Einzelzuweisung (SSA, Static Single Assignment), bei der Pseudo-Notationen für Befehle verwendet werden. Eine beispielhafte Übersetzung wird veranschaulichend wie folgt gezeigt:
    Figure 00180002
  • Ein Aufruf-Graph für dieses Programm ist in 4 dargestellt. Pseudo-Notationen, die für Befehle in dem obigen Programm verwendet werden, enthalten v = val für eine Zuweisung eines Werts val zu einer Variable oder einem Feld v, v = vobj.func(v1, ..., vn) für einen Verfahrensaufruf mit Argumenten v1, ..., vn, goto N für einen unbedingten Sprung zum Kennzeichen N, goto N if v für einen bedingten Sprung zum Kennzeichen N durch die Bedingung V. Außerdem führt die SSA-Transformation neue Variable und eine ϕ-Funktion ein, die durch phi (v1, v2) bezeichnet wird, um ein Programm zu erhalten, das lediglich eine Zuweisung zu jeder Variable aufweist. Diese Eigenschaft der SSA-Form ist geeignet, Daten-Abhängigkeiten zu finden.
  • Im Block 304 werden die Zuweisungen in SSA-Form in eine Menge von Produktionsregeln mit Zeichenfolgenoperationen 306 mit Ausnahme von bedingten und unbedingten Sprüngen in der gleichen Weise wie oben beschrieben (1) übersetzt. Insbesondere wird v = phi(v1, v2) in zwei Produktionsregeln Sv → Sv1 und Sv → Sv2 übersetzt, damit sie eine Vereinigung der beiden Mengen von Zeichenfolgen repräsentieren, die v1 bzw. v2 zugewiesen sind. Gemäß dieser Übersetzung erhält man die folgenden Produktionsregeln aus der Pseudo-SSA-Form des Nappend-Verfahrens.
    Sv1 → SxSy
    Sr 1 → nappend(Sv1, Sy, n – 1)
    Sr1 → Sx
    Sr → Sr1
    Sr → Sr2
  • Für die interprozedurale Zeichenfolgenanalyse wird die innerprozedurale Zeichenfolgenanalyse mit den Informationen des Aufruf-Graphen, der durch WALA aufgebaut ist, erweitert, deren Kontextempfindlichkeit durch bekannte Verfahren flexibel kontrolliert werden kann. Man annotiert jede Variable in dem SSA-Programm mit einem Knoten des Aufruf-Graphen. Man kombiniert alle Produktionsregeln nach dem Entfernen von Produktionsregeln, die aus Verfahrensaufrufen übersetzt wurden wie z. B. Sr 1 → nappend(Sv1, Sy, n – 1). Man führt Produktionsregeln ein, die Abhängigkeiten zwischen den Parametern und dem Rückkopplungswert eines Verfahrens des Aufgerufenen und den Variablen eines Verfahrens des Aufrufenden repräsentieren. Es werden z. B. die folgenden Produktionsregeln eingeführt, wenn ein kontextunempfindlicher Aufruf-Graph 400 wie in 4 gezeigt vorhanden ist, wobei der obere Index jedes nichtletzten Zeichens den entsprechenden Knoten des Aufruf-Graphen repräsentiert. Die Produktionsregeln lauten:
  • Figure 00200001
  • Eine vollständige Menge der Produktionsregeln mit Zeichenfolgenoperationen 306, die vom Programm erhalten werden, enthält:
  • Figure 00200002
  • Eine optionale Zeigeranalyse kann ausgeführt werden, um den Zeichenfolgenanalysator oder die Lösungseinrichtung 308 zu unterstützen, um zu erkennen, wie konstante Zeichenfolgen über Verfahren zu Variablen fließen und um zu erkennen, ob gleiche Objekte in potentiell verschiedenen Verfahren unterschiedlichen Variablen zugewiesen sind, selbst wenn diese Objekte dynamisch erzeugt werden. Im Block 310 erhält man dann die folgende CFG, die mögliche Zeichenfolgen vorhersagt, die in dem Hauptverfahren der Variable r zugewiesen sind, wobei das Anfangssymbol Sr 1 ist.
    Sr 1 → a|Sr 1b
  • In 5 stellt ein Ablaufplan in Blockform ein System und Verfahren für ein statisches Erkennen und Kategorisieren von Herabstufungseinrichtung des Informationsflusses gemäß den vorliegenden Grundgedanken erläuternd dar. Im Block 502 wird ein in einer Speichereinheit gespeichertes Programm durch statisches Analysieren von Programmvariablen transformiert, um eine einzige Zuweisung zu jeder Variable in einer Befehlsmenge zu erreichen. Dies beinhaltet das Transformieren des Programms durch die Verwendung von Pseudo-Notationen für die Zuweisung von Programmvariablen.
  • Im Block 504 wird die Befehlsmenge in Produktionsregeln mit Zeichenfolgenoperation übersetzt. Im Block 506 wird optional eine Zeigeranalyse an den Produktionsregeln mit Zeichenfolgenoperation ausgeführt, um die Genauigkeit zu verbessern. Im Block 508 wird eine kontextfreie Grammatik aus den Produktionsregeln erzeugt, um eine endliche Menge von Zeichenfolgen zu erkennen. Ein Kleene-Stern-Operator kann verwendet werden, um die endliche Menge von Zeichenfolgen zu erkennen.
  • Im Block 510 wird eine Funktion der Herabstufungseinrichtung des Informationsflusses durch Vergleichen der endlichen Menge von Zeichenfolgen mit einer oder mehreren Funktionsbeschreibungen erkannt. Die eine oder mehreren Funktionen enthalten vorzugsweise eine sicherheitsempfindliche Funktion in dem Programm. Diese kann das Erkennen und Kategorisieren der Funktionen der Herabstufungseinrichtung anhand eines Zwecks der Funktion der Herabstufungseinrichtung enthalten.
  • Im Block 512 wird die kontextfreie Grammatik vorzugsweise mit einer Beschreibung einer sicherheitsempfindlichen Funktion verglichen, so dass dann, wenn die Grammatik der Beschreibung entspricht, die Eingabe als ordnungsgemäß herabgestuft betrachtet wird. Im Block 514 wird eine Zeichenfolge gekennzeichnet, um Zeichenfolgen manipulierende Funktionen zu lokalisieren, die eine Eingabe modifizieren und die Eingabe beschreibungskonform machen würden, um die Funktion der Herabstufungseinrichtung des Informationsflusses zu identifizieren und kategorisieren. Die eine oder mehreren Funktionsbeschreibungen werden verwendet, um die Funktion der Herabstufungseinrichtung zu kategorisieren. Die Funktion der Herabstufungseinrichtung kann durch eine Netzanwendung oder jede andere Entität erzeugt werden, die Sicherheitsstufen verwendet, um ihre Netztransaktionen zu behandeln.
  • In 6 ist ein System 600 für ein statisches Erkennen und Kategorisieren von Herabstufungseinrichtungen des Informationsflusses veranschaulichend dargestellt. Eine Programmspeichereinheit oder Speichereinheit 602 kann ein Computer-Festplattenlaufwerk oder andere Computermedien enthalten und ist so eingerichtet, dass sie ein Programm speichern 604 kann. Die Programmspeichereinheit 602 ist ferner so eingerichtet, dass sie in Verbindung mit einem Prozessor 606 in einer Computereinheit 601 arbeiten kann, um Programmbefehle auszuführen, um in dem Programm 604 Herabstufungseinrichtungen des Informationsflusses zu erkennen und zu kategorisieren. Eine Rahmenstruktur 608 zur statischen Analyse, die einem Server, einem Großrechner oder jeder anderen Datenverarbeitungseinheit zugehörig sein kann, ist so eingerichtet, dass sie ein Anwendungsprogramm analysieren und eine statische Zeichenfolgenzuweisung an dem Anwendungsprogramm ausführen kann, um Programmvariable zu transformieren, um eine einzige Zuweisung für jede Variable in einer Befehlsmenge zu erreichen. Die Rahmenstruktur 608 ist so eingerichtet, dass sie die Befehlsmenge in Produktionsregeln mit Zeichenfolgenoperationen übersetzen und aus den Produktionsregeln eine kontextfreie Grammatik erzeugen kann, die einen Kleene-Stern-Operator verwenden kann, um eine endliche Menge von Zeichenfolgen zu identifizieren. Ein Vergleichsmodul 610 ist so eingerichtet, dass es die endliche Menge von Zeichenfolgen erkennen und kategorisieren kann, indem die endliche Menge mit einer oder mehreren Funktionsbeschreibungen verglichen wird, um eine Funktion der Herabstufungseinrichtung für einen Informationsfluss zu erkennen.
  • Das Vergleichsmodul 610 vergleicht die kontextfreie Grammatik (CFG) mit einer Beschreibung 612 einer sicherheitsempfindlichen Funktion, so dass dann, wenn die Grammatik der Beschreibung entspricht, die Eingabe als ordnungsgemäß herabgestuft betrachtet wird. Eine Bezeichnungseinrichtung 614 ist eingerichtet, um eine Zeichenfolge zu kennzeichnen, um Zeichenfolgen manipulierende Funktionen zu lokalisieren, die die Eingabe modifizieren und die Eingabe beschreibungskonform machen würden. Diese Funktionen bilden eine Herabstufungseinrichtung für die sicherheitsempfindliche Funktion. Ferner kann die Beschreibung der sicherheitsempfindlichen Funktion verwendet werden, um die neu entdeckte Herabstufungseinrichtung zu kategorisieren, was unter der Voraussetzung, dass eine Herabstufungseinrichtung für eine sicherheitsempfindliche Funktion für eine andere sicherheitsempfindliche Funktion nicht funktionieren kann, ein wichtiges Merkmal darstellt. Die Funktionen der Herabstufungseinrichtung, die durch eine Entität wie etwa eine Netzanwendung, sichere Netzeinheiten, zugangsgesteuerte Einheiten usw. erzeugt werden, werden dadurch erkannt und kategorisiert.
  • Das analysierte Programm kann mit dem System 600 gemeinsam angeordnet oder von dem System 600 entfernt angeordnet sein. Ein Programm 603 kann nach Herabstufungseinrichtungen analysiert werden, die über ein Netz von einem Server oder einer Netzanwendung 620 bereitgestellt werden. Die Server oder Netzanwendungen können an einem einzigen Ort angeordnet oder über ein gesamtes Netz 622 verteilt sein.
  • Nachdem bevorzugte Ausführungsformen eines Systems und Verfahrens zum statischen Erkennen und Kategorisieren von Herabstufungseinrichtungen des Informationsflusses beschrieben wurden (die veranschaulichend und nicht einschränkend sein sollen), wird angemerkt, dass Modifikationen und Variationen im Licht der obigen Erkenntnisse durch einen Fachmann auf dem Gebiet gemacht werden können. Es sollte deswegen klar sein, dass an den beschriebenen bestimmten Ausführungsformen, die im Umfang der Erfindung liegen, der durch die beigefügten Ansprüche hervorgehoben wird, Änderungen ausgeführt werden können. Nachdem auf diese Weise Aspekte der Erfindung mit den Einzelheiten und Besonderheiten, die durch die Patentgesetze gefordert werden, beschrieben wurden, wird das, was beansprucht und durch die Patentschrift geschützt werden soll, in den angefügten Ansprüchen dargestellt.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • Yasuhiko Minamide, ”Static approximation of dynamically generated web pages”, ”Proceedings of the 14th international conference an World Wide Web (WWW'05), 2005 [0031]

Claims (24)

  1. Verfahren zum statischen Erkennen und Kategorisieren von Herabstufungseinrichtungen eines Informationsflusses, umfassend: Transformieren (502) eines Programms, das in einer Speichereinheit gespeichert ist, durch statisches Analysieren von Programmvariablen, um eine einzige Zuweisung für jede Variable in einer Befehlsmenge zu erhalten; Übersetzen (504) der Befehlsmenge in Produktionsregeln mit Zeichenfolgenoperationen, um eine endliche Menge von Zeichenfolgen zu erkennen; Erzeugen (508) einer kontextfreien Grammatik aus den Produktionsregeln; und Erkennen (510) einer Funktion der Herabstufungseinrichtung des Informationsflusses durch Vergleichen der endlichen Menge von Zeichenfolgen mit einer oder mehreren Funktionsbeschreibungen.
  2. Verfahren nach Anspruch 1, wobei das Erkennen (510) das Erkennen und Kategorisieren der Funktionen der Herabstufungseinrichtung anhand eines Zwecks der Funktion der Herabstufungseinrichtung enthält.
  3. Verfahren nach Anspruch 1, wobei die eine oder mehreren Funktionen eine sicherheitsempfindliche Funktion in dem Programm enthalten.
  4. Verfahren nach Anspruch 1, das ferner das Vergleichen (512) der kontextfreien Grammatik mit einer Beschreibung der sicherheitsempfindlichen Funktion umfasst, so dass dann, wenn die Grammatik der Beschreibung entspricht, die Eingabe als ordnungsgemäß herabgestuft betrachtet wird.
  5. Verfahren nach Anspruch 4, das ferner das Kennzeichnen (514) einer Zeichenfolge umfasst, um Zeichenfolgen manipulierende Funktionen zu lokalisieren, die die Eingabe modifizieren und die Eingabe beschreibungskonform machen würden.
  6. Verfahren nach Anspruch 1, wobei die eine oder mehreren Funktionsbeschreibungen verwendet werden, um die Funktion der Herabstufungseinrichtung zu kategorisieren.
  7. Verfahren nach Anspruch 1, wobei das Transformieren (502) des Programms das Transformieren des Programms durch das Verwenden von Pseudo-Notationen für Zuweisungen von Programmvariablen enthält.
  8. Verfahren nach Anspruch 1, wobei die Funktion der Herabstufungseinrichtung durch eine Netzanwendung erzeugt wird.
  9. Computerlesbares Speichermedium, das ein computerlesbares Programm für das statische Erkennen und Kategorisieren von Herabstufungseinrichtungen des Informationsflusses umfasst, wobei das computerlesbare Programm, wenn es auf einem Computer ausgeführt wird, den Computer veranlasst, die folgenden Schritte auszuführen: Transformieren (502) eines Programms, das in einer Speichereinheit gespeichert ist, durch statisches Analysieren von Programmvariablen, um eine einzige Zuweisung für jede Variable in einer Befehlsmenge zu erhalten; Übersetzen (504) der Befehlsmenge in Produktionsregeln mit Zeichenfolgenoperationen; Erzeugen (508) einer kontextfreien Grammatik aus den Produktionsregeln, um eine endliche Menge von Zeichenfolgen zu erkennen; und Erkennen (510) einer Funktion der Herabstufungseinrichtung des Informationsflusses durch Vergleichen der endlichen Menge von Zeichenfolgen mit einer oder mehreren Funktionsbeschreibungen.
  10. Computerlesbares Speichermedium nach Anspruch 9, wobei das Erkennen (510) das Erkennen und Kategorisieren der Funktionen der Herabstufungseinrichtung anhand eines Zwecks der Funktion der Herabstufungseinrichtung enthält.
  11. Computerlesbares Speichermedium nach Anspruch 9, wobei die eine oder mehreren Funktionen eine sicherheitsempfindliche Funktion in dem Programm enthalten.
  12. Computerlesbares Speichermedium nach Anspruch 9, das ferner das Vergleichen (512) der kontextfreien Grammatik mit einer Beschreibung der sicherheitsempfindlichen Funktion umfasst, so dass dann, wenn die Grammatik der Beschreibung entspricht, die Eingabe als ordnungsgemäß herabgestuft betrachtet wird.
  13. Computerlesbares Speichermedium nach Anspruch 12, das ferner das Bezeichnen (514) einer Zeichenfolge umfasst, um Zeichenfolgen manipulierende Funktionen zu lokalisieren, die die Eingabe modifizieren und die Eingabe beschreibungskonform machen würden.
  14. Computerlesbares Speichermedium nach Anspruch 9, wobei die eine oder mehreren Funktionsbeschreibungen verwendet werden, um die Herabstufungseinrichtung zu kategorisieren.
  15. Computerlesbares Speichermedium nach Anspruch 9, wobei das Transformieren (502) des Programms das Transformieren des Programms durch das Verwenden von Pseudo-Notationen für Zuweisungen von Programmvariablen enthält.
  16. Verfahren zum statischen Erkennen und Kategorisieren von Herabstufungseinrichtungen des Informationsflusses, wobei das Verfahren Folgendes umfasst: Transformieren (502) eines Programms, das in einer Speichereinheit gespeichert ist, durch statisches Analysieren von Programmvariablen, um eine einzige Zuweisung für jede Variable in einer Befehlsmenge zu erhalten; Übersetzen (504) der Befehlsmenge in Produktionsregeln mit Zeichenfolgenoperationen; Ausführen (506) einer Zeigeranalyse an den Produktionsregeln mit Zeichenfolgenoperationen, um die Genauigkeit zu verbessern; Erzeugen (508) einer kontextfreien Grammatik aus den Produktionsregeln, um eine endliche Menge von Zeichenfolgen zu erkennen; Vergleichen (512) der kontextfreien Grammatik mit einer Beschreibung einer sicherheitsempfindlichen Funktion, so dass dann, wenn die Grammatik der Beschreibung entspricht, die Eingabe als ordnungsgemäß herabgestuft betrachtet wird; und Bezeichnen (514) einer Zeichenfolge, um Zeichenfolgen manipulierende Funktionen zu lokalisieren, die die Eingabe modifizieren und die Eingabe beschreibungskonform machen würden, um eine Funktion einer Herabstufungseinrichtung des Informationsflusses zu erkennen und zu kategorisieren.
  17. Verfahren nach Anspruch 16, wobei das Transformieren (502) des Programms das Transformieren des Programms durch Verwenden von Pseudo-Notationen für die Zuweisung von Programmvariablen enthält.
  18. Verfahren nach Anspruch 17, wobei die Funktion der Herabstufungseinrichtung durch eine Netzanwendung erzeugt wird.
  19. System zum statischen Erkennen und Kategorisieren von Herabstufungseinrichtung des Informationsflusses, wobei das System Folgendes umfasst: eine Programmspeichereinheit (602), die so eingerichtet ist, dass sie ein Programm speichern kann, wobei die Programmspeichereinheit ferner so eingerichtet ist, dass sie in Verbindung mit einem Prozessor (606) arbeiten kann, um Programmbefehle auszuführen, um Herabstufungseinrichtungen des Informationsflusses in dem Programm zu erkennen und zu kategorisieren; eine Rahmenstruktur (608) zur statischen Analyse, die eingerichtet ist, dass sie ein Anwendungsprogramm analysieren und eine statische Zeichenfolgenzuweisung an dem Anwendungsprogramm ausführen kann, um Programmvariable zu transformieren, um eine einzige Zuweisung für jede Variable in einer Befehlsmenge zu erreichen, wobei die Rahmenstruktur so eingerichtet ist, dass sie die Befehlsmenge in Produktionsregeln mit Zeichenfolgenoperationen übersetzen und eine kontextfreie Grammatik aus den Produktionsregeln erzeugen kann, um eine endliche Menge von Zeichenfolgen zu erkennen; und ein Vergleichsmodul (610), das so eingerichtet ist, dass es die endliche Menge von Zeichenfolgen erkennen und kategorisieren kann durch Vergleichen der endlichen Menge von Zeichenfolgen mit einer oder mehreren Funktionsbeschreibungen, um eine Funktion der Herabstufungseinrichtung des Informationsflusses zu erkennen.
  20. System nach Anspruch 19, wobei die Funktionen der Herabstufungseinrichtung anhand eines Zwecks der Funktion der Herabstufungseinrichtung kategorisiert werden.
  21. System nach Anspruch 19, wobei die eine oder mehreren Funktionen eine sicherheitsempfindliche Funktion in dem Programm enthalten.
  22. System nach Anspruch 19, wobei das Vergleichsmodul (610) die kontextfreie Grammatik mit einer Beschreibung einer sicherheitsempfindlichen Funktion vergleicht, so dass dann, wenn die Grammatik der Beschreibung entspricht, die Eingabe als ordnungsgemäß herabgestuft betrachtet wird.
  23. System nach Anspruch 23, das ferner eine Bezeichnungseinrichtung (614) umfasst, die so eingerichtet ist, dass sie eine Zeichenfolge bezeichnen kann, um Zeichenfolgen manipulierende Funktionen zu lokalisieren, die die Eingabe modifizieren und die Eingabe beschreibungskonform machen würden.
  24. System nach Anspruch 19, wobei die Funktion der Herabstufungseinrichtung durch eine Netzanwendung erzeugt wird.
DE112010003979T 2009-10-08 2010-07-30 System und Verfahren für das statische Erkennen und Kategorisieren von Informationsfluss-Herabstufungseinrichtungen Ceased DE112010003979T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/575,647 2009-10-08
US12/575,647 US9275246B2 (en) 2009-10-08 2009-10-08 System and method for static detection and categorization of information-flow downgraders
PCT/US2010/043835 WO2011043856A1 (en) 2009-10-08 2010-07-30 System and method for static detection and categorization of information-flow downgraders

Publications (1)

Publication Number Publication Date
DE112010003979T5 true DE112010003979T5 (de) 2013-04-25

Family

ID=43855839

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112010003979T Ceased DE112010003979T5 (de) 2009-10-08 2010-07-30 System und Verfahren für das statische Erkennen und Kategorisieren von Informationsfluss-Herabstufungseinrichtungen

Country Status (5)

Country Link
US (2) US9275246B2 (de)
CN (1) CN102741837B (de)
DE (1) DE112010003979T5 (de)
GB (1) GB2486864A (de)
WO (1) WO2011043856A1 (de)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635602B2 (en) * 2010-07-26 2014-01-21 International Business Machines Corporation Verification of information-flow downgraders
US20120102474A1 (en) * 2010-10-26 2012-04-26 International Business Machines Corporation Static analysis of client-server applications using framework independent specifications
US8667584B2 (en) * 2010-12-15 2014-03-04 International Business Machines Corporation Formal analysis of the quality and conformance of information flow downgraders
US9158919B2 (en) * 2011-06-13 2015-10-13 Microsoft Technology Licensing, Llc Threat level assessment of applications
US8769696B2 (en) * 2011-09-29 2014-07-01 International Business Machines Corporation Automated detection of flaws and incompatibility problems in information flow downgraders
US8694971B2 (en) * 2011-10-05 2014-04-08 International Business Machines Corporation Scalable property-sensitive points-to analysis for program code
US9460282B2 (en) 2012-09-12 2016-10-04 International Business Machines Corporation Static security analysis using a hybrid representation of string values
US8984495B2 (en) 2013-01-03 2015-03-17 International Business Machines Corporation Enhanced string analysis that improves accuracy of static analysis
US8990949B2 (en) 2013-02-15 2015-03-24 International Business Machines Corporation Automatic correction of security downgraders
WO2016053282A1 (en) * 2014-09-30 2016-04-07 Hewlett Packard Enterprise Development Lp String property labels for static analysis
US10320633B1 (en) 2014-11-20 2019-06-11 BloomReach Inc. Insights for web service providers
US11663110B2 (en) * 2016-10-31 2023-05-30 International Business Machines Corporation Analysis to check web API code usage and specification
CN108319854B (zh) * 2017-12-29 2020-09-11 上海瑞家信息技术有限公司 一种增量代码静态扫描方法、设备及计算机可读存储介质
US10678678B1 (en) * 2018-03-12 2020-06-09 Amazon Technologies, Inc. Ordered test execution based on test coverage
CN111045679B (zh) * 2019-01-09 2024-02-23 国家计算机网络与信息安全管理中心 一种sql注入的检测和防御方法、装置及存储介质
CN113377435A (zh) * 2021-06-16 2021-09-10 哈尔滨岛田大鹏工业股份有限公司 一种发那科机器人控制系统的扩展方法

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6064820A (en) * 1998-05-27 2000-05-16 Hewlett-Packard Company Apparatus and method to incrementally update single static assignment (SSA) form
US7191252B2 (en) 2000-11-13 2007-03-13 Digital Doors, Inc. Data security system and method adjunct to e-mail, browser or telecom program
US7103915B2 (en) * 2000-11-13 2006-09-05 Digital Doors, Inc. Data security system and method
US7140044B2 (en) * 2000-11-13 2006-11-21 Digital Doors, Inc. Data security system and method for separation of user communities
US7117488B1 (en) * 2001-10-31 2006-10-03 The Regents Of The University Of California Safe computer code formats and methods for generating safe computer code
US7512071B2 (en) * 2004-06-15 2009-03-31 Sun Microsystems, Inc. Distributed flow enforcement
US7574703B2 (en) * 2004-09-30 2009-08-11 Broadcom Corporation Method and apparatus for reducing instruction dependencies in extended SSA form instructions
US8140664B2 (en) * 2005-05-09 2012-03-20 Trend Micro Incorporated Graphical user interface based sensitive information and internal information vulnerability management system
US7694288B2 (en) * 2005-10-24 2010-04-06 Analog Devices, Inc. Static single assignment form pattern matcher
US7512792B2 (en) * 2005-12-15 2009-03-31 International Business Machines Corporation Reference monitor method for enforcing information flow policies
US7933925B2 (en) * 2006-06-01 2011-04-26 International Business Machines Corporation System and method for role based analysis and access control
US8091128B2 (en) * 2006-09-14 2012-01-03 Ntt Docomo, Inc. Information flow enforcement for RISC-style assembly code in the presence of timing-related covert channels and multi-threading
US8266702B2 (en) * 2006-10-31 2012-09-11 Microsoft Corporation Analyzing access control configurations
US20080184208A1 (en) * 2007-01-30 2008-07-31 Sreedhar Vugranam C Method and apparatus for detecting vulnerabilities and bugs in software applications
US7530107B1 (en) * 2007-12-19 2009-05-05 International Business Machines Corporation Systems, methods and computer program products for string analysis with security labels for vulnerability detection
US8695056B2 (en) * 2008-01-26 2014-04-08 International Business Machines Corporation Method for information tracking in multiple interdependent dimensions
US8327339B2 (en) * 2008-06-30 2012-12-04 Oracle America, Inc. Method and system for fast static taint analysis
US8572674B2 (en) * 2008-08-13 2013-10-29 International Business Machines Corporation System, method, and apparatus for modular, string-sensitive, access rights analysis with demand-driven precision
US8955155B1 (en) * 2013-03-12 2015-02-10 Amazon Technologies, Inc. Secure information flow

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Yasuhiko Minamide, "Static approximation of dynamically generated web pages", "Proceedings of the 14th international conference an World Wide Web (WWW'05), 2005

Also Published As

Publication number Publication date
CN102741837B (zh) 2015-12-02
GB201207223D0 (en) 2012-06-06
US20160156650A1 (en) 2016-06-02
WO2011043856A1 (en) 2011-04-14
GB2486864A (en) 2012-06-27
CN102741837A (zh) 2012-10-17
US20110088023A1 (en) 2011-04-14
US9275246B2 (en) 2016-03-01
US10742666B2 (en) 2020-08-11

Similar Documents

Publication Publication Date Title
DE112010003979T5 (de) System und Verfahren für das statische Erkennen und Kategorisieren von Informationsfluss-Herabstufungseinrichtungen
DE112012002718B4 (de) Erkennen von Sicherheitsschwachstellen in Web-Anwendungen
DE102020110536A1 (de) Verfahren, Systeme, Herstellungsgegenstände und Vorrichtungen für ein kontext- und komplexitätsbewusstes Empfehlungssystem zur verbesserten Softwareentwicklungseffizienz
Koc et al. Learning a classifier for false positive error reports emitted by static code analysis tools
US10198580B2 (en) Behavior specification, finding main, and call graph visualizations
Beyer et al. A manual categorization of android app development issues on stack overflow
US20160342501A1 (en) Accelerating Automated Testing
DE112018002984T5 (de) Konformitätsbewusste Laufzeiterzeugung auf Grundlage von Anwendungsmustern und Risikobeurteilung
DE112012000279T5 (de) Ermitteln der Anfälligkeit von Computer-Software-Anwendungen gegenüber Rechteausweitungsangriffen
DE102021133809A1 (de) Verfahren und vorrichtung zur automatischen detektion von softwarefehlern
DE102012216841A1 (de) Verfahren und Vorrichtung zur Durchführung von Sicherheitstests hinsichtlich von Protokollimplementierungen
DE102012216597A1 (de) Wirksames Testen einer Berechtigungslogik von WEB-Komponenten, die eine Berechtigung auf der Grundlage von Ansprüchen einsetzen
DE102016102945A1 (de) Code-Analyse zum Bereitstellen von Datenschutz in ETL-Systemen
DE102014103281A1 (de) Verknüpfen unterschiedlicher typerzwingungskomponenten zum beurteilen eines latenten typs
DE112018004660T5 (de) Verwenden von kommentaren zum bereitstellen von optimierungen
DE112021004689T5 (de) Kontextbasierte risikobeurteilung einer schwachstelle in datenverarbeitungsressourcen
Feitosa et al. Investigating quality trade-offs in open source critical embedded systems
Sousa et al. An exploratory study on cooccurrence of design patterns and bad smells using software metrics
Zheng et al. Turn the rudder: A beacon of reentrancy detection for smart contracts on ethereum
DE202016008006U1 (de) Generierung von Integrationstests im Kleinen
DE102016204594A1 (de) Abgleichen von datenquellen ohne tags mit datenanalyseanwendungen ohne tags
DE102019209349A1 (de) Untersuchung von Web-Bedrohungen mithilfe von fortschrittlichem Web-Crawling
DE112021004293T5 (de) Mining und integration von kontextinformationen auf programmebene in low-level-systemprovenienzgraphen
Noseevich et al. Detecting insufficient access control in web applications
DE102016223484B4 (de) Bestimmen von Ähnlichkeiten in Computersoftwarecodes zur Leistungsanalyse

Legal Events

Date Code Title Description
R163 Identified publications notified
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0017300000

Ipc: G06F0009440000

R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final