NO336813B1 - Fremgangsmåte og system for å håndheve et sett av sikkerhetsregler ved hjelp av en sikkerhetspåtvingende virtuell maskin - Google Patents

Fremgangsmåte og system for å håndheve et sett av sikkerhetsregler ved hjelp av en sikkerhetspåtvingende virtuell maskin Download PDF

Info

Publication number
NO336813B1
NO336813B1 NO20051525A NO20051525A NO336813B1 NO 336813 B1 NO336813 B1 NO 336813B1 NO 20051525 A NO20051525 A NO 20051525A NO 20051525 A NO20051525 A NO 20051525A NO 336813 B1 NO336813 B1 NO 336813B1
Authority
NO
Norway
Prior art keywords
security
virtual machine
data
instruction
enforcing
Prior art date
Application number
NO20051525A
Other languages
English (en)
Other versions
NO20051525L (no
NO20051525D0 (no
Inventor
Arthur H Baker
Original Assignee
Microsoft Technology Licensing Llc
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 Microsoft Technology Licensing Llc filed Critical Microsoft Technology Licensing Llc
Publication of NO20051525D0 publication Critical patent/NO20051525D0/no
Publication of NO20051525L publication Critical patent/NO20051525L/no
Publication of NO336813B1 publication Critical patent/NO336813B1/no

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • EFIXED CONSTRUCTIONS
    • E01CONSTRUCTION OF ROADS, RAILWAYS, OR BRIDGES
    • E01HSTREET CLEANING; CLEANING OF PERMANENT WAYS; CLEANING BEACHES; DISPERSING OR PREVENTING FOG IN GENERAL CLEANING STREET OR RAILWAY FURNITURE OR TUNNEL WALLS
    • E01H5/00Removing snow or ice from roads or like surfaces; Grading or roughening snow or ice
    • E01H5/04Apparatus propelled by animal or engine power; Apparatus propelled by hand with driven dislodging or conveying levelling elements, conveying pneumatically for the dislodged material
    • E01H5/06Apparatus propelled by animal or engine power; Apparatus propelled by hand with driven dislodging or conveying levelling elements, conveying pneumatically for the dislodged material dislodging essentially by non-driven elements, e.g. scraper blades, snow-plough blades, scoop blades
    • E01H5/065Apparatus propelled by animal or engine power; Apparatus propelled by hand with driven dislodging or conveying levelling elements, conveying pneumatically for the dislodged material dislodging essentially by non-driven elements, e.g. scraper blades, snow-plough blades, scoop blades characterised by the form of the snow-plough blade, e.g. flexible, or by snow-plough blade accessories
    • E01H5/066Snow-plough blade accessories, e.g. deflector plates, skid shoes
    • 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)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Architecture (AREA)
  • Civil Engineering (AREA)
  • Structural Engineering (AREA)
  • Storage Device Security (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

En fremgangsmåte og et system for å håndheve et sett av sikkerhetsregler innkodet i et instruksjonssett for en sikkerhetspåtvingende virtuell maskin er tilveiebrakt. Et sikkerhetssystem tilveiebringer en sikkerhetspåtvingende virtuell maskin som kjører sikkerhetsprogrammer uttrykt ved instruksjonssettet for den sikkerhetspåtvingende virtuelle maskinen. Sikkerhetssystemet lagrer sikkerhetsprogrammet i instruksjonslageret for den sikkerhetspåtvingende virtuelle maskinen. Når en sikkerhetspåtvingningsaktuell hendelse inntreffer, eksekverer den sikkerhetspåtvingende virtuelle maskinen instruksjonene i sitt instruksjonslager ved anvendelse av data for den sikkerhetspåtvingningsaktuelle hendelsen for å påtvinge settet av sikkerhetsregler.

Description

Foreliggende oppfinnelse vedrører generelt påtvingning av et sett av sikkerhetsregler for å hindre uønsket oppførsel av et dataprogram.
Programvaresystemer, så som operativsystemer og filsystemer, eksponerer applikasjonsprogrammeringsgrensesnitt som applikasjonsprogrammer kan anvende for å aksessere tjenestene som tilbys av programvaresystemene. Et applikasjonsprogrammeringsgrensesnitt kan tilby funksjoner med parametere for å utføre en spesifisert tjeneste. Foreksempel kan et filsystem ha en funksjon (også referert til som et "systemkaN") for å opprette en ny fil. Denne funksjonen kan ta parametere som spesifiserer et lagringssted for filen, et filnavn, en filtype, en filstør-relse og annet for filen som skal opprettes. Når et applikasjonsprogram anroper en funksjon, sender det med faktiske parametere svarende til de formelle parametrene som er definert for funksjonen. Funksjonen kan utføre visse sjekker på de faktiske parametrene for å sikre at de er lovlige. For eksempel kan filopprett-ingsfunksjonen sikre at den spesifiserte filtypen er lovlig. Dersom en parameter ikke er lovlig, returnerer funksjonen en feil til applikasjonsprogrammet.
Programvaresystemer kan av mange grunner være ekstremt komplekse. Et programvaresystem kan forsøke å være bakover kompatibelt med alle tidligere versjoner av dette programvaresystemet. I så fall kan programvaresystemet være nødt til å støtte alle funksjonene i de tidligere versjonenes applikasjonsprogrammeringsgrensesnitt. Siden nye funksjoner typisk blir lagt til i hver versjon, kan antallet funksjoner bli meget stort og samspillet mellom disse kompleks. Noen programvaresystemer kan også omfatte programvarekomponenter utviklet av forskjellige avdelinger av samme firma eller av forskjellige firmaer. Samspillet mellom disse komponentene kan også være nokså kompleks.
Det har blitt viktigere for programvaresystemer å sikre at deres applikasjonsprogrammeringsgrensesnitt ikke er sårbare overfor verken utilsiktet feilbruk eller forsettlige angrep. Én sårbarhet i et programvaresystem kan være gjennom parametrene i dets applikasjonsprogrammeringsgrensesnitt. Når funksjonene i tidligere versjoner er kombinert med de i nyere versjoner, og når komponenter fra forskjellige utviklere er integrert, kan den eksisterende parametervalideringen som utføres av funksjonene være utilstrekkelig til å sikre at funksjonene oppfører seg korrekt. For eksempel kan et applikasjonsprogrammeringsgrensesnitt i et filsystem utviklet av ett firma være integrert med en filtjener utviklet av et annet firma. Para meteren som bestemmer maksimal filstørrelse i applikasjonsprogrammeringsgren-sesnittet kan ha en verdi som overstiger det som støttes av filtjeneren. I et slikt til-felle kan en filstørrelse som er akseptabel for applikasjonsprogrammeringsgrense-snittet forårsake problemer hos filtjeneren. Som et annet eksempel kan en system-ansvarlig ønske å begrense den maksimale filstørrelsen ytterligere, men ikke ha noe tilgjengelig middel for å påtvinge denne begrensningen.
I artikkelen "Java security: How to install the security manger and customize your security policy", Internet Article, [Online] 20 November 1997 (1997.11.20) av B. Venners beskrives en sikkerhets administrator under JAVA programsystemet. Denne JAVA API påtvinger en skreddersydd sikkerhetspolitikk på en applikasjon ved at enhver applikasjon spør sikkerhets administratoren om tillatelse til å utføre enhver handling som potensielt er skadelig. For enhver potensielt skadelig handling er det implementert en fremgangsmåte i administratoren som definerer om en handling er skadelig eller ikke. Hver slik fremgangsmåte er identifiserbar ved at de starter med samme kvalifisering som «check», det vil si «kontroller». Den aktuelle implementasjonen av slike fremgangsmåter definerer den skreddersydde sikkerhetspolitikken for applikasjonen. Imidlertid kan dette systemet ikke hindre såkalte «denial of service» angrep på datamaskiner da fiendtlige programmer kan allokere hukommelse til den er brukt opp, og ved at det er vanskelig å stoppe aktivering av tråder av programmer til maskinen blir overbelastet.
Det ville være ønskelig å ha en mekanisme for å håndheve sikkerhetsregler, og spesielt sikkerhetsregler som spesifiserer gyldighetsbetingelser for parametere i applikasjonsprogrammeringsgrensesnitt.
En fremgangsmåte og et system for å håndheve et sett av sikkerhetsregler tilveiebringes av en sikkerhetspåtvingende virtuell maskin. Den sikkerhetspåtvingende virtuelle maskinen omfatter en prosessormotor, et instruksjonslager, et datalager og en instruksjonspeker. Den sikkerhetspåtvingende virtuelle maskinen kjører et sikkerhetsprogram spesifisert ved anvendelse av et mellomspråk som er kompilert fra en høy-nivå representasjon av settet av sikkerhetsregler. Sikkerhetsprogrammet lastes inn i instruksjonslageret for eksekvering. Når en sikkerhetspåtvingningsaktuell hendelse inntreffer, så som et anrop til en funksjon i et applikasjonsprogrammeringsgrensesnitt, blir data knyttet til den sikkerhetspå tvingningsaktuelle hendelsen lagret i datalageret og prosessormotoren begynner å hente inn og eksekvere instruksjonene for sikkerhetsprogrammet fra instruksjonslageret. Instruksjonene spesifiserer handlinger som skal utføres for å håndheve sikkerhetsreglene basert på dataene i den sikkerhetspåtvingningsaktuelle hendelsen.
Foreliggende oppfinnelse er særlig egnet til å tilveiebringe en fremgangsmåte i et datasystem for å påtvinge et sett av sikkerhetsregler kodet i et instruksjonssett til en virtuell sikkerhetsmaskin, der sikkerhetsreglene spesifiserer sikkerhet for systemkall, der fremgangsmåten omfatter det å: fremskaffe et sett av sikkerhetsregler representert i et høy-nivå språk,
kompilere settet av sikkerhetsregler til et sikkerhetsprogram som er en representasjon av sikkerhetsreglene i instruksjonssettet til den virtuelle sikkerhetsmaskinen,
laste inn sikkerhetsprogrammet i et instruksjonslager for den sikkerhetspåtvingende virtuelle maskinen, og
når en sikkerhetspåtvingningsaktuell hendelse inntreffer, eksekvere i den virtuelle sikkerhetsmaskinen instruksjonene for sikkerhetsprogrammet i instruksjonslageret basert på data for den sikkerhetspåtvingningsaktuelle hendelsen for å påtvinge settet av sikkerhetsregler.
Videre er foreliggende oppfinnelse særlig egnet til å tilveiebringe et sikkerhetspåtvingende system konfigurert til å påtvinge sikkerhetsregler kodet i et instruksjonssett til virtuell sikkerhetsmaskin, hvor sikkerhetssystemet innbefatter komponenter som utføres i brukermodus og komponenter som utføres i kjernemodus, der systemet innbefatter: en regel-sett-kompilator konfigurert til å bli utført i bruker modus, regel-sett-kompilatoren er videre konfigurert til å motta en sikkerhetsregel representert i et høy-nivå språk og å generere et sikkerhetsprogram som er en representasjon av sikkerhetsregelen i instruksjonssettet til den virtuelle sikkerhetsmaskinen,
en programinnlastingskomponent konfigurert til å kjøre i kjernemodus, programinnlastingskomponenten er videre konfigurert til å laste opp sikkerhetsprogrammet til et instruksjonslager i den virtuelle sikkerhetsmaskinen, og en virtuell sikkerhetsmaskin for å detektere når en applikasjon i bruker modus gjør et systemkall med parametere som er i strid med e sikkerhetsreglene, der den
virtuelle sikkerhetsmaskinen er konfigurert til å kjøre i kjernemodus, den virtuelle sikkerhetsmaskinen omfatter: instruksjonslageret inneholder instruksjoner som implementerer settet av sikkerhetsregler,
et data lager som inneholder data for settet av sikkerhetsregler,
et parameter lager som inneholder parametere til et systemkall,
en systemkall-overvåkingskomponent tilpasset til å overvåke systemkallene, og
en prosessormotor som eksekverer instruksjonene for sikkerhetsprogrammet i instruksjonslageret ved anvendelse av data i data lageret og parametere i parameterlageret for å bestemme hvorvidt systemkallet er i strid med settet av sikkerhetsregler.
Figur 1 er et blokkdiagram som illustrerer komponenter i sikkerhetssystemet ifølge én utførelsesform. Figur 2 er et blokkdiagram som illustrerer datalagerets datastruktur ifølge én utførelsesform. Figur 3 er et diagram som illustrerer oppbygningen til en instruksjon for den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelsesform. Figur 4 er et flytdiagram som illustrerer prosesseringen til en programinnlastingskomponent ifølge én utførelsesform. Figur 5 er et flytdiagram som illustrerer prosesseringen til en systemkall-overvåkningskomponent ifølge én utførelsesform. Figur 6 er et flytdiagram som illustrerer prosesseringen til prosessormotoren i den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelsesform. Figur 7 er et flytdiagram som illustrerer prosesseringen til en derefererings-komponent i den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelses-form. Figur 8 er et flytdiagram som illustrerer prosesseringen til en testevaluer-ingskomponent i den sikkerhetspåtvingende virtuelle maskinen ifølge én utførel-sesform. Figur 9 er et flytdiagram som illustrerer prosesseringen til en testkomponent i den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelsesform. Figur 10 er et flytdiagram som illustrerer prosesseringen til en komponent for sammenlikning av tegnstrenger i den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelsesform. Figur 11 er et flytdiagram som illustrerer prosesseringen til en ikke testkomponent i den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelses-form.
En fremgangsmåte og et system i et datasystem for å håndheve et sett av sikkerhetsregler innkodet i et instruksjonssett for en sikkerhetspåtvingende virtuell maskin er tilveiebrakt. I én utførelsesform tilveiebringer et sikkerhetssystem en sikkerhetspåtvingende virtuell maskin som kjører sikkerhetsprogrammer uttrykt ved instruksjonssettet (dvs. et mellomspråk) for den sikkerhetspåtvingende virtuelle maskinen. Sikkerhetssystemet kan omfatte en kompilator som mottar et sett av sikkerhetsregler representert i et høynivåspråk og genererer et sikkerhetsprogram som er en representasjon av sikkerhetsreglene i mellomspråket for den sikkerhetspåtvingende virtuelle maskinen. Sikkerhetssystemet lagrer sikkerhetsprogrammet i et instruksjonslager for den sikkerhetspåtvingende virtuelle maskinen. Når en sikkerhetspåtvingningsaktuell hendelse inntreffer (dvs. en handling som må sjekkes for å sikre at den utføres i overensstemmelse med sikkerhetsreglene) eksekverer den sikkerhetspåtvingende virtuelle maskinen instruksjonene i sikkerhetsprogrammet fra sitt instruksjonslager ved anvendelse av data fra den sikkerhetspåtvingningsaktuelle hendelsen for å påtvinge sikkerhetsreglene. Dersom den sikkerhetspåtvingningsaktuelle hendelsen tyder på at det gjøres et forsøk på å ut-føre en uønsket oppførsel (f.eks. en handling som vil kunne utnytte et sikkerhets-hull i et operativsystem), kan da sikkerhetsprogrammet stanse forsøket. I én utfør-elsesform kjører den sikkerhetspåtvingende virtuelle maskinen i sikkerhetssystemet i kjernen til et operativsystem for å identifisere og stanse forsøk av applikasjoner og eksterne systemer på å utføre en oppførsel som er uønsket i det datasyste-met hvor sikkerhetssystemet kjører.
I én utførelsesform avgjør sikkerhetssystemet når parametere til et systemkall gjort av en applikasjon til en systemtjeneste (f.eks. for et fil- og minne-administreringssystem) vil kunne føre til en uønsket oppførsel. Settet av sikkerhetsregler omfatter regler som hver spesifiserer en betingelse basert på parametere til systemkallet og en handling som skal utføres når betingelsen er oppfylt. For eksempel kan en regels betingelse være oppfylt når et systemkall for å opprette en fil gjøres med en parameter som spesifiserer en filstørrelse større enn 1 GB. Handlingen knyttet til denne regelen kan være å stanse opprettelsen av filen. Høy-nivåspråket kan være et XML-basert språk, og hver regel kan være identifisert ved regel-, betingelses- og handlingsetiketter. Når reglene i settet av sikkerhetsregler representert i høynivåspråket kompileres, blir hver regel oversatt til instruksjoner i mellomspråket som danner sikkerhetsprogrammet. For eksempel kan en regel bli oversatt til en sekvens av instruksjoner. Én som sammenlikner systemkallet med en verdi som angir at funksjonen er "oppretting av fil," én som sammenlikner en filstørrelsesparameter med en konstant med verdien 1 GB og én som mater ut en angivelse om å stanse systemkallet.
I én utførelsesform omfatter den sikkerhetspåtvingende virtuelle maskinen en prosessormotor, et instruksjonslager, en instruksjonspeker og et datalager. Når den sikkerhetspåtvingende virtuelle maskinen initialiseres for å håndheve sikkerhetsreglene, laster sikkerhetssystemet inn et sikkerhetsprogram i instruksjonslageret som implementerer sikkerhetsreglene. Sikkerhetssystemet laster også inn data for sikkerhetsprogrammet i datalageret. Når et systemkall mot-tas, lagrer sikkerhetssystemet parametrene til systemkallet (inklusive en verdi som identifiserer systemkallet) i datalageret. Sikkerhetssystemet kan også lagre prosesstyringsinformasjon for prosessen som gjorde systemkallet i datalageret. Sikkerhetssystemet initialiserer instruksjonspekeren til å peke til en startinstruksjon for sikkerhetsprogrammet. Prosessormotoren starter sikkerhetsprogrammet ved å hente inn og eksekvere startinstruksjonen som instruksjonspekeren peker til. Hver instruksjon som eksekveres modifiserer instruksjonspekeren til å peke til den neste instruksjonen som skal eksekveres. Instruksjonene refererer til dataene i datalageret for å håndheve sikkerhetsreglene. Kjøringen av sikkerhetsprogrammet genererer et utmatet handlingssett som spesifiserer hvilke handlinger (f.eks. stanse et systemkall) som skal utføres for å påtvinge sikkerhetsreglene.
I én utførelsesform kan sikkerhetsreglene omfatte et del-regelsett for hvert systemkall som tar parametere som skal sjekkes. Sikkerhetssystemet kan kompilere hvert del-regelsett til et separat under-sikkerhetsprogram som kan bli lastet inn i instruksjonslageret uavhengig av de andre under-sikkerhetsprogrammene. Hvert del-regelsett kan svare til sikkerhetspåtvingningen for ett enkelt sys temkall. Sikkerhetssystemet kan opprettholde en avbildning av hvert systemkall til en startinstruksjonspeker i instruksjonslageret og en startdatapeker til dataene i datalageret for det aktuelle under-sikkerhetsprogrammet. Når det påtvinger settet av sikkerhetsregler for et gitt systemkall, initialiserer sikkerhetssystemet instruksjonspekeren til den tilhørende startinstruksjonspekeren og datapekeren til den til-hørende startdatapekeren. Under-sikkerhetsprogrammene kan referere til instruksjoner og data relativt instruksjonspekeren og datapekeren eller startinstruksjonspekeren og startdatapekeren. På den måten gjøres instruksjonene og dataene for hvert under-sikkerhetsprogram flyttbare. I den følgende beskrivelsen tar ett enkelt sikkerhetsprogram seg av alle systemkall ved å identifisere hvert systemkall og hoppe til den korrekte instruksjonen for å behandle dette systemkallet. Fagmannen vil forstå at det beskrevne systemet kan tilpasses for å støtte et eget program for hvert systemkall.
Figur 1 er et blokkdiagram som illustrerer komponenter i sikkerhetssystemet ifølge én utførelsesform. Sikkerhetssystemet omfatter noen komponenter som kjører i brukermodus 100 og andre som kjører i kjernemodus 120. En regelsett-kompilator 102 er en komponent som kjører i brukermodus og kompilerer et sett av sikkerhetsregler i et regellager 103 til sikkerhetsprogrammer som kan kjøres av den sikkerhetspåtvingende virtuelle maskinen. Komponentene i kjernen omfatter en systemkall-overvåkningskomponent 121, en programinnlastingskomponent 122 og en sikkerhetspåtvingende virtuell maskin 125. Den sikkerhetspåtvingende virtuelle maskinen omfatteren instruksjonspeker (ip) 126, en prosessormotor 127, et instruksjonslager 128 og et datalager 129. Programinnlastingskomponenten laster inn sikkerhetsprogrammer generert av regelsett-kompilatoren i instruksjonslageret for den sikkerhetspåtvingende virtuelle maskinen, lagrer program-data i datalageret og setter startinstruksjonspekeren. Systemkall-overvåkningskomponenten fanger opp systemkall gjort av applikasjonsprogrammer 101 og lagrer parametrene til hvert systemkall og prosesstyringsinformasjon for applika-sjonsprogrammene i datalageret. Etter å ha fanget opp et systemkall og lagret parametrene til dette, instruerer systemkall-overvåkningskomponenten prosessormotoren til å kjøre sikkerhetsprogrammet i instruksjonslageret. Prosessormotoren kjører sikkerhetsprogrammet ved å innhente instruksjoner som pekes til av instruksjonspekeren og å utføre operasjonene som spesifiseres av instruksjonene. Opera sjonene omfatter lagring av handlinger som skal utføres for å påtvinge settet av sikkerhetsregler i et utmatet handlingssett i datalageret. Når sikkerhetsprogrammet har kjørt ferdig, utfører systemkall-overvåkningskomponenten handlingene i det utmatede handlingssettet.
Databehandlingsanordningen hvor sikkerhetssystemet er realisert kan omfatte en sentralprosesseringsenhet, minne, innmatingsanordninger (f.eks. tastaturer og pekeranordninger), utmatingsanordninger (f.eks. fremvisningsanord-ninger) og lagringsanordninger (f.eks. harddisker). Minnet og lagringsanordning-ene er datamaskin-lesbare medier som kan inneholde instruksjoner som realiserer sikkerhetssystemet. I tillegg kan datastrukturene og meldingsstrukturene være lagret eller bli overført ved hjelp av et dataoverføringsmedium, så som et signal i en kommunikasjonsforbindelse. Forskjellige kommunikasjonsforbindelser kan anvendes, så som Internett, et lokalt nettverk, et regionalt nettverk eller en punkt-til-punkt-basert, oppringt forbindelse.
Figur 1 illustrerer et eksempel på et passende driftmiljø hvor sikkerhetssystemet kan realiseres. Dette driftsmiljøet er bare ett eksempel på et passende driftsmiljø, og er ikke ment å antyde noen som helst begrensninger vedrørende sikkerhetssystemets bruksområde eller funksjonalitet. Andre velkjente data-systemer, -miljøer, og anordninger som kan være egnet for bruk omfatter personlige datamaskiner, tjenermaskiner, håndholdte anordninger eller laptop-anordninger, flerprosessorsystemer, mikroprosessor-baserte systemer, programmerbar for-brukerelektronikk, personlige datamaskiner i nettverk, minidatamaskiner, storma-skiner, distribuerte databehandlingsmiljøer som omfatter hvilke som helst av sys-temene eller anordningene over, og liknende.
Sikkerhetssystemet kan beskrives i den generelle sammenhengen datamaskin eksekver bare instruksjoner, så som programmoduler, som eksekveres av én eller flere datamaskiner eller andre anordninger. Generelt omfatter programmoduler rutiner, programmer, objekter, komponenter, datastrukturer og annet som utfører konkrete oppgaver eller implementerer abstrakte datatyper. Program-modulenes funksjonalitet kan typisk kombineres eller distribueres som ønsket i forskjellige utførelsesformer.
Figur 2 er et blokkdiagram som illustrerer datastrukturen i datalageret ifølge én utførelsesform. Datalageret omfatter en datastruktur 201 forfaste data, en datastruktur 211 for dynamiske data, en datastruktur 221 for systemkall-parametere, en datastruktur 231 for prosesstyringsdata og et utmatet handlingssett 241. Datastrukturen for faste data omfatter en tabell 202 for faste data og et lager 203 for faste data. Tabellen for faste data inneholder elementer med fast størrelse som refererer til faste data lagret i lageret for faste data. Med "faste data" menes data for sikkerhetsprogrammet som er konstante gjennom levetiden til det lastede settet av sikkerhetsregler. Faste data kan bare endres ved å laste inn et nytt sett av sikkerhetsregler. Datastrukturen for dynamiske data har en tilsvarende oppbygning som datastrukturen forfaste data, men den lagrer "dynamiske data" heller enn "faste data". Med "dynamiske data" menes data for sikkerhetsprogrammet som kan modifiseres uten å laste inn et nytt sett av sikkerhetsregler. For eksempel kan dynamiske data omfatte navn på applikasjoner som er unntatt fra sikkerhetsreglene. Hvert element i tabellene for faste og dynamiske data peker til data i det tilhørende datalageret. Dataene i lagrene forfaste og dynamiske data er representert i et selvbeskrivende format. Dette formatet omfatter informasjon om datatype og datastørrelse. I én utførelsesform støtter den sikkerhetspåtvingende virtuelle maskinen boolske variabler, heltall, tegnstrenger og rå binærdata (også referert til som "datablokker"), i tillegg matriser av heltall, tegnstrenger og datablokker. Instruksjoner refererer til de faste og dynamiske dataene ved anvendelse av indekser i tabellene for faste og dynamiske data. Når den eksekverer en instruksjon, avbilder den sikkerhetspåtvingende virtuelle maskinen indeksen i tabellene for faste og dynamiske data ved å innhente det indekserte elementet og bruke dets verdi som peker til begynnelsen av dataposten i lageret for faste eller dynamiske data. Siden dataene er selvbeskrivende kan dataenes type og størrelse bestemmes. Datastrukturen for systemkall parametere omfatter en tabell 222 for tegnstrenger, en tabell 223 for heltall og en tabell 224 for rå binærdata. Parametrene til systemkallet lagres i disse tabellene i henhold til datatype. Datastrukturen for prosesstyringsdata er en tabell som inneholder et element for hver enhet av prosesstyringsinformasjon som er tilgjengelig for den sikkerhetspåtvingende virtuelle maskinen. I én utførelsesform omfatter prosesstyringsinformasjonen en applikasjonsidentifikator og en prosesstråd-identifikator. Det utmatede handlingssettet kan være et sett av handlingsflagg som genereres under eksekvering av sikkerhetsprogrammet og som angir hvilke handlinger som skal utføres
for å påtvinge settet av sikkerhetsregler på systemkallet. Handlingene kan omfatte blokkering av systemkallet og varsling av en bruker. Figur 3 er et diagram som illustrerer oppbygningen til en instruksjon for den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelsesform. Hver instruksjon omfatter et operasjonsfelt 310, et felt parameterl (" p1") 320, et felt true-gren (" tb") 330, et felt false-gren (" fb") 340 og et felt parameter2 (" p2") 350. Feltet p1 refererer til data assosiert med systemkallet (dvs. lagret i systemkall-datastrukturen eller i prosesstyring-datastrukturen), og feltet p2 refererer til data assosiert med sikkerhetsprogrammet (dvs." immediate" data eller data lagret i datastrukturene forfaste eller dynamiske data). Feltet operasjon omfatter en deskriptor for parameter2 311 ("m") og en operasjonskode 312. Deskriptoren for parameter2 spesifiserer hvordan parameter2 skal tolkes. Parameter2 kan inneholde immediate data, en referanse til dynamiske data eller en referanse til faste data. Når en referanse er spesifisert, de refererer den sikkerhetspåtvingende virtuelle maskinen parameter2 før den utfører operasjonen angitt av instruksjonen. Operasjonskoden identifiserer operasjonen angitt av instruksjonen, som beskrevet mer detaljert nedenfor. Feltet parameterl inneholder en deskriptor 321 ("s") for parameterl og en indeks 322. Deskriptoren for parameterl angir hvorvidt parameterl refererer til en systemkall-parameter eller til prosesstyringsinformasjon. Dersom deskriptoren for parameterl angir en systemkall-parameter, spesifiserer da et antall av indeks-ens mest signifikante bit hvorvidt tabellen for tegnstrenger, tabellen for heltall eller tabellen for rå binærdata i datastrukturen for systemkall-parametere skal indekse-res, og et antall av de minst signifikante bit angir det indekserte elementet i tabellen. Dersom deskriptoren for parameterl angir prosesstyringsinformasjon, angir da indeksen den spesifikke prosesstyringsinformasjonen. Feltene true-gren og false-gren inneholder offset-verdier som spesifiserer den neste instruksjonen å eksekvere avhengig av hvorvidt statuskoden for denne instruksjonen evalueres til true eller false. Offset-verdien legges til gjeldende instruksjon-pekeren for å peke til den neste instruksjonen som skal eksekveres. Tabellene 1 og 2 illustrerer instruksjonene for den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelsesform. Instruksjonene kan deles inn i de som utfører en test på data og de som ikke gjør det. Tabell 1 illustrerer instruksjonene som ikke tester data.
Tabell 2 illustrerer instruksjonene som tester data. Instruksjonsmønsteret kan definere et regulært uttrykk for å sammenlikne to tegnstrenger, noe som er nyttig for" Wild Card" -type sammenlikninger av filnavn (f.eks. "<*>.DAT").
Figur 4 er et flytdiagram som illustrerer prosesseringen til programinnlastingskomponenten ifølge én utførelsesform. Komponenten anropes når et sikkerhetsprogram skal lastes inn i den sikkerhetspåtvingende virtuelle maskinen. Et sikkerhetsprogram inneholder virtuelle instruksjoner, en blokk av faste data og en blokk av dynamiske data. Blokken av faste data omfatter informasjonen i tabellen forfaste data etterfulgt av informasjonen i lageret forfaste data. Komponenten kopierer blokken av faste data til lageret for faste data med start fra en startadres se. Komponenten legger da til denne startadressen i hver offset-verdi i tabellen for faste data for å konvertere offset-verdiene til pekere. Komponenten prosesser blokken av dynamiske data på en tilsvarende måte. De virtuelle instruksjonene inneholder offset-verdier som er i forhold til begynnelsen av lageret for faste data og lageret for dynamiske data. I trinn 401 bestemmer komponenten en startadresse i lageret for faste data og kopierer blokken av faste data for sikkerhetsprogrammet med start ved denne startadressen. I trinn 402 legger komponenten til startadressen i hver offset-verdi i tabellen forfaste data for å konvertere offset-verdiene for sikkerhetsprogrammet til pekere. I trinn 403 bestemmer komponenten en startadresse i lageret for dynamiske data og kopierer blokken av dynamiske data for sikkerhetsprogrammet med start ved denne startadressen. I trinn 404 legger komponenten til startadressen i hver offset-verdi i tabellen for dynamiske data for å konvertere offset-verdiene for sikkerhetsprogrammet til pekere. I trinn 405 kopierer komponenten de virtuelle instruksjonene for sikkerhetsprogrammet til instruksjonslageret og avslutter.
Figur 5 er et flytdiagram som illustrerer prosesseringen til systemkall-overvåkningskomponenten ifølge én utførelsesform. Komponenten anropes når et systemkall blir oppdaget. Komponenten initialiserer datastrukturen for systemkall-parametere og datastrukturen for prosesstyringsinformasjon og starter deretter den sikkerhetspåtvingende virtuelle maskinen. Komponenten kan også tilveiebringe en instruksjonspeker til instruksjonen for å begynne å kjøre for å prosessere systemkallet. Når det anvendes under-sikkerhetsprogrammer, kan komponenten ha en avbildning fra systemkall til startinstruksjonspekerne og til startdatapek-erne til datastrukturene for de faste og dynamiske dataene for dette systemkallet. Programinnlastingskomponenten kan bli anropt flere ganger for å laste forskjellige underprogrammer av sikkerhetsprogrammet for å prosessere forskjellige systemkall. Siden instruksjonene og dataene er offset-basert kan instruksjonene og data bli lagret i den neste ledige adressen i instruksjonslageret og datastrukturene. I trinn 501 setter komponenten gjeldende instruksjon-pekeren til startinstruksjonspekeren for sikkerhetsprogrammet og setter det utmatede handlings settet til en initial tilstand (f.eks. tom). I trinnene 502-504 går komponenten i en sløyfe og lagrer parametrene til systemkallet i den tilhørende datastrukturen. I trinn 502 velger komponenten den neste parameteren til systemkallet. I bestemmelsestrinn 503, dersom alle systemkallets parametere allerede er valgt, fortsetter komponenten i trinn 505, ellers fortsetter komponenten i trinn 504. I trinn 504 lagrer komponenten den valgte parameteren i den aktuelle tabellen i datastrukturen for systemkall-parametere og går til trinn 502 for å velge systemkallets neste parameter. I trinnene 505-507 går komponenten i en sløyfe og lagrer prosesstyringsinformasjon i den tilhørende datastrukturen. I trinn 505 velger komponenten den neste prosesstyringsinformasjonen for prosessen som har gjort systemkallet. I bestemmelsestrinn 506, dersom all prosesstyringsinformasjon allerede er valgt, fortsetter komponenten i trinn 508, ellers fortsetter komponenten i trinn 507. I trinn 507 lagrer komponenten den valgte prosesstyringsinformasjonen i datastrukturen for prosesstyringsdata og går deretter til trinn 505 for å velge den neste prosesstyringsinformasjonen. Alternativt, heller enn å anvende og initialisere en intern datastruktur for prosesstyringsdata, kan sikkerhetssystemet innhente prosesstyringsinformasjon direkte fra en prosesstyringsblokk når det er behov for den. Fagmannen vil forstå at en prosesstyringsblokk opprettes av et operativsystem når en prosess blir opprettet. I trinn 508 starter komponenten den sikkerhetspåtvingende virtuelle maskinen for å påtvinge settet av sikkerhetsregler på det detekterte systemkallet. Når sikkerhetsprogrammet som kjøres av den sikkerhetspåtvingende virtuelle maskinen har avsluttet, utfører komponenten handlingene i det utmatede handlingssettet.
Figur 6 er et flytdiagram som illustrerer prosesseringen til prosessormotoren
i den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelsesform. Prosessormotoren initialiserer datastrukturen for systemkall-parametere basert på det detekterte systemkallet, starter den sikkerhetspåtvingende virtuelle maskinen og utfører handlingene i det utmatede handlingssettet. I trinnene 601-607 går prosessormotoren i en sløyfe og laster inn og eksekverer instruksjonene for sikkerhetsprogrammet lagret i instruksjonslageret inntil eksekvering av en stoppinstruk-sjon. I én utførelsesform kan sikkerhetsreglene bestemme at når en betingelse for en regel er oppfylt, ingen andre regler skal testes. I trinn 601 laster prosessormotoren inn instruksjonen som pekes til av gjeldende instruksjon-pekeren. I trinn 602 anroper prosessormotoren en komponent for å de referere parameterl og parameter. I bestemmelsestrinn 603, dersom instruksjonens operasjonskode definerer en testoperasjon, fortsetter prosessormotoren i trinn 604. Dersom instruksjonskod-
ens operasjonskode angir en operasjon som ikke omfatter tester (annet enn en stoppoperasjon), fortsetter prosessormotoren i trinn 608. Dersom instruksjonskod-ens operasjonskode angir en stoppoperasjon, fortsetter prosessormotoren i trinn 609.1 trinn 604 anroper prosessormotoren testevalueringskomponenten for å bestemme hvorvidt testoperasjonen har returnert true eller false. Den anropte komponenten setter et statuskodeflagg til true eller false. I bestemmelsestrinn 605, dersom statuskoden har verdien true, fortsetter prosessormotoren i trinn 607, ellers fortsetter prosessormotoren i trinn 606. I trinn 606 legger prosessormotoren offset-verdien i feltet false-gren til gjeldende instruksjon-pekeren og går deretter til trinn 601 for å laste inn den neste instruksjonen. I trinn 607 legger prosessormotoren offset-verdien i feltet true-gren til gjeldende instruksjon-pekeren og går deretter til trinn 601 for å laste inn den neste instruksjonen. I trinn 608 anroper prosessormotoren komponenten som utfører operasjoner som ikke omfatter tester og går deretter til trinn 601 for å laste inn den neste instruksjonen. Komponenten som ut-fører operasjoner som ikke omfatter tester gjennomfører operasjonen definert av instruksjonen og setter gjeldende instruksjon-pekeren til å peke til den neste instruksjonen som skal eksekveres. Komponenten som utfører operasjoner som omfatter tester legger til offset-verdien i feltet true-gren (eller parameter2 i tilfellet med en hopp-instruksjon) for instruksjonen til i instruksjonspekeren. I trinn 609 eksekverer komponenten stoppinstruksjonen og avslutter.
Figur 7 er et flytdiagram som illustrerer prosesseringen til de refererings-komponenten i den sikkerhetskontrollerende virtuelle maskinen ifølge én utfør-elsesform. Denne komponenten de refererer parameterl og parameter2 for den innlastede instruksjonen. I trinnene 701-708 de refererer komponenten parameterl I bestemmelsestrinn 701, dersom parameterl er en systemkall-parameter, som angitt av deskriptoren for parameterl, fortsetter komponenten i trinn 703, ellers fortsetter komponenten i trinn 702. I trinn 702 setter komponenten den de refererte parameterl til prosesstyringsinformasjonen spesifisert av indeksdelen av parameterl og fortsetter deretter i trinn 709. I bestemmelsestrinn 703, dersom indeksdelen av parameterl angir at systemkall-parameteren er et heltall, fortsetter komponenten i trinn 704, ellers fortsetter komponenten i trinn 705.1 trinn 704 setter komponenten den de refererte parameterl til heltallet spesifisert av indeksen og fortsetter i trinn 709. I bestemmelsestrinn 705, dersom indeksdelen av parame- teri angir at systemkall-parameteren er en tegnstreng, fortsetter komponenten i trinn 706, ellers fortsetter komponenten i trinn 707. I trinn 706 setter komponenten den de refererte parameterl til tegnstrengen spesifisert av indeksen og fortsetter i trinn 709.1 bestemmelsestrinn 707, dersom indeksdelen av parameterl angir at systemkall-parameteren er rå binærdata, fortsetter da komponenten i trinn 708, i motsatt fall har det oppstått en feil. I trinn 708 setter komponenten den de refererte parameterl til de rå binærdataene spesifisert av indeksen og fortsetter i trinn 709.
I trinnene 709-714 de refererer komponenten parameter2. I bestemmelsestrinn 709, dersom deskriptoren for parameter2 angir" immediate" data, fortsetter da komponenten i trinn 710, ellers fortsetter komponenten i trinn 711. I trinn 710 setter komponenten den de refererte parameter2 til verdien til parameter2 i den innlastede instruksjonen og returnerer. I bestemmelsestrinn 711, dersom deskriptoren for parameter2 angir faste data, fortsetter komponenten i trinn 712, ellers fortsetter komponenten i trinn 713. I trinn 712 setter komponenten den de refererte parameter til de faste dataene spesifisert av parameter2 i den innlastede instruksjonen og returnerer. I bestemmelsestrinn 713, dersom deskriptoren for parameter angir dynamiske data, fortsetter da komponenten i trinn 714, i motsatt fall har det oppstått en feil. I trinn 714 setter komponenten den de refererte parameter til de dynamiske dataene spesifisert av parameter2 i den innlastede instruksjonen og returnerer. Figur 8 er et flytdiagram som illustrerer prosesseringen til testevalueringskomponenten i den sikkerhetspåtvingende virtuelle maskinen ifølge én utfør-elsesform. Komponenten dekoder operasjonskoden i den innlastede instruksjonen og anroper en komponent som tester denne operasjonskoden. Den anropte komponenten setter statuskoden til true eller false. I bestemmelsestrinnene 801-803 dekoder komponenten operasjonskoden i den innlastede instruksjonen. I trinnene 804-806 anroper komponenten komponentene for å realisere den dekodede operasjonskoden og returnerer.
Figur 9 er et flytdiagram som illustrerer prosesseringen til testkomponenten
i den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelsesform. Testkomponenten implementerer test-operasjonskoden. I trinn 901 setter komponenten statuskoden til verdien til den de refererte parameter og returnerer. Figur 10 er et flytdiagram som illustrerer prosesseringen til tegnstreng-sammenligningskomponenten i den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelsesform. Komponenten bestemmer hvorvidt den de refererte parameterl matcher den de refererte parameter2. I én utførelsesform kan den sikkerhetspåtvingende virtuelle maskinen anvende mønsterbasert sammenlikning. For eksempel kan en parameter omfatte en "Wild Card"-basert spesifikasjon eller mer generelt et regulært uttrykk. I bestemmelsestrinn 1001, dersom parameterl og parameter2 har samme lengde, fortsetter komponenten i trinn 1003, ellers kan ikke de de refererte parameterne være like, og komponenten fortsetter i trinn 1002. I trinn 1002 setter komponenten statuskoden til false og returnerer. I trinnene 1003-1006 går komponenten i en sløyfe og sjekker hvert tegn i tegnstrengene definert av de de refererte parameterne. I trinn 1003 velger komponenten det neste tegnet i hver tegnstreng. I bestemmelsestrinn 1004, dersom alle tegnene i tegnstrengene allerede er valgt, fortsetter komponenten i trinn 1008, ellers fortsetter komponenten i trinn 1005. I trinn 1005 normaliserer komponenten de valgte tegnene. Foreksempel kan komponenten konvertere hvert tegn til minuskelutgaven for å implementere en versalsensitiv sammenlikning. I bestemmelsestrinn 1006, dersom de valgte tegnene er like, går komponenten til trinn 1003 for å velge de neste tegnene i tegnstrengene, ellers fortsetter komponenten i trinn 1007. I trinn 1007 setter komponenten statuskoden til false og returnerer. I trinn 1008 sammenfaller alle tegnene i tegnstrengene, og komponenten setter statuskoden til true og returnerer. Figur 11 er et flytdiagram som illustrerer prosesseringen til ikke testkomponenten i den sikkerhetspåtvingende virtuelle maskinen ifølge én utførelses-form. Komponenten utfører operasjonen spesifisert av ikke test-operasjonskoden for den innlastede instruksjonen, inkludert å sette gjeldende instruksjon-pekeren til å peke til den neste instruksjonen som skal eksekveres. I bestemmelsestrinn 1101, dersom operasjonskoden er en handlingsoperasjon, fortsetter komponenten i trinn 1102, ellers fortsetter komponenten i trinn 1103. I trinn 1102 legger komponenten parameter2 i den innlastede instruksjonen til i det utmatede handlingssettet og fortsetter i trinn 1107. I bestemmelsestrinn 1103, dersom operasjonskoden er en" reset" -operasjon, fortsetter komponenten i trinn 1104, ellers fortsetter komponenten i trinn 1105. I trinn 1104 nullstiller komponenten det utmatede handlings settet og fortsetter i trinn 1107. I bestemmelsestrinn 1105, dersom operasjonskoden er en hopp-operasjon, fortsetter komponenten i trinn 1106, ellers fortsetter komponenten å dekode ytterligere operasjonskoder. I trinn 1106 legger komponenten parameter2 (p2) til gjeldende instruksjon-pekeren (ip) og returnerer. I trinn 1107 legger komponenten verdien i feltet true-gren (tb) til gjeldende instruksjon-pekeren og returnerer.
Fagmannen vil forstå at selv om spesifikke utførelsesformer av sikkerhetssystemet er beskrevet herfor illustrasjonsformål, forskjellige modifikasjoner er mulige innenfor oppfinnelsens ramme og idé. Fagmannen vil forstå at et sikkerhetssystem som anvender en sikkerhetspåtvingende virtuell maskin kan brukes til å håndheve en rekke forskjellige sikkerhetsregler. For eksempel kan sikkerhetssystemet brukes til å påtvinge sikkerhet for meldinger mottatt over et nettverk, transaksjoner mottatt av en transaksjonsprosesser og mer generelt en hvilken som helst applikasjon som eksponerer et applikasjonsprogrammeringsgrensesnitt. Følgelig er oppfinnelsen ikke begrenset av annet enn de etterfølgende kravene.

Claims (33)

1. Fremgangsmåte i et datasystem for å påtvinge et sett av sikkerhetsregler kodet i et instruksjonssett til en virtuell sikkerhetsmaskin, der sikkerhetsreglene spesifiserer sikkerhet for systemkall,karakterisert vedat fremgangsmåten omfatter det å: fremskaffe et sett av sikkerhetsregler representert i et høy-nivå språk, kompilere settet av sikkerhetsregler til et sikkerhetsprogram som er en representasjon av sikkerhetsreglene i instruksjonssettet til den virtuelle sikkerhetsmaskinen, laste inn sikkerhetsprogrammet i et instruksjonslager for den sikkerhetspåtvingende virtuelle maskinen, og når en sikkerhetspåtvingningsaktuell hendelse inntreffer, eksekvere i den virtuelle sikkerhetsmaskinen instruksjonene for sikkerhetsprogrammet i instruksjonslageret basert på data for den sikkerhetspåtvingningsaktuelle hendelsen for å påtvinge settet av sikkerhetsregler.
2. Fremgangsmåte ifølge krav 1, der settet av sikkerhetsregler spesifiserer sikkerhet for systemkall.
3. Fremgangsmåte ifølge krav 1, der den sikkerhetspåtvingningsaktuelle hendelsen er at en applikasjon gjør et systemkall.
4. Fremgangsmåte ifølge krav 3, der parametere til systemkallene er dataene for den sikkerhetspåtvingningsaktuelle hendelsen.
5. Fremgangsmåte ifølge krav 3, der prosesstyringsinformasjon for en applikasjon som gjør systemkallet er dataene for den sikkerhetspåtvingningsaktuelle hendelsen.
6. Fremgangsmåte ifølge krav 1, der data for sikkerhetsprogrammet lagres i en datastruktur for faste data.
7. Fremgangsmåte ifølge krav 6, der en instruksjon omfatter en referanse til faste data lagret i datastrukturen forfaste data.
8. Fremgangsmåte ifølge krav 1, der data for sikkerhetsprogrammet lagres i en datastruktur for dynamiske data.
9. Fremgangsmåte ifølge krav 8, der en instruksjon omfatter en referanse til dynamiske data lagret i datastrukturen for dynamiske data.
10. Fremgangsmåte ifølge krav 1, der en instruksjon identifiserer et lagringssted for den neste instruksjonen som skal eksekveres.
11. Fremgangsmåte ifølge krav 1, der den sikkerhetspåtvingende virtuelle maskinen støtter boolske variabler, heltall, tegnstrenger og rå binærdata.
12. Fremgangsmåte ifølge krav 1, der den sikkerhetspåtvingende virtuelle maskinen støtter regulære uttrykk-baserte sammenlikninger.
13. Fremgangsmåte ifølge krav 1, der kjøring av sikkerhetsprogrammet genererer et utmatet handlingssett som spesifiserer hvordan å behandle den sikkerhetspåtvingningsaktuelle hendelsen.
14. Fremgangsmåte ifølge krav 1, der eksekveringen av instruksjonene gjøres i kjernemodus.
15. Fremgangsmåte ifølge krav 1, der instruksjonen omfatter en operasjonskode, parametere og forgreningsfelter.
16. Sikkerhetspåtvingende system konfigurert til å påtvinge sikkerhetsregler kodet i et instruksjonssett til virtuell sikkerhetsmaskin, hvor sikkerhetssystemet innbefatter komponenter som utføres i brukermodus og komponenter som utføres i kjernemodus,karakterisert vedat systemet innbefatter: en regel-sett-kompilator (102) konfigurert til å bli utført i bruker modus, regel-sett-kompilatoren er videre konfigurert til å motta en sikkerhetsregel representert i et høy-nivå språk og å generere et sikkerhetsprogram som er en representasjon av sikkerhetsregelen i instruksjonssettet til den virtuelle sikkerhetsmaskinen, en programinnlastingskomponent (122) konfigurert til å kjøre i kjernemodus, programinnlastingskomponenten er videre konfigurert til å laste opp sikkerhetsprogrammet til et instruksjonslager (128) i den virtuelle sikkerhetsmaskinen, og en virtuell sikkerhetsmaskin (125) for å detektere når en applikasjon (101) i bruker modus gjør et systemkall med parametere som er i strid med e sikkerhetsreglene, der den virtuelle sikkerhetsmaskinen er konfigurert til å kjøre i kjernemodus, den virtuelle sikkerhetsmaskinen omfatter: instruksjonslageret (128) inneholder instruksjoner som implementerer settet av sikkerhetsregler, et data lager (129) som inneholder data for settet av sikkerhetsregler, et parameter lager som inneholder parametere til et systemkall, en systemkall-overvåkingskomponent (121) tilpasset til å overvåke systemkallene, og en prosessormotor (127) som eksekverer instruksjonene for sikkerhetsprogrammet i instruksjonslageret ved anvendelse av data i data lageret og parametere i parameter lageret for å bestemme hvorvidt systemkallet er i strid med settet av sikkerhetsregler.
17. Sikkerhetspåtvingende virtuell maskin ifølge krav 16, der høynivåspråket er på et XML-basert format.
18. Sikkerhetspåtvingende virtuell maskin ifølge krav 16, der høynivåspråket har regler som er spesifisert i form av en betingelse og en handling som skal ut-føres når betingelsen er oppfylt.
19. Sikkerhetspåtvingende virtuell maskin ifølge krav 16, der systemkall-overvåkningskomponenten lagrer parametere til et detektert systemkall i parameterlageret.
20. Sikkerhetspåtvingende virtuell maskin ifølge krav 16, der en programinnlastingskomponent laster inn instruksjoner i instruksjonslageret.
21. Sikkerhetspåtvingende virtuell maskin ifølge krav 16, der instruksjonssettet er et redusert instruksjonssett.
22. Sikkerhetspåtvingende virtuell maskin ifølge krav 18, omfattende et lager for prosesstyringsinformasjon for å lagre prosesstyringsinformasjon som blir brukt ved eksekvering av instruksjonene.
23. Sikkerhetspåtvingende virtuell maskin ifølge krav 18, der data lageret omfatter en datastruktur for faste data (201) og en datastruktur for dynamiske data (211).
24. Sikkerhetspåtvingende virtuell maskin ifølge krav 18, der instruksjoner omfatter en referanse til data lageret.
25. Sikkerhetspåtvingende virtuell maskin ifølge krav 16, der hver instruksjon identifiserer et lagringssted for den neste instruksjonen som skal eksekveres.
26. Sikkerhetspåtvingende virtuell maskin ifølge krav 16, der den sikkerhetspåtvingende virtuelle maskinen støtter boolske variabler, heltall, tegnstrenger og rå binærdata.
27. Sikkerhetspåtvingende virtuell maskin ifølge krav 16, der den virtuelle maskinen støtter regulært uttrykk-baserte sammenlikninger.
28. Sikkerhetspåtvingende virtuell maskin ifølge krav 16, der eksekveringen av instruksjonene genererer et utmatet handlingssett som spesifiserer hvordan gjen-nomføre påtvingningen av settet av sikkerhetsregler.
29. Sikkerhetspåtvingende virtuell maskin ifølge krav 16, der en instruksjon omfatter en operasjonskode (312), parametere (320, 350) og forgreningsfelter (330, 340).
30. Datamaskin-lesbart medium som inneholder instruksjoner som når de eksekveres i en datamaskin utfører en metode i henhold til hvilket som helst krav 1 til 15.
31. Datamaskin-lesbart medium ifølge krav 30, videre omfattende et datalager for data som blir brukt for å påtvinge settet av sikkerhetsregler.
32. Datamaskin-lesbart medium ifølge krav 30, der instruksjonene danner et flyttbart under-sikkerhetsprogram.
33. Datamaskin-lesbart medium ifølge krav 30, der hver instruksjon identifiserer en neste instruksjon som skal eksekveres.
NO20051525A 2004-04-27 2005-03-22 Fremgangsmåte og system for å håndheve et sett av sikkerhetsregler ved hjelp av en sikkerhetspåtvingende virtuell maskin NO336813B1 (no)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/832,798 US8607299B2 (en) 2004-04-27 2004-04-27 Method and system for enforcing a security policy via a security virtual machine

Publications (3)

Publication Number Publication Date
NO20051525D0 NO20051525D0 (no) 2005-03-22
NO20051525L NO20051525L (no) 2005-10-28
NO336813B1 true NO336813B1 (no) 2015-11-02

Family

ID=34939240

Family Applications (1)

Application Number Title Priority Date Filing Date
NO20051525A NO336813B1 (no) 2004-04-27 2005-03-22 Fremgangsmåte og system for å håndheve et sett av sikkerhetsregler ved hjelp av en sikkerhetspåtvingende virtuell maskin

Country Status (17)

Country Link
US (1) US8607299B2 (no)
EP (1) EP1596298B1 (no)
JP (1) JP4902129B2 (no)
KR (1) KR101143154B1 (no)
CN (1) CN1690957B (no)
AU (1) AU2005200911B2 (no)
BR (1) BRPI0501171A (no)
CA (1) CA2499688C (no)
CO (1) CO5680123A1 (no)
MX (1) MXPA05003403A (no)
MY (1) MY147383A (no)
NO (1) NO336813B1 (no)
NZ (1) NZ539022A (no)
RU (1) RU2390837C2 (no)
SG (1) SG116580A1 (no)
TW (1) TWI423040B (no)
ZA (1) ZA200502451B (no)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7469346B2 (en) * 2003-06-27 2008-12-23 Disney Enterprises, Inc. Dual virtual machine architecture for media devices
US8607299B2 (en) 2004-04-27 2013-12-10 Microsoft Corporation Method and system for enforcing a security policy via a security virtual machine
WO2006017388A1 (en) * 2004-08-03 2006-02-16 Softricity, Inc. System and method for controlling inter-application association through contextual policy control
US7913092B1 (en) * 2005-12-29 2011-03-22 At&T Intellectual Property Ii, L.P. System and method for enforcing application security policies using authenticated system calls
US7725614B2 (en) * 2006-08-08 2010-05-25 Sandisk Corporation Portable mass storage device with virtual machine activation
US20080127142A1 (en) * 2006-11-28 2008-05-29 Microsoft Corporation Compiling executable code into a less-trusted address space
US20080250407A1 (en) * 2007-04-05 2008-10-09 Microsoft Corporation Network group name for virtual machines
US8397216B2 (en) * 2008-02-29 2013-03-12 International Business Machines Corporation Compiler for a declarative event-driven programming model
US8365149B2 (en) * 2008-02-29 2013-01-29 International Business Machines Corporation Debugger for a declarative event-driven programming model
US8627299B2 (en) 2008-02-29 2014-01-07 International Business Machines Corporation Virtual machine and programming language for event processing
US9940181B2 (en) * 2008-07-14 2018-04-10 Nyotron Information Security Ltd. System and method for reacting to system calls made to a kernal of the system
US8533833B2 (en) * 2008-07-14 2013-09-10 Nyotron Information Security Ltd. System, a method, and a data-structure for processing system calls in a computerized system that implements a kernel
EP2194456A1 (en) * 2008-12-05 2010-06-09 NTT DoCoMo, Inc. Method and apparatus for performing a file operation
US20100162240A1 (en) * 2008-12-23 2010-06-24 Samsung Electronics Co., Ltd. Consistent security enforcement for safer computing systems
US8561090B2 (en) * 2009-02-26 2013-10-15 Red Hat, Inc. Method and an apparatus to implement secure system call wrappers
EP2237200A1 (en) * 2009-04-01 2010-10-06 Alcatel Lucent Method for filtering the streaming of virtual environment content assets, a related system, network element and a related virtual environment content asset
US8429648B2 (en) * 2009-05-28 2013-04-23 Red Hat, Inc. Method and apparatus to service a software generated trap received by a virtual machine monitor
US8813069B2 (en) * 2009-05-29 2014-08-19 Red Hat, Inc. Migration of functionalities across systems
KR101113820B1 (ko) * 2010-03-16 2012-02-29 소프트캠프(주) 응용프로그램의 파일 입출력 보안방법과 보안시스템
JP2012084071A (ja) 2010-10-14 2012-04-26 Toshiba Corp デジタルコンテンツの保護方法、復号方法、再生装置、記憶媒体、暗号装置
US9129138B1 (en) * 2010-10-29 2015-09-08 Western Digital Technologies, Inc. Methods and systems for a portable data locker
US8566899B2 (en) * 2011-03-16 2013-10-22 Symantec Corporation Techniques for securing a checked-out virtual machine in a virtual desktop infrastructure
US8661527B2 (en) 2011-08-31 2014-02-25 Kabushiki Kaisha Toshiba Authenticator, authenticatee and authentication method
JP5275432B2 (ja) 2011-11-11 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
AU2012337403B2 (en) 2011-11-16 2015-04-30 V-Key Inc Cryptographic system and methodology for securing software cryptography
JP5204290B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、システム、及び装置
JP5204291B1 (ja) 2011-12-02 2013-06-05 株式会社東芝 ホスト装置、装置、システム
JP5100884B1 (ja) 2011-12-02 2012-12-19 株式会社東芝 メモリ装置
JP5112555B1 (ja) 2011-12-02 2013-01-09 株式会社東芝 メモリカード、ストレージメディア、及びコントローラ
JP5275482B2 (ja) 2012-01-16 2013-08-28 株式会社東芝 ストレージメディア、ホスト装置、メモリ装置、及びシステム
US8966574B2 (en) 2012-02-03 2015-02-24 Apple Inc. Centralized operation management
CN102831342B (zh) * 2012-07-28 2016-01-06 北京深思数盾科技有限公司 一种提高安卓***中应用程序保护强度的方法
US9087191B2 (en) * 2012-08-24 2015-07-21 Vmware, Inc. Method and system for facilitating isolated workspace for applications
US9201811B2 (en) 2013-02-14 2015-12-01 Kabushiki Kaisha Toshiba Device and authentication method therefor
US8984294B2 (en) 2013-02-15 2015-03-17 Kabushiki Kaisha Toshiba System of authenticating an individual memory device via reading data including prohibited data and readable data
US20150277949A1 (en) * 2014-03-27 2015-10-01 Thiam Wah Loh Securing shared interconnect for virtual machine
US10402584B1 (en) * 2015-10-01 2019-09-03 Hrl Laboratories, Llc System and method for translating security objectives of computer software to properties of software code
US10289853B2 (en) * 2016-03-31 2019-05-14 Microsoft Technology Licensing, Llc Secure driver platform
US10650138B2 (en) * 2017-01-27 2020-05-12 Hewlett Packard Enterprise Development Lp System call policies for containers
US11831655B2 (en) 2017-10-02 2023-11-28 Qualcomm Incorporated Incorporating network policies in key generation
CN109639449B (zh) * 2017-10-09 2021-09-03 中兴通讯股份有限公司 虚拟化流镜像策略自动化管理的方法、设备及介质
CN109992974B (zh) * 2017-12-29 2023-04-14 中兴通讯股份有限公司 虚拟机字节码文件的保护方法、设备及可读存储介质
US10747711B2 (en) * 2018-03-20 2020-08-18 Arizona Board Of Regents On Behalf Of Northern Arizona University Dynamic hybridized positional notation instruction set computer architecture to enhance security
US11108823B2 (en) 2018-07-31 2021-08-31 International Business Machines Corporation Resource security system using fake connections
US11182507B2 (en) * 2018-08-30 2021-11-23 Micron Technology, Inc. Domain crossing in executing instructions in computer processors
US10915465B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory configured to store predefined set of domain registers for instructions being executed in computer processors
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US11500665B2 (en) 2018-08-30 2022-11-15 Micron Technology, Inc. Dynamic configuration of a computer processor based on the presence of a hypervisor
US10915457B2 (en) 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US10942863B2 (en) 2018-08-30 2021-03-09 Micron Technology, Inc. Security configurations in page table entries for execution domains using a sandbox application operation
US11481241B2 (en) * 2018-08-30 2022-10-25 Micron Technology, Inc. Virtual machine register in a computer processor
US10452868B1 (en) * 2019-02-04 2019-10-22 S2 Systems Corporation Web browser remoting using network vector rendering
US11880422B2 (en) 2019-02-04 2024-01-23 Cloudflare, Inc. Theft prevention for sensitive information
US11698980B2 (en) * 2019-09-12 2023-07-11 Arm Limited System, devices and/or processes for secure computation on a virtual machine
US11588859B2 (en) * 2021-03-15 2023-02-21 Zscaler, Inc. Identity-based enforcement of network communication in serverless workloads
WO2022270385A1 (ja) 2021-06-22 2022-12-29 デジタル・インフォメーション・テクノロジー株式会社 プログラム、情報処理装置、方法

Family Cites Families (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4792895A (en) * 1984-07-30 1988-12-20 International Business Machines Corp. Instruction processing in higher level virtual machines by a real machine
JP3381927B2 (ja) * 1997-01-17 2003-03-04 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 分散コンピュータ・システムにおいて資源を保護する方法
US6370571B1 (en) * 1997-03-05 2002-04-09 At Home Corporation System and method for delivering high-performance online multimedia services
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
US6125447A (en) * 1997-12-11 2000-09-26 Sun Microsystems, Inc. Protection domains to provide security in a computer system
US6496847B1 (en) * 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6505300B2 (en) * 1998-06-12 2003-01-07 Microsoft Corporation Method and system for secure running of untrusted content
US6170009B1 (en) 1998-07-17 2001-01-02 Kallol Mandal Controlling devices on a network through policies
US6658571B1 (en) * 1999-02-09 2003-12-02 Secure Computing Corporation Security framework for dynamically wrapping software applications executing in a computing system
US6546546B1 (en) * 1999-05-19 2003-04-08 International Business Machines Corporation Integrating operating systems and run-time systems
US6560774B1 (en) * 1999-09-01 2003-05-06 Microsoft Corporation Verifier to check intermediate language
GB2365561B (en) 1999-12-14 2004-06-16 Ibm Conditional access control
US6567974B1 (en) * 2000-02-25 2003-05-20 Sun Microsystems, Inc. Small memory footprint system and method for separating applications within a single virtual machine
WO2001065366A1 (en) 2000-03-02 2001-09-07 Alarity Corporation System and method for process protection
US6973493B1 (en) * 2000-05-09 2005-12-06 Sun Microsystems, Inc. Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment
CA2315449A1 (en) * 2000-08-10 2002-02-10 Ibm Canada Limited-Ibm Canada Limitee Generation of runtime execution traces of applications and associated problem determination
KR20020033859A (ko) 2000-10-30 2002-05-08 송영호 리눅스 보안 커널
WO2002086699A2 (en) * 2001-04-23 2002-10-31 Atmel Corporation Microprocessor for executing byte compiled java code
US20020184520A1 (en) * 2001-05-30 2002-12-05 Bush William R. Method and apparatus for a secure virtual machine
US6961941B1 (en) * 2001-06-08 2005-11-01 Vmware, Inc. Computer configuration for resource management in systems including a virtual machine
GB2376761A (en) * 2001-06-19 2002-12-24 Hewlett Packard Co An arrangement in which a process is run on a host operating system but may be switched to a guest system if it poses a security risk
US7698713B2 (en) 2001-09-20 2010-04-13 Google Inc. Altered states of software component behavior
GB2381092B (en) * 2001-10-19 2005-10-19 Ibm Object locking in a shared VM environment
JP2003173301A (ja) * 2001-12-07 2003-06-20 Hitachi Ltd ネットワーク,サーバおよびストレージのポリシーサーバ
JP4522705B2 (ja) 2001-12-13 2010-08-11 独立行政法人科学技術振興機構 ソフトウェア安全実行システム
US7415270B2 (en) * 2002-02-15 2008-08-19 Telefonaktiebolaget L M Ericsson (Publ) Middleware services layer for platform system for mobile terminals
US7536181B2 (en) * 2002-02-15 2009-05-19 Telefonaktiebolaget L M Ericsson (Publ) Platform system for mobile terminals
US7178049B2 (en) 2002-04-24 2007-02-13 Medius, Inc. Method for multi-tasking multiple Java virtual machines in a secure environment
US20030204500A1 (en) * 2002-04-25 2003-10-30 Jean-Francois Delpech Process and apparatus for automatic retrieval from a database and for automatic enhancement of such database
US20030229794A1 (en) * 2002-06-07 2003-12-11 Sutton James A. System and method for protection against untrusted system management code by redirecting a system management interrupt and creating a virtual machine container
US7082598B1 (en) * 2002-07-17 2006-07-25 Vmware, Inc. Dynamic driver substitution
US7149510B2 (en) * 2002-09-23 2006-12-12 Telefonaktiebolaget Lm Ericsson (Publ) Security access manager in middleware
JP2004126854A (ja) 2002-10-01 2004-04-22 Mitsubishi Electric Corp 攻撃対策装置
US7117481B1 (en) * 2002-11-06 2006-10-03 Vmware, Inc. Composite lock for computer systems with multiple domains
US7657937B1 (en) * 2003-01-02 2010-02-02 Vmware, Inc. Method for customizing processing and response for intrusion prevention
US7203944B1 (en) * 2003-07-09 2007-04-10 Veritas Operating Corporation Migrating virtual machines among computer systems to balance load caused by virtual machines
US20050044301A1 (en) * 2003-08-20 2005-02-24 Vasilevsky Alexander David Method and apparatus for providing virtual computing services
US7478388B1 (en) * 2004-04-21 2009-01-13 Vmware, Inc. Switching between multiple software entities using different operating modes of a processor in a computer system
US8607299B2 (en) 2004-04-27 2013-12-10 Microsoft Corporation Method and system for enforcing a security policy via a security virtual machine

Also Published As

Publication number Publication date
EP1596298B1 (en) 2017-02-08
KR20060044764A (ko) 2006-05-16
EP1596298A1 (en) 2005-11-16
US8607299B2 (en) 2013-12-10
AU2005200911A1 (en) 2007-02-15
CO5680123A1 (es) 2006-09-29
NZ539022A (en) 2007-05-31
KR101143154B1 (ko) 2012-05-08
AU2005200911B2 (en) 2010-10-21
CA2499688A1 (en) 2005-10-27
JP4902129B2 (ja) 2012-03-21
NO20051525L (no) 2005-10-28
NO20051525D0 (no) 2005-03-22
TWI423040B (zh) 2014-01-11
CN1690957A (zh) 2005-11-02
JP2005316964A (ja) 2005-11-10
CA2499688C (en) 2014-02-25
BRPI0501171A (pt) 2006-01-10
TW200617702A (en) 2006-06-01
RU2390837C2 (ru) 2010-05-27
CN1690957B (zh) 2010-06-09
MY147383A (en) 2012-11-30
SG116580A1 (en) 2005-11-28
RU2005107408A (ru) 2006-08-27
MXPA05003403A (es) 2005-10-31
ZA200502451B (en) 2006-12-27
US20050257243A1 (en) 2005-11-17

Similar Documents

Publication Publication Date Title
NO336813B1 (no) Fremgangsmåte og system for å håndheve et sett av sikkerhetsregler ved hjelp av en sikkerhetspåtvingende virtuell maskin
KR102206115B1 (ko) 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지
US5748964A (en) Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
AU2014348812B2 (en) Improved control flow integrity system and method
US6075940A (en) System and method for pre-verification of stack usage in bytecode program loops
US5815661A (en) Platform independent object and object application loader and method
EP1984843B1 (en) Software system with controlled access to objects
US10229268B2 (en) System and method for emulation-based detection of malicious code with unmet operating system or architecture dependencies
CA3167549A1 (en) Method and apparatus for authority control, computer device and storage medium
US20240143739A1 (en) Intelligent obfuscation of mobile applications
CN110717181B (zh) 基于新型程序依赖图的非控制数据攻击检测方法及装置
US20080209265A1 (en) Information-Processing Method and Apparatus
Qiu et al. Libcapsule: Complete confinement of third-party libraries in android applications
Requet AB model for ensuring soundness of a large subset of the Java Card virtual machine
CN115994061A (zh) 识别文件打开方式篡改方法、装置、电子设备和存储介质
CN117688551A (zh) 启动路径白名单更新方法、装置、电子设备及存储介质
BRPI0501171B1 (pt) Method in a computing device to enforce a security policy
Nature Type CWE-119: Failure to Constrain Operations within the Bounds of a Memory Buffer
Mappings Weakness Ordinalities

Legal Events

Date Code Title Description
CHAD Change of the owner's name or address (par. 44 patent law, par. patentforskriften)

Owner name: MICROSOFT TECHNOLOGY LICENSING, US

MM1K Lapsed by not paying the annual fees