secure coding guidelines
Aquest tutorial explica la codificació segura, com evitar les vulnerabilitats relacionades amb la seguretat i proporciona directrius i llista de verificació per a les pràctiques de codificació segura:
Per tenir integrada la seguretat al programari i implementar directrius i pràctiques recomanades de codificació segura, tota l'organització juntament amb l'equip identificat per treballar en el desenvolupament d'aplicacions previst han de tenir en compte certs aspectes.
Aquí analitzarem aquells aspectes que ajuden a desenvolupar un programari segur.
És tan senzill com això si un desenvolupador no sap a què s’entén 'Seguretat del programari' i com un pirata informàtic pot piratejar el seu programari, fer-ne el control i provar d’explotar-lo, és simplement impossible codificar un programari segur. Per tant, el desenvolupador primer ha d’entendre el significat de la codificació segura.
Què aprendreu:
- Què és la codificació segura?
- Directrius de codificació segura
- Llista de comprovació per a pràctiques de codi segur
- Conclusió
Què és la codificació segura?
La codificació segura consisteix a dissenyar i desenvolupar programari mitjançant evitant els punts febles que condueixen a vulnerabilitats relacionades amb la seguretat en complir els estàndards de seguretat especificats i les millors pràctiques del sector.
inclouen tipus de proves del sistema informàtic
La primera pregunta que sorgeix a la ment de tothom és 'Quant es requereix seguretat per al nostre programari' o bé Quan podem dir que el nostre programari està protegit? i Quins són aquests estàndards de seguretat ?
Els fraus i les amenaces a la seguretat augmenten dia a dia i veiem noves varietats i formes de pirateria, fins i tot en l’anomenat programari més segur.
Recentment hem sentit que el programa Aaadhar d’UIDAI estava manipulat per obtenir dades personals. Per tant, és realment difícil saber quanta seguretat es requereix per al programari i quins són els estàndards de seguretat, tret que entenguem les amenaces del programari i les prioritzem en funció dels riscos per al negoci.
Pot ser que sigui difícil proporcionar una protecció del 100% de seguretat al programari, però si l 'equip del programa analitza Riscos i valors que estan implicats en el seu programari, és a dir, possibles amenaces i si l’equip es pot encarregar de mitigar aquests riscos, seria bo des del punt de seguretat de l’aplicació.
Per tant, la primera tasca de l’equip és identificar i analitzar els riscos i valors que intervenen en la seva aplicació, entendre les possibles opcions de mitigació i adoptar la millor opció en conseqüència.
Per tant, un cop identificades les deu vulnerabilitats principals, es classifiquen gairebé tots els atacs als quals és probable que s’enfronti un programa. Això ajudarà a donar sentit a les amenaces i a prioritzar els esforços de seguretat i desenvolupament més cap a la prevenció que la mitigació.
Per exemple. Tot i que estem planejant desenvolupar una aplicació relacionada amb la salut, que gestioni i emmagatzemi les dades de salut de la persona i la seva informació personal, el principal risc de seguretat de l’aplicació és robar les dades de salut de la persona.
Mitigació de riscos
Per mitigar el risc,
- La implementació de la seguretat per a l'accés a les dades per part d'un usuari no autoritzat s'ha de gestionar amb l'autenticació i l'autorització adequades (implementacions de polítiques de contrasenyes fortes, autenticació de dos factors).
- Cal tenir cura de garantir que no hi hagi cap fuita de dades durant la transmissió de dades d’una font a una altra, implementant canals segurs (HTTPS) de transmissió de dades i implementant el xifratge de dades durant el trànsit.
- La manipulació o el robatori de dades en repòs també és una altra possibilitat. Per tant, l’emmagatzematge de dades de salut personal (mitjançant xifratge) és molt essencial.
Abans d’anar a “Secure Coding Standard”, sempre és millor que tot l’equip del programa tingui un 'Sessió de conscienciació sobre seguretat' i discutir i fer una pluja d'idees sobre,
- El requisit de seguretat per al seu producte específic.
- Possibles avantatges que tindria un pirata informàtic piratejant el seu sistema.
- Possibles formes i mitjans de compromís de seguretat de la seva aplicació.
- Es van seguir pràctiques de seguretat habituals en un sector i un domini similars.
- Comprensió dels problemes de seguretat típics dels seus respectius programes.
També ajuda l’equip a manejar-se millor, si pot entendre-ho Fonts de les vulnerabilitats que pot afrontar el seu programari i els motius pels quals es construeix el programari Pobre / Inadequat Seguretat .
Motius per a una implementació de seguretat inadequada
En general, els següents són alguns dels motius per a una implementació de seguretat inadequada a l'aplicació.
- Es dóna prioritat a l'alliberament funcional que als aspectes de seguretat.
- Desconeixement o manca de consciència sobre la seguretat del programari i els pirates informàtics.
- No hi ha prou claredat sobre el programa ni sobre el propi disseny de programari.
- La complexitat del programa.
- No hi ha prou dades, informació sobre el sistema en directe on es desplegarà.
- No es té en compte la seguretat a les fases SDLC.
- Coneixement i comprensió insuficients de les especificitats del llenguatge utilitzat al programari.
- L'equip i els desenvolupadors no tenen prou coneixement sobre les directrius de codificació de seguretat.
Sabem que no és que tots els desenvolupadors i verificadors siguin conscients de la seguretat d’una aplicació i que no puguin entendre en profunditat les vulnerabilitats i les explotacions de seguretat, especialment en l’aplicació en què treballarien. En general, coneixeran, 'Com codificar funcionalment' però no tots saben 'Com codificar de forma segura'.
Per tant, l’aspecte molt important perquè l’organització adopti pràctiques de codificació segura al seu programari és primer 'Entrena gent' . Per tant, és molt important formar el seu equip sobre aspectes de codificació segura, les millors pràctiques de codificació de seguretat i l’ús correcte de les eines.
El principi de disseny de seguretat de programari més important és 'Implementar seguretat per disseny i predeterminat' .
Directrius de codificació segura
Per aconseguir seguretat, és molt essencial tenir un 'Estàndard de codificació segura' identificat per a un programa al principi del desenvolupament de l’aplicació, cosa que ajuda l’equip a tenir cura dels valors predeterminats segurs del programari i ajudar-lo a protegir-lo dels atacs.
com ordenar la matriu int a Java
És fonamental assegurar-se que tot l’equip ho sigui S'ha d'aplicar aquesta norma , independentment del llenguatge de codificació i de les eines que utilitzen al programa.
A continuació es detallen alguns exemples que cal implementar per defecte en el disseny de codi segur:
- L'accés s'ha de restringir només als usuaris autenticats i cal implementar l'autenticació a cada capa.
- Els canals de comunicació han d’estar xifrats per protegir els testimonis d’autenticació.
- Totes les claus, contrasenyes i certificats han d’estar emmagatzemats i protegits adequadament.
- Cal implementar el xifratge de fitxers, xifrat de base de dades i xifratge d’elements de dades.
Selecció d'idioma per a una codificació segura
La selecció de l’idioma per a la codificació pot no dependre d’una codificació segura. No hi ha res específic com a llenguatge segur o no protegit per codificar per construir un programari segur.
És com utilitzem un llenguatge de programació per construir el programari i el coneixement profund que té el desenvolupador sobre el llenguatge de codificació per implementar aspectes de seguretat.
Tanmateix, s’aclareix que Els estàndards de codificació segura són independents de la selecció de l’idioma, les pràctiques recomanades del codi segur depenen de l’idioma, depenen de la plataforma i depenen de la implementació. .
Per tant, per tenir un codi segur, és fonamental que el desenvolupador tingui un coneixement profund de l’idioma que s’utilitza al programa, de manera que es puguin implementar fàcilment les millors pràctiques de seguretat.
Exemple:
- La probabilitat de vulnerabilitat de desbordament de memòria intermèdia difereix d'un idioma a un altre, però C, C ++ i Assembly es consideren més susceptibles a causa de les seves capacitats de gestió de memòria obsoletes. Diverses funcions C lib estàndard, com ara strcpy () i memcpy (), són vulnerables als atacs de desbordament de memòria intermèdia. Un ús incorrecte d’aquestes funcions en copiar una memòria intermèdia d’origen que és massa gran per cabre a la memòria intermèdia de destinació provoca un desbordament de memòria intermèdia.
- El problema comú a les aplicacions web basades en Java són les possibles fuites de recursos que es poden produir a causa dels recursos del sistema oberts, com ara un fitxer, un sòcol i connexions de base de dades.
El següent aspecte de la seguretat és el eines a utilitzar al programa d'aplicacions per optimitzar la seguretat, mitjançant eines com Entorns de desenvolupament integrats seran més beneficiosos ja que aporten molts Alertes als usuaris i crideu l'atenció sobre aquestes alertes per intentar millorar la qualitat del programari.
- La integració de biblioteques o connectors comercials o de codi obert com Eclipse, Spring Tool Suite, RAD amb IDE ajuda els desenvolupadors a escriure codi segur mitjançant la detecció i identificació de codi potencialment vulnerable i proporciona alertes sobre troballes relacionades amb l’execució de fitxers maliciosos, fugues d’informació i tractament incorrecte dels errors.
També és essencial utilitzar el fitxer Analitzadors estàtics i dinàmics per millorar els aspectes de seguretat del programari. En general, els analitzadors estàtics s’optimitzen per a tipus específics d’errors, de manera que acaben trobant un gran nombre de falsos positius mentre identifiquen errors específics. De vegades hi ha possibilitats que també es perdin els errors reals.
Per tant, es recomana utilitzar-lo múltiples analitzadors estàtics per obtenir una millor cobertura dels diferents tipus d’errors i evitar molts falsos positius. De vegades, també es recomana dur a terme proves manuals a eliminar els falsos positius .
Regles i recomanacions de codificació segura
Serà bo per al programa definir un conjunt de fitxers Regles i recomanacions de codificació segura a la qual es pot avaluar el codi font de conformitat perquè els provadors puguin dur a terme el 'Proves de conformitat de conformitat' per a cadascun d’aquests estàndards de codificació segurs.
Per tant, el codi de seguretat es pot certificar com a conforme o no conforme utilitzant aquestes regles contra el punt de referència establert.
Poques de les regles esmentades a continuació es poden utilitzar per comprovar si hi ha infraccions de seguretat:
- Cal tancar els fitxers quan ja no siguin necessaris.
- Sempre que es passa una estructura a través d’un límit, s’ha d’evitar la filtració d’informació.
- Els objectes s’han de declarar amb la durada d’emmagatzematge adequada.
Per tant, cal dissenyar i dur a terme casos de prova per verificar aquestes normes per comprovar el compliment de la conformitat. També s’identifica que la majoria de les vulnerabilitats són causades per errors típics de programació.
Per tant, el desenvolupador ha d’entendre 'Mètode de codificació insegur' , mentre també aprenen les millors pràctiques de codificació segura. És ideal per reunir els errors de programació més habituals que contribueixen a les vulnerabilitats de seguretat de la seva aplicació, de manera que es puguin atendre mentre es codifiquen.
Aquests errors de programació típics es produeixen principalment a partir de desbordaments de memòria intermèdia, scripts entre llocs i defectes d'injecció.
Algunes de les vulnerabilitats típiques de programació inclouen:
- Injecció SQL (Neutralització incorrecta d’elements especials utilitzats en una ordre SQL).
- Desbordament de nombres enters.
- Desbordament de memòria intermèdia (còpia de memòria intermèdia sense comprovar la mida de l'entrada).
- Cadena de format sense control.
- Falta l'autenticació i l'autorització (autorització incorrecta).
- Exposició de dades sensibles.
- Gestió incorrecta d’errors.
Alguns d'aquests errors poden provocar un bloqueig del sistema, l'accés imprevist al sistema i la pèrdua del control del programari per part dels pirates informàtics.
Errors comuns de programació que cal evitar
A continuació s’enumeren alguns errors de programació habituals que cal evitar:
- Neutralització incorrecta d’elements especials utilitzats en una ordre SQL (‘injecció SQL’).
- Còpia de memòria intermèdia sense comprovar la mida de l'entrada ('Clàssic desbordament de memòria intermèdia').
- Falta l'autenticació per a la funció crítica.
- Falta l'autorització o és incorrecta.
- Ús de credencials codificades.
- Falta el xifratge de dades sensibles.
- Càrrega il·limitada de fitxers amb tipus perillós.
- Dependre d'entrades no fiables en una decisió de seguretat.
- Execució amb privilegis innecessaris.
- Sol·licitud de falsificació entre llocs (CSRF).
- Descàrrega de codi sense comprovació d’integritat.
- Càlcul incorrecte de la mida del buffer.
- Restricció incorrecta dels intents d’autenticació excessius.
- Redirecció d'URL a lloc no fiable ('Redirecció oberta').
- Cadena de format incontrolada.
- Ús d’un hash unidireccional sense sal.
Llista de comprovació per a pràctiques de codi segur
Finalment, però no menys important, després de considerar tots els aspectes anteriors dels aspectes de desenvolupament de programari segur, els desenvolupadors han de seguir el Llista de comprovació establerta per a les pràctiques de codi segur per garantir que no es perdin les coses. A continuació es detallen algunes, però no una llista exhaustiva.
Validació d'entrada:
- No confieu en l'entrada, tingueu en compte la validació d'entrada centralitzada.
- No confieu en la validació del client.
- Aneu amb compte amb els problemes de canonització.
- Limiteu, rebutgeu i desinfecteu l'entrada. Valida el tipus, la longitud, el format i l’interval.
Autenticació:
c nombre aleatori entre 0 i 1
- Lloc de partició per àrea anònima, identificada i autenticada.
- Utilitzeu contrasenyes segures.
- Admet períodes de caducitat de contrasenya i inhabilitació del compte.
- No emmagatzemeu les credencials (feu servir hash unidireccionals amb sal).
- Xifra els canals de comunicació per protegir els tokens d'autenticació.
- Passeu cookies d’autenticació de formularis només a través de connexions HTTPS.
Autorització:
- Utilitzeu comptes amb menys privilegis.
- Penseu en la granularitat de l'autorització.
- Fer complir la separació de privilegis.
- Restringiu l'accés dels usuaris als recursos del sistema.
- Utilitzeu el protocol OAuth 2.0 per a l’autenticació i l’autorització.
- Validació de l'API Carryout.
- Mètodes admesos a la llista blanca.
- Protegiu les accions privilegiades i les col·leccions de recursos sensibles.
- Protegiu-vos contra la falsificació de recursos entre llocs (CSRF).
Gestió de sessions:
- Creeu un identificador de sessió al servidor.
- Finalitzeu la sessió amb el tancament de sessió.
- Genereu una nova sessió en tornar a autenticar-vos.
- Definiu l’atribut ‘segur’ per a les galetes transmeses mitjançant TLS.
Criptografia:
- Utilitzeu la criptografia mentre es mostren 'Dades en trànsit, Dades emmagatzemades, Dades en moviment, Integritat de missatges'.
- No desenvolupis el teu. Utilitzeu funcions de plataforma provades i provades.
- Mantingueu les dades sense xifrar a prop de l'algorisme.
- Utilitzeu l'algorisme i la mida de la clau adequats.
- Eviteu la gestió de claus (utilitzeu DPAPI).
- Cicleu les vostres claus periòdicament.
- Emmagatzemeu les claus en una ubicació restringida.
Registre i auditoria:
- Identificar comportaments maliciosos.
- Conegueu el bon trànsit.
- Auditeu i registreu l'activitat a través de tots els nivells d'aplicació.
- Accés segur als fitxers de registre.
- Feu una còpia de seguretat i analitzeu regularment els fitxers de registre.
Codificació de sortida:
- Realització de 'Validació d'entrada (XML, JSON ...).
- Utilitzeu la consulta parametritzada.
- Dur a terme la 'Validació de l'esquema'.
- Realitzar la codificació (XML, JSON ..).
- Envia capçaleres de seguretat.
Referència: ' Llista de comprovació de pràctiques de codificació segura OWASP (En resum, llista de verificació SCP) '
Resum tabular de la llista de comprovació de codificació segura
La taula següent resumeix el 'Coses que cal recordar per a un codi segur' d’una aplicació.
# | Què? |
---|---|
7 | Per garantir que l’equip sencer s’adhereix a la norma de codificació segura. |
1 | Per entendre clarament: 'Què és el codi segur'? |
2 | Per entendre les 'fonts de les vulnerabilitats' habituals. |
3 | Per dur a terme una 'sessió de consciència sobre seguretat' a l'equip. |
4 | Identificar i analitzar 'Riscos i valors' implicats en l'aplicació i els mètodes per 'Mitigar'. |
5 | Per 'formar l'equip' sobre els estàndards de codificació segura, les millors pràctiques i les directrius. |
6 | Per definir 'Estàndard de codificació segura' |
8 | Utilitzar 'Easy to Implement Language' i tenir-ne un 'coneixement profund'. |
9 | Utilitzar eines IDE (Integrated Development Environment) |
10 | Utilitzar 'Analitzadors estàtics i dinàmics' i 'Analitzadors estàtics múltiples' per eliminar 'Falsos positius' |
11 | Per dur a terme les 'proves manuals' sempre que sigui necessari per identificar l'error, perdeu els missatges. |
12 | Per definir un conjunt de 'Regles i recomanacions de codificació segura' |
13 | Per dur a terme les 'proves de conformitat de conformitat' per a les regles establertes. |
14 | Per entendre 'Mètode de codificació insegur' i recollir 'Errors de programació comuns'. |
15 | Seguir estrictament la 'llista de verificació SCP' |
Conclusió
Esperem que aquest tutorial sigui la vostra millor guia per garantir la seguretat del programari.
Les directrius de codificació per al desenvolupament de programari segur es detallen aquí en termes senzills amb exemples per facilitar la vostra comprensió del concepte.
Bona lectura !!
Lectura recomanada
- Proves de seguretat (una guia completa)
- Top 30 de les millors empreses de seguretat cibernètica del 2021 (empreses de nivell petit a empresarial)
- Fonaments bàsics de la programació d 'ordinadors per a principiants Tutorial de codificació
- Els 15 millors editors de codi gratuïts per obtenir una experiència de codificació perfecta
- Tutorial de proves d'injecció SQL (Exemple i prevenció d'atacs per injecció SQL)
- Els desenvolupadors no són bons provadors. Què dius?
- ISTQB Foundation Exam Format i pautes per resoldre comunicacions
- Directrius de proves de seguretat de les aplicacions mòbils