SQL injection in order search
- endpoint
- POST /api/orders/search
- weakness
- CWE-89
- cvss
- 9.3 CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
01 · Taint path · white-boxno sanitizer on path
- source
req.body.qroutes/orders.ts:42 - →
OrderService.search(q)services/order.ts:88 - →
buildFilter(q)services/order.ts:131 - sink
db.raw(`…LIKE '%${q}%'`)db/orders.ts:57
02 · Rating · CVSS v4.09.3 critical
- AV:N
- route is reachable from the internet
- PR:N
- no auth middleware on the route chain
- VC:H
- attacker-controlled SQL reads every order
- VI:H
- same statement allows writes to orders
03 · Fix · db/orders.ts
- db.raw(`SELECT * FROM orders WHERE name LIKE '%${q}%'`)+ db('orders').whereLike('name', `%${q}%`)
