Nextcloud 35.0.0 — получатель общего доступа к календарю с правом редактирования может опубликовать календарь владельца по URL без аутентификации
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · nextcloud-calendar-sharee-publish
Nextcloud Server 35.0.0 - Nextcloud GmbH
CalDAV PublishPlugin проверяет только {DAV:}write. Ограничение владельца limitAddressBookAndCalendarSharingToOwner по умолчанию имеет значение no. Коллега, которому вы дали право редактирования календаря, может его опубликовать. Любой, у кого есть секретный URL, читает ваши события, не являющиеся PRIVATE, без входа в систему.
Злоумышленник с правом редактирования вашего календаря может превратить его в публичный URL. Любой, у кого есть этот URL, может читать ваши встречи и списки участников без входа в систему.
| ID | пока нет CVE |
| CWE | CWE-284, CWE-862 |
| CVSS | High: 6.5 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N |
| Продукт | Nextcloud Server |
| Затронуто | 35.0.0 (da02f41) официальный nextcloud:35.0.0-apache |
| Аутентификация | получатель права записи, затем неаутентифицированное публичное чтение |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1 |
Вы делитесь календарём с коллегой с правом can edit. Этот коллега отправляет publish-calendar. Nextcloud создаёт публичный URL календаря.
Затем:
PRIVATE)Повторный шаринг календаря запрещён. Публикация — нет. Конфигурация ограничения владельца существует и по умолчанию отключена.
PublishPlugin проверяет {DAV:}write, затем dav / limitAddressBookAndCalendarSharingToOwner, что по умолчанию равно no. Calendar::updateShares запрещает повторный шаринг, когда isShared(). Публикация — это другая операция. ACL записи всё ещё предоставляет {DAV:}write получателю с правом редактирования.
Я развернул официальный nextcloud:35.0.0-apache. Календарь владельца labcal с событием, не являющимся PRIVATE, SUMMARY NEXTCLOUD-CAL-SHAREE-PUBLISH-WITNESS.
Сначала я отправил MKCALENDAR. Sabre вернул 405 MethodNotAllowed. Я всё равно отправил VEVENT через PUT. 201. Календарь был на месте. Операция создания коллекции была не той дверью, а не не тем домом.
Календарь расшарен с правами чтения-записи для sharee. POST от sharee CS:publish-calendar вернул 202. Неаутентифицированный PROPFIND по публичному URL содержал свидетеля.
cd lab
./run.sh
Цель только http://127.0.0.1:18344.
SUCCESS NEXTCLOUD-CAL-SHAREE-PUBLISH who=write-sharee unauth-read=yes NEXTCLOUD-CAL-SHAREE-PUBLISH-WITNESS
Требовать principal владельца для публикации или включить ограничение владельца по умолчанию и всё равно запретить публикацию для календарей isShared(). Повторный шаринг уже запрещён. Публикация должна следовать за ним.
GNU Affero GPL v3.0. См. LICENSE. Только лаборатория на loopback. Без гарантий.