| Gói / sản phẩm | Phiên bản bị ảnh hưởng | Phiên bản đã vá |
|---|---|---|
| github.com/daptin/daptin | < 0.11.4 | 0.11.4 |
The /aggregate/:typename endpoint accepted column and group query parameters that were passed verbatim to goqu.L() — a raw SQL literal expression builder — without any validation. This bypassed all parameterization and allowed authenticated users with any valid session to inject arbitrary SQL expressions.
An authenticated low-privilege user could:
(SELECT group_concat(email) FROM user_account) as leaksqlite_version(), (SELECT sql FROM sqlite_master)The vulnerability was confirmed locally; user_account.email values were extracted via a crafted column parameter by a non-admin user.
goqu.L(userInput) in server/resource/resource_aggregate.go inserted user-supplied query parameters directly into the SQL string with no validation.
All goqu.L() calls on user-controlled input were eliminated and replaced with:
TableInfo().GetColumnByName())count, sum, avg, min, max, first, last) and scalar functions (date, strftime, upper, lower, etc.)goqu.I(), goqu.SUM(), goqu.Func()) for all generated expressionsallowedTables scope enforcement: qualified column refs (table.col) validated against root entity + explicitly joined tables onlyTwo additional DoS bugs were fixed in the same commit: uuid.MustParse panic on malformed UUID input and an index-out-of-range panic in ToOrderedExpressionArray on empty sort expressions.
Reported by @VashuVats.
Bạn đang dùng một trong các sản phẩm này? Quét site để biết có đang lộ phiên bản có lỗ hổng không.
Quét site miễn phí