API-интерфейс чтения сообщений Magistrala (ранее Mainflux) считывает значение `format` из строки HTTP-запроса (readers/api/http/transport.go) без проверки и интерполирует его непосредственно в необработанные SQL-запросы через fmt.Sprintf() как в программе чтения PostgreSQL (readers/postgres/messages.go: `fmt.Sprintf("SELECT * FROM %s WHERE %s ...", format, cond)`) и средство чтения TimescaleDB (readers/timescale/messages.go, тот же шаблон), позволяющее внедрение SQL любым прошедшим проверку подлинности пользователем, способным запрашивать сообщения канала.
Показать оригинальное описание (EN)
Magistrala (formerly Mainflux)'s message-readers API reads a `format` value from the HTTP query string (readers/api/http/transport.go) with no validation and interpolates it directly into raw SQL queries via fmt.Sprintf() in both the PostgreSQL reader (readers/postgres/messages.go: `fmt.Sprintf("SELECT * FROM %s WHERE %s ...", format, cond)`) and the TimescaleDB reader (readers/timescale/messages.go, same pattern), enabling SQL injection by any authenticated user able to query channel messages.
Характеристики атаки
Последствия
Строка CVSS v3.1