Saltar al contenido
Lectura12 minPreview

Qué es una API y la lista OWASP 2023

Cuando usted consulta su banco o paga con SINPE Móvil desde el celular, la pantalla casi nunca habla con una base de datos: habla con una API. En esta lección verá qué es, de dónde salió, por qué merece una lista de riesgos propia y qué palabras usará el curso.

Qué es una API

API viene de Application Programming Interface, en español "interfaz de programación de aplicaciones": un conjunto de reglas para que un programa le pida algo a otro. Una API web es un conjunto de rutas en un servidor que reciben peticiones HTTP y devuelven datos, casi siempre en JSON: recursos (pedidos, usuarios) y funciones (crear, modificar, borrar). Una petición típica:

GET /api/v1/pedidos/1042 HTTP/1.1
Host: api.ejemplo.cr
Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.ejemplo.firma
Accept: application/json

Y la respuesta:

{
  "id": 1042,
  "cliente": "[email protected]",
  "estado": "en_ruta",
  "monto": 18500
}

A diferencia de una web clásica, la API entrega datos crudos y la aplicación decide qué mostrar. Por eso quien ataca le habla directo, sin la aplicación oficial; los identificadores como 1042 invitan a probar 1043, y las versiones viejas, rutas de socios y rutas de prueba multiplican la superficie que hay que proteger.

Breve historia

AñoHito
2000Roy Fielding describe el estilo REST en su tesis doctoral, base de casi todas las API web actuales.
2001Nace OWASP, Open Web Application Security Project (desde 2023, Open Worldwide), comunidad abierta de seguridad de aplicaciones.
2006JSON se publica como RFC 4627 y desplaza a XML.
2011Aparece Swagger para describir una API en un archivo; en 2016 pasa a llamarse OpenAPI.
2012 y 2015Se publican OAuth 2.0 (RFC 6749) y JWT (RFC 7519).
2019OWASP publica la primera edición del API Security Top 10.
2023Segunda edición, vigente al escribir este curso; agrega SSRF y el consumo inseguro de API. Si sale una nueva, revise el sitio de OWASP.

Por qué importa

Por las API viajan datos personales, pagos y órdenes de negocio: una sola ruta mal protegida expone a todos los clientes. Las trabajan a diario quienes desarrollan, quienes revisan seguridad de aplicaciones antes de cada pase a producción, los analistas de SOC que leen las bitácoras de la puerta de enlace y los equipos de DevSecOps. Quien no entiende una API no distingue en una bitácora una consulta normal de alguien que recorre pedidos ajenos.

Dónde se usan

  • Aplicaciones móviles: la app del banco consulta saldos.
  • Sitios web modernos: la tienda carga el carrito sin recargar la página.
  • Integraciones: pasarelas de pago y facturación electrónica.
  • Nube y microservicios: servicios internos que se llaman entre sí.
  • Dispositivos conectados: cámaras y medidores que reportan a un servidor.

La lista 2023

IdentificadorRiesgoEn pocas palabras
API1:2023Broken Object Level Authorization (BOLA)Puede ver o tocar objetos ajenos cambiando un identificador
API2:2023Broken AuthenticationLa API no comprueba bien quién es usted
API3:2023Broken Object Property Level Authorization (BOPLA)Ve o modifica campos que no le corresponden
API4:2023Unrestricted Resource ConsumptionNada limita cuántos recursos consume
API5:2023Broken Function Level Authorization (BFLA)Un usuario común ejecuta funciones de administrador
API6:2023Unrestricted Access to Sensitive Business FlowsUn flujo de negocio se automatiza para abusar de él
API7:2023Server Side Request Forgery (SSRF)La API visita una dirección que eligió quien ataca
API8:2023Security MisconfigurationErrores detallados, CORS abierto, modo depuración
API9:2023Improper Inventory ManagementNadie sabe qué API y versiones están publicadas
API10:2023Unsafe Consumption of APIsSe confía ciegamente en lo que devuelve un tercero

Tres de los cinco primeros riesgos tratan de autorización (objeto, campo y función): es la falla más frecuente en API reales y por eso el curso empieza ahí.

Conceptos clave

ConceptoQué significa
Ruta o endpointDirección concreta de la API, como /api/pedidos/1042
Método HTTPLa acción: GET lee, POST crea, PATCH o PUT modifican, DELETE borra
Código de estado200 bien, 400 petición inválida, 401 sin identidad, 403 sin permiso, 404 no existe, 429 demasiadas peticiones
AutenticaciónComprobar quién es usted
AutorizaciónDecidir qué puede hacer usted, ya identificado
TokenCadena que la API entrega al iniciar sesión y el cliente reenvía en cada petición, por ejemplo un JWT
Contrato OpenAPIArchivo YAML o JSON que describe rutas, campos y requisitos de seguridad

Cómo leer una sintaxis y pedir ayuda

En las fichas de herramientas, los corchetes indican algo opcional, las MAYÚSCULAS un valor que usted reemplaza y los tres puntos algo repetible: curl [OPCIONES] URL.... Para ver las opciones en su máquina use curl --help all o man curl; para una función de Python, help(nombre) dentro del intérprete.