Injecció de codi

De la Viquipèdia, l'enciclopèdia lliure

La injecció de codi és l'explotació d'un error informàtic causat pel processament de dades no vàlides. La injecció és utilitzada per un atacant per introduir (o "injectar") codi en un programa informàtic vulnerable i canviar el curs d'execució. El resultat d'una injecció de codi amb èxit pot ser desastrós, per exemple, si permet que es propaguin virus informàtics o cucs informàtics.

Les vulnerabilitats d'injecció de codi es produeixen quan una aplicació envia dades no fiables a un intèrpret. Els errors d'injecció es troben amb més freqüència a les consultes SQL, LDAP, XPath, NoSQL, ordres del sistema operatiu, analitzadors XML, capçaleres SMTP, arguments del programa, etc. Els errors d'injecció solen ser més fàcils de descobrir quan s'examinen el codi font que mitjançant les proves.[1] Els escàners i els fuzzers poden ajudar a trobar defectes d'injecció.[2]

La injecció pot provocar la pèrdua o la corrupció de dades, la manca de responsabilitat o la denegació d'accés. La injecció de vegades pot conduir a la presa de possessió completa de l'amfitrió.

Alguns tipus d'injecció de codi són errors d'interpretació, donant un significat especial a l'entrada de l'usuari. Existeixen errors d'interpretació similars fora del món de la informàtica, com ara la rutina de comèdia Who's on First?. A la rutina, no es pot distingir els noms propis de les paraules normals. De la mateixa manera, en alguns tipus d'injecció de codi, hi ha un error per distingir l'entrada de l'usuari de les ordres del sistema.

Les tècniques d'injecció de codi són populars en la pirateria o cracking del sistema per obtenir informació, l'escalada de privilegis o l'accés no autoritzat a un sistema. La injecció de codi es pot utilitzar de manera malèvola per a molts propòsits, com ara:

El 2008, el 5,66% de totes les vulnerabilitats notificades aquell any es van classificar com a injecció de codi, l'any més alt registrat. El 2015, aquest s'havia reduït fins al 0,77%.[3]

Ús benigne i no intencionat[modifica]

La injecció de codi es pot utilitzar amb bones intencions; per exemple, canviar o ajustar el comportament d'un programa o sistema mitjançant la injecció de codi pot provocar que el sistema es comporti d'una manera determinada sense cap intenció maliciosa.[4][5] La injecció de codi podria, per exemple:

  • Introduïu una columna nova útil que no apareixia al disseny original d'una pàgina de resultats de cerca.
  • Oferiu una nova manera de filtrar, ordenar o agrupar les dades utilitzant un camp no exposat a les funcions predeterminades del disseny original.
  • Pel que fa a programes com Dropbox, afegiu parts especials que es podrien utilitzar per connectar-se a recursos en línia en un programa fora de línia.
  • Utilitzeu el Linux Dynamic Linker per definir una funció amb el mateix nom que determinades funcions libc, enllaçar aquesta funció com a biblioteca i anul·lar l'ús de la funció libc.

És possible que alguns usuaris realitzin una injecció de codi sense sospitar perquè els qui van desenvolupar originalment el sistema no van tenir en compte les entrades que proporcionen a un programa. Per exemple:

  • El que l'usuari pot considerar una entrada vàlida pot contenir caràcters testimoni o cadenes de caràcters que el desenvolupador ha reservat per tenir un significat especial (potser el "&" a "Shannon & Jason" o cometes com a "Bub 'Slugger' McCracken").
  • L'usuari pot enviar un fitxer amb format incorrecte com a entrada que es gestiona amb gràcia en una aplicació, però que és tòxic per al sistema receptor.

Un altre ús benigne de la injecció de codi podria ser el descobriment dels mateixos defectes d'injecció, amb la intenció de solucionar-los. Això es coneix com a prova de penetració del barret blanc.

Referències[modifica]

  1. «Top 10 Web Application Security Vulnerabilities» (en anglès). Penn Computing. University of Pennsylvania. Arxivat de l'original el 24 February 2018. [Consulta: 10 December 2016].
  2. «OWASP Top 10 2013 A1: Injection Flaws» (en anglès). OWASP. [Consulta: 19 December 2013].
  3. «NVD - Statistics Search» (en anglès). web.nvd.nist.gov. [Consulta: 9 desembre 2016].
  4. Srinivasan, Raghunathan. «Towards More Effective Virus Detectors» (en anglès). Arizona State University. Arxivat de l'original el 29 July 2010. [Consulta: 18 setembre 2010].
  5. Morales, Jose Andre. «Symptoms-Based Detection of Bot Processes». A: Lecture Notes in Computer Science (en anglès). Berlin, Heidelberg: Springer, 2010. DOI 10.1007/978-3-642-14706-7_18. ISBN 978-3-642-14705-0.