Описание
Open WebUI has an IDOR vulnerability in the pin_channel_message API endpoint
Summary
Pin/Unpin is a write operation (modifies the message's is_pinned , pinned_by, pinned_at fields), but in standard channels it only checks read permission, allowing users with read-only access to pin/unpin any message.
Details
The channel_has_access function https://github.com/open-webui/open-webui/blob/9bd84258d09eefe7bf975878fb0e31a5dadfe0f8/backend/open_webui/routers/channels.py#L75 checks user permissions against the AccessGrants table:
The AccessGrant table distinguishes between read and write permission levels.
PoC
admin creates Standard Channel with Read-Only Access for test1 :
admin posts a Message in the Channel, and test1 has read permission only.
test1 attempts to Pin Message:
Successfully pinned admin's message. pinned_by records test1's user ID.
test1 (Read-Only) can alse Unpin Message. The Pin/Unpin endpoint in standard channels only checks read permission, allowing read-only users to pin/unpin any message.
Impact
Read-only users can pin irrelevant messages, disrupting important information display in the channel .
Recommended Fix
Change the Pin endpoint's permission check from read to write .
Пакеты
open-webui
<= 0.9.4
0.9.5
Связанные уязвимости
Open WebUI is a self-hosted artificial intelligence platform designed to operate entirely offline. Prior to 0.9.5, Pin/Unpin is a write operation (modifies the message's is_pinned , pinned_by, pinned_at fields), but in standard channels it only checks read permission, allowing users with read-only access to pin/unpin any message. This vulnerability is fixed in 0.9.5.
Уязвимость веб-интерфейса на базе искуственного интеллекта Open WebUI, связанная с обходом авторизации посредством ключа, контролируемого пользователем, позволяющая нарушителю получить доступ на чтение, изменение или удаление данных