Software Security Requirements
In combinatie met het identificeren van veiligheidsrisico's in verband bekend als een specifieke toepassing of toepassing genre, moeten ontwikkelaars een beoordeling van de veiligheid voor de toepassing ervan. Deze analyse moet komen tot een evenwichtige meting van het niveau van beveiliging nodig is voor een aanvraag. Het hoeft niet aan de uitersten van het spectrum de veiligheid na te denken. Aangezien het inzicht dat het ware en gegarandeerde veiligheid niet bestaat, de bescherming tegen bekende risico's en het minimaliseren van het aantal geslaagde aanvallen en de effecten daarvan is over het algemeen op een aanvaardbaar niveau van veiligheid. Degenen die betrokken zijn bij de ontwikkeling cyclus van de aanvraag moet hun eigen "aanvaardbaar" niveau van beveiliging vast te stellen, door onderzoek van de bekende risico's, de doelstellingen van de aanvraag, en de methoden gebruikt om het gewenste beveiligingsniveau te voeren. Om te komen tot de veiligheid eisen, managers en ontwikkelaars kunnen het nuttig vinden om zich te concentreren op de volgende, algemeen bekend risicogebieden: · Gebruiksvriendelijke authenticatie en access control · Data opslag van vertrouwelijke informatie · Veiligheid van de externe communicatie-netwerk · Beveiliging van de ingangspunten voor externe applicaties en het besturingssysteem Van deze vier algemene gebieden toepassing ontwerpers en ontwikkelaars zich kunnen identificeren een minimale set van belangrijke functies te analyseren. Afhankelijk van de functionaliteit van de applicatie, een aantal risico-gebieden zijn meer relevant dan andere. Te beveiligen of niet naar SecureDe toevoeging van de beveiliging om een aanvraag van invloed op een aanvraag op verschillende manieren. Het wordt onmiddellijk meer complex, zoals de code het pad neemt een nieuwe wending aan geschikt zijn voor de veiligheid methoden. De prestaties van een aanvraag zou kunnen worden belemmerd, met name de toevoeging van encryptie operaties. Deze operaties zijn CPU-intensief is te wijten aan de complexe algoritmes. De efficiëntie van een aanvraag kan ook worden geofferd als beveiliging wordt toegepast in gebieden waar het weinig voordelen biedt. Dit kan gebeuren als de veiligheid methoden blindelings toegepast op alle onderdelen van een aanvraag zonder na te denken als aan hun eisen. De volgende paragrafen geven een redelijk uitgangspunt om een basisniveau van veiligheid te bepalen welke behoeften. Tip Het is een goede gewoonte om de beveiliging die nodig is voor elke module of component binnen een toepassing te overwegen. Weersta de drang om de veiligheid deken methoden in meerdere modules of componenten van toepassing zijn. In plaats daarvan, bepaalt de meest geschikte niveau van beveiliging voor elk. Evaluatie Authenticatie en Access Control EisenAuthenticatie van de gebruiker wordt vaak behandeld door het besturingssysteem waarop de applicatie draait, maar een aantal klassen van de aanvraag nodig heeft om te gaan met authenticatie op zijn eigen. Ingebedde toepassingen, applicaties die functie onafhankelijk van het besturingssysteem, en gedistribueerde webtoepassingen hebben vaak behoefte aan een zekere mate van authenticatie van de gebruiker en toegangscontrole tegemoet te komen. Bekende voorbeelden van toepassingen die de veiligheid van deze methoden zijn Internet-commerce (e-commerce) toepassingen, waarbij gebruikers aankopen te doen via een website, of de klant toegang tot de database. In beide gevallen, de mogelijkheid voor veel verschillende gebruikers of groepen van gebruikers voor het gebruik van het systeem vergt strikte controle van de toegankelijke gegevens. De applicaties moeten methoden om een aparte gebruikers toegang tot de systemen via een login-methode; ze moeten ook beperkingen ten aanzien van de individuele users'respective financiële gegevens. Het bepalen van de authenticatie en access control eisen, moeten ontwerpers onderzoekt de interacties binnen de applicatie en met de wereld die haar omringt. Dit omvat de methodes waarmee gebruikers toegang tot de applicatie-vergadering rechtstreeks op een terminal of de toegang tot het netwerk zijn twee methoden die zouden kunnen vereisen verschillende authenticatie systemen. Een toepassing die is alleen toegankelijk tijdens de vergadering op het bureaublad kan effectief worden beveiligd via de authenticatie methoden van het besturingssysteem waarop het draait. Netwerk applicaties die worden benaderd door meerdere gebruikers tegelijkertijd, of via welke gebruikers toegang krijgen tot de gegevens van gemeenschappelijke databases, een sterke impuls voor de toegang en authenticatie. Het niveau van verfijning en de flexibiliteit van de toegang en authenticatie mogelijkheden van het besturingssysteem te bepalen of eigen methoden moeten worden ontwikkeld. Standalone of ingebedde toepassingen worden vaak ontwikkeld vanuit het niets en vragen daarom om hun eigen gespecialiseerde methoden. Eisen voor data-opslagData-opslag weerspiegelt de methode die wordt gebruikt om particuliere en gevoelige informatie op te slaan. Dit omvat het juiste gebruik van het bestand bescherming methoden van het onderliggende besturingssysteem (zoals het opnieuw bestandspermissies digden) en een sterkere methoden ter bescherming van individuele gegevens (zoals encryptie). In veel gevallen is het gebruik van het besturingssysteem toestemming methoden voldoende is om de vereiste mate van zekerheid te bieden. Encryptie kan gebruikt worden om uiterst gevoelige gegevens te beschermen, zoals gebruikersgegevens en kredietinformatie. Het niveau waarop de aanvraag dient het opslaan van gegevens, en de aard van die gegevens station aan de eisen voor de opslag van gegevens beveiliging. De opslag van gevoelige informatie is vaak de gating factor bij het bepalen of een hoog beveiligingsniveau encryptie nodig is. Gebruikersgegevens, zoals wachtwoorden, adressen, telefoonnummers en financiële gegevens, moet worden beschouwd als kwetsbare en ook behandeld met een hoog beveiligingsniveau. Configuratie-informatie kan vaak voldoende beveiligd met standaard methoden bestandstoegang. Bij de vorming van de eisen voor de opslag van gegevens, kunnen ontwerpers in de verleiding komen om te standaardiseren op een niveau van beveiliging. Bijvoorbeeld, als een wachtwoord wordt opgeslagen in een configuratie bestand samen met andere niet-gevoelige informatie, kan de verleiding sterk om encryptie te gebruiken op het hele bestand als een deken beveiligingsmethode. Om te bepalen data-opslag eisen, onderzoekt de behoeften van alle betrokken componenten. In dit voorbeeld is het toepassen van encryptie op nonsensitive gegevens kunnen worden beschouwd als inefficiënt als gevolg van de computationele kosten van de operaties encryptie, evenals het ontbreken van granulaire controle van de overige informatie in het dossier. Een enkel element kan niet gemakkelijk worden geopend als het hele bestand is gecodeerd. Het gaat om de complexiteit van andere elementen de toegang is dan dramatisch toegenomen. Netwerk-en Entry Point Security RequirementsToepassingen communiceren met gebruikers van het besturingssysteem en andere applicaties via de toegangspunten. Deze kunnen op dezelfde machine als de applicatie of via een netwerk, vaak zijn ze op beide. De methoden voor het verstrekken van de toegangen tot de toepassing en de ondersteuning voor netwerk communicatie zijn vaak een en hetzelfde en daarom is ze gegroepeerd hier. Beveiliging van het netwerk van communicatie het best worden aangepakt door het onderzoeken van de inhoud van de berichten worden verzonden. Toepassingen die communicatie via het netwerk gebruiken voor informatieve berichten of het passeren van statische gegevens kunnen niet verlangen dat sterker is dan de betrouwbaarheid protocol ondersteunt. Opnieuw, zoals in het geval van internethandel, een applicatie die verstuurt en ontvangt de gebruiker gevoelige informatie die rechtvaardigt de toevoeging van een hoger veiligheidsniveau methode. Entry wijst ook de veiligheid te bepalen welke behoeften voor toepassingen die communiceren in een genetwerkte omgeving. De toegangen tot een aanvraag vereist een hoog niveau van analyse, omdat ze omvatten en voorzien van de communicatie via het netwerk functionaliteit. Anderen ook interactie met de applicatie via de ingangen. Deze functionele gebieden kan worden beschermd via een combinatie van beschikbare methoden besturingssysteem en de gedefinieerde toegangscontrole en authenticatie gebruikte regelingen die binnen de applicatie. Analyse van de interacties die een aanvraag heeft met de buitenwereld kunnen de ontwerpers om het meest geschikte niveau van beveiliging vast te stellen die nodig zijn. Deze interacties en boeking achteraf punten worden gecategoriseerd als · Netwerkkaarten interactie · Interactie met andere toepassingen · Interactie met de respectieve besturingssysteem Deze categorieën zijn bekende functionele gebieden, en ontwerpers waarschijnlijk al weten of hun aanvraag interageert in een van deze manieren. De volgende stap is te overwegen elk gebied van de veiligheid. Netwerk, de toepassing en systeem interactieDe populariteit van het internet leidt tot vele nieuwe toepassingen die samenwerken met andere onderdelen binnen de lokale systemen en met externe systemen. Toepassingen die functie onafhankelijk van andere applicaties en interactie alleen met zichzelf uiteraard niet nodig netwerken risico-analyse. Netwerk interactie kan aanwezig zijn op verschillende niveaus. Een aanvraag kan volledig client / server-georiënteerd, voor gebruik op remote systemen verspreid over het internet. De noodzaak voor de veiligheid in deze toepassingen wordt het aanmerkelijk complexer is dan in stand-alone toepassingen. Verschillende afhankelijkheden moeten worden onderscheiden. Het niveau waarop de ontwikkelaars willen beveiligingsmechanismen bieden bij de toepassing moeten worden overwogen. De ontwerpers zouden kunnen besluiten om geen interne veiligheid mechanismen. De veiligheid van de netwerk applicatie vertrouwt dan op de veiligheid van de netwerken waarop het geheel draait en communiceert; het netwerk Topol gie en firewall bepalen van de maximale niveau van veiligheid dat een aanvraag kunnen ervaren. De ontwerper kan kiezen om afhankelijkheden schuwen en de hoogste graad van beveiliging mogelijk is binnen de applicatie. Dit zijn de twee uitersten de meeste toepassingen vallen ergens in het midden. Aanvragen kunnen ook gebruik maken van netwerkfaciliteiten voor gelokaliseerde communicatie die niet bestemd is verder te gaan dan de grenzen van het systeem waarop het draait. Er moet rekening worden gehouden met de aard van deze mededeling in om te bepalen of de uitvoering schept onnodig risico. De noodzaak voor de interactie tussen toepassingen of met het besturingssysteem impliceert niet een vereiste voor netwerk communicatie. Ontwerpers moeten onderzoeken de uitvoering methoden die de vereiste functionaliteit te bieden. Toepassingen maken vaak gebruik van sockets-gebaseerde communicatie methoden om deze plaatsen van binnenkomst, omdat ze zijn snel en eenvoudig te implementeren. Het gebruik van stopcontacten kan meer functionaliteit dan nodig is evenwel voorzien. Toepassingen die moeten alleen communiceren met andere toepassingen op het lokale systeem of met hun eigen besturingssystemen hebben veel communicatie methoden tot hun beschikking, such as non-internet aansluitingen and IPC mechanismen. Gewoonlijk UNIX systemen maken gebruik van socket communicatie vanwege hun gebruiksgemak en overvloed aan documentatie. UNIX ondersteunt verschillende smaken van sockets-gebaseerde communicatie, waarvan er twee de populaire IP-socket en UNIX domain sockets. IP-sockets, zoals de naam al zegt, gebruik van het IP-protocol voor communicatie, en ondersteuning voor externe communicatie via het netwerk, waardoor de lokale en externe processen te communiceren met de applicatie. Veel applicaties die communiceren alleen met processen op een lokaal systeem en dat niet nodig netwerk communicatie vermogens te gebruiken IP-sockets als een standaard interface. IP-sockets zijn niet ideaal in deze situatie omdat ze automatisch toegang bieden tot lokale en externe klanten. Domain sockets gebruik van een intern UNIX-protocol voor de communicatie en niet een ondersteunend netwerk voor communicatie, ze geven wel een connectie-georiënteerd communicatiekanaal. Domain sockets hebben hun aandeel in de risico's als het onjuist gebruikt. UNIX domain sockets ondersteunen het passeren van file descriptors evenals informatieve gegevens. Dit betekent dat pointers of handgrepen naar andere delen van het systeem kunnen worden doorgegeven van de ene toepassing naar de andere. Deze functionaliteit is alleen beschikbaar in de UNIX domain sockets. Als deze mogelijkheden is niet wenselijk of niet gerechtvaardigd is, afleiding van sockets gebaseerde communicatie naar een andere IPC mechanisme misschien een betere keuze zijn. Gezien de aard van de informatie die naar en van de applicatie helpt bepalen de vereisten voor de communicatie methode. Ontwerpers moeten evalueren van de mogelijkheden tot interactie van de aanvraag voor een standaard ingebouwde functie. In dit voorbeeld is de toepassing die gebruikmaakt van IP-sockets is in gevaar omdat het mogelijk maakt systemen op afstand verbinding te maken met de applicatie wanneer zij niet moeten worden toegestaan. Een beter ontwerp de vereiste documenten voor de interactie met alleen lokale toepassingen. Dit uitgebreide vereiste leidt de ontwikkelaar te gebruiken iets anders dan IP-sockets. Besturingssysteem InteractiesInteractie met het besturingssysteem zorgt dikwijls voor een ander niveau van veiligheidsvraagstukken. Veel niveaus van interactie kan optreden met een besturingssysteem-netwerk interactie, inter-proces Gemeen tie, en het manipuleren van bestanden zijn al genoemd. Twee andere vormen van interactie ook aandacht moet worden besteed: De uitvoering van externe programma's en het gebruik van het systeem en andere extern gedefinieerde gesprekken zijn veel voorkomende oorzaken van uitbuiting. Belangrijke kwesties, zoals machtigingen, authenticatie, toegangscontrole, en de validatie van invoer moet worden gezien in samenhang met het besturingssysteem interacties. System calls en externe applicaties is een grote mate van risico's bij verkeerd gebruikt omwille van hun natuur. Deze functies bestaan vaak in bibliotheken die tegelijkertijd worden gebruikt door vele toepassingen en dat is vaak de directe toegang tot het besturingssysteem de levering van onderdelen en middelen. Exploitatie van een aanvraag via deze functies kunnen hebben op verschillende toepassingen en het systeem. System calls bieden toegang tot de vele algemene doeleinden en systeem-specifieke functionaliteiten. Ze laten een aanvraag om te interageren met specifieke hardware-onderdelen, zoals een kernel-level functionaliteit. De veiligheid van het besturingssysteem en de onderdelen moet worden beschouwd bij het gebruik van system calls. Als een toepassing met elkaar verbindt gebruiker of het netwerk gegevens met het besturingssysteem via het systeem bellen, moet ontwerpers een minimum te beperken blootstelling aan gevaarlijke, onverwachte en ongepaste gegevens. De uitvoering van externe toepassingen is een andere veel voorkomende, niet-gedekte interactie. Ontwikkelaars vaak ontwerpt een aanvraag een beroep doen op andere toepassingen door verschillende methoden. Er zijn redenen meen SEV een ontwikkelaar zou willen om dit te doen, zoals het onderscheid te maken tussen functies of het milieu controle te krijgen. Bellen andere toepassingen ook kunnen ontwikkelaars bestaande functionaliteit te gebruiken en de applicatie de uitvoering te versnellen. Er is een inherente gevaar dat in een ander programma te bellen vanuit een toepassing-een extern programma kan zelden worden vertrouwd. De toepassing bestaat in een dynamische omgeving waar het mogelijk is aan te passen of een ander programma te vervangen. Het probleem ligt in de gebruikte methoden om de toepassing te bellen. UNIX-gebaseerde systemen ondersteunen vaak functies die worden aangeroepen system () en exec (), die de bijgeleverde parameters doorgeven als een string om de uitvoering van de standaard UNIX shell en deelproces, respectievelijk. Het systeem () oproep keert terug naar het aanroepende programma, wanneer compleet, maar exec () beëindigt het lopende programma en vervangt deze met de aangeroepen programma. Windows-gebaseerde systemen hebben de exec () oproep die het mogelijk maakt de uitvoering van andere programma's. In tegenstelling tot UNIX, de Windows-versie van de exec () loopt het programma in een bepaald deelproces, en de aanroepende functie niet te beëindigen. Zonder input validatie, kunnen aanvallers gezet shell meta-karakters in de input-stroom, waardoor de shell om mogelijk schadelijke commando's en parameters uitvoeren. Het gebruik van deze functies is over het algemeen afgekeurd, en moeite moet worden gedaan om het gebruik ervan te vermijden, omdat zij het mogelijk maken de uitvoering van niet-vertrouwde toepassingen en ongecontroleerd. Als alternatief kunnen ontwerpers direct op te nemen de benodigde functionaliteit in een applicatie. Het gebruik van vrij beschikbare, open-source software sterk vermindert de inspanning die nodig is om dit te doen. Veel besturingssystemen ook mogelijk functionaliteit te lopen op verschillende niveaus voorrecht. UNIX heeft haar "root" privileges, Windows heeft "Administrator" en "Systeem" privileges. Deze speciale rekeningen kunnen uitvoeren van administratieve taken en hebben meer interactie met het besturingssysteem en de bijbehorende diensten dan andere rekeningen te doen. Programma's kunnen worden weggeschreven naar niveaus voorrecht als er voldoende gespecialiseerde functionaliteit is nodig verheffen. Een aanvraag en het besturingssysteem waarop het draait kan in gevaar komen als privileges zijn niet zorgvuldig gecontroleerd. Het model van de minste privilege suggereert dat een aanvraag moet worden uitgevoerd met de minimale set van privileges die nodig zijn om de meeste functies uit te voeren. Functionaliteit die vereist hogere privileges moeten worden geïsoleerd in zijn eigen module, maar dat is gedefinieerd als een proces-, een klasse, een aanvraag, of zelfs een ander systeem. Zelfs dan, dat de set van functionaliteit moet ook draaien op de minst bevoorrechte niveau tot deze verhoogde privileges zijn vereist. Op dat moment moet een hogere privileges worden verkregen, en na voltooiing van de functionaliteit, de voorrechten moeten worden teruggebracht naar het minimum niveau. Nota Meta-tekens zijn tekens die nemen een speciale betekenis in een bepaalde context. Bijvoorbeeld, in de standaard UNIX shell, de puntkomma (;) is een opdracht-scheidingsteken, dat is, kan een groot aantal opdrachten worden gelegd op een lijn als een puntkomma is tussen hen. De pijp (|) karakter stuurt de uitgang van de terminal in wat volgt de pijp, waardoor de output van het ene programma worden opgenomen in een ander. ConclusieSommige ontwikkelaars van toepassingen kiezen om te vergeten of te negeren veiligheid binnen hun toepassingen en zet zich aan de genade van het netwerk van de klant of het besturingssysteem en de beveiligingsfuncties. Met behulp van deze deken beveiligingsmodel schuwt de verantwoordelijkheid om veilige toepassingen te verstrekken aan het publiek. De zekerheid filosofie pretendeert een sterke en uitgebreide beveiliging ideologie die niets over de veiligheid van de externe componenten aan de toepassing ervan. Een aanvraag moet altijd zo veilig kan worden met betrekking tot zichzelf en de externe componenten waarmee zij samenwerkt. Het niveau van de follow-through is overgelaten aan het oordeel van de ontwerper of ontwikkelaar, echter een artikel afkomstig van Tamas Querolin
|
|||||
|