Querido Diario…

Hace un tiempo, en la reunión mensual del Mexicali Open Source Group; conocí GraphQL, que es un proyecto que desarrollo Facebook para poder hacer requests de un solo golpe, que con REST no es posible de hacer. Para eso envían las requests en una estructura definida coff.. coff… en mi opinión muy parecido a lo que se hacía con los WSDL, pero bueno 😛 estamos en el tiempo de las tecnologías hipster.

Básicamente GraphQL está aun muy joven, lo que hace que nuevamente las vulnerabilidades que ya se habían visto hace mucho, vuelvan a aparecer. ¿Y cual es la vulnerabilidad más común que se reportaba en los web services, cuando WSDL o REST?. Así es, problemas en la autorización.

Una request básica usando GraphQL se ve así (ahhh si, yo la ordené para que se viese bonita, porque si tú la sacas directo del HTTP Proxy vas a ver todo en una línea y no lo vas a ver bonito, pero si va así):

POST /accounts/REMOVED/graphql HTTP/1.1

{
  currentUser {
    email
    currentAccount {
      name
      licenseKey
      capabilities {
        name
      }
      apmSubscription: subscription(productLine: "apm") {
        productLine
      }
      infraSubscription: subscription(productLine: "infrastructure") {
        trialEligibility {
          state
        }
        trial {
          endTime
        }
      }
    }
  }
}

Y el response se ve así:

{"data":{"currentUser":{"email":"redacted@gmail.com","currentAccount":{"name":"This is the account name", "licenseKey":"95d24ccefada021a6REDACTED","infraSubscription":{"trialEligibility":{"state":false},"trial":null},"capabilities":[huge list of capabilities],”apmSubscription":{"productLine":"apm"}}}}}

Bueno, bueno.. puede que no te hayas dado cuenta, pero esto que se ve acá es básicamente el response de un administrador; ¡un administrador!, y no un usuario normal. ¿Qué cómo lo sé?, pues porque sé que información da un usuario normal y un administrador, ¿qué como tú lo sabes?… pues he allí el problema.

No lo puedes saber a menos que te encuentres haciendo un assessment tipo DiD o Gray Box con más información; porque sino pues básicamente ves mucha información, pero nada te va a hacer sentido.

Y así… así perdí hoy un bounty de $300 dlls, porque soy incapaz de evidenciar que esta información es sensible, sin que el desarrollar me confirmé un test case de mi request y response.

¡Tecnologías hispter del mal!

Querido Diario… #cachanillas grr.. u.u … 😛

Me duele todo… me siento como si hubiese dormido tre… ouuu… dormí tres semanas. Ahora todo tiene sentido.

En el hospital escuché muchas veces está canción… y me gusta mucho; la tengo en la cabeza todo el tiempo.

No estoy muy seguro si en verdad pasó, pero recuerdo que a las enfermeras les hacía «brrr… brrr…» 😛