Служител отваря портала за услуги на компанията, търси в базата знания и прикачва файл към заявка. В същото време някой, който никога не се е вписвал в системата, може да изпрати заявка към същия портал и да получи обратно записи.

Компанията Bishop Fox проведе този тест върху 166 инстанции на ServiceNow по време на оторизирани тестове за проникване. Фирмата публикува резултатите заедно с инструмента на Go, който е използвала за целта – Snowpick.

Резултати бяха получени от 31% от инстанциите. Тези инстанции върнаха записи или потвърдиха броя на записите за сесия без предоставени идентификационни данни, като те се отнасят до приблизително три четвърти от организациите в набора от данни.

„Потвърдените от нас случаи на излагане на данни, връщащи редове, не бяха нови zero-day уязвимости. Те се дължаха на проблеми с контрола на достъпа и конфигурацията в публичните повърхности на ServiceNow“, сподели пред Help Net Security Емилио Галегос, атакуващият специалист в Bishop Fox, разработил инструмента.

Две повърхности, два комплекта правила

ServiceNow предоставя данни чрез графични компоненти (widgets) на Service Portal и чрез Table REST API. Компонентите се намират на адрес /api/now/sp/widget/{widget_id}, приемат POST заявки и управляват търсенето в базата знания, страниците с каталози, формулярите за заявки и прегледа на прикачени файлове. Интерфейсът Table REST API на адрес /api/now/table/{table_name} отправя директни заявки към sys_user, incident, oauth_entity и останалата част от схемата.

Всяка повърхност оценява контрола на достъпа по своя собствен път. Дадена инстанция може да заключи своите компоненти и да продължи да отговаря на заявки към таблиците. Две инстанции в набора от данни направиха точно това: проверките на компонентите се върнаха чисти, а REST API върна данни.

Компонентът за прикачени файлове свърши по-голямата част от работата

Повечето положителни резултати бяха получени чрез ticket-attachments – стандартен компонент, който връща метаданни за файлове, прикачени към заявки. Заглавията и описанията в тези метаданни носят вътрешни подробности за процесите: ръководства за въвеждане в работата, процедури за заявки за достъп, системни инструкции.

В целия набор от данни бяха открити изложени статии от базата знания, метаданни за заявки за инциденти, елементи от каталога с услуги, структури на отдели и местоположения на съоръжения. Броят на записите при всяко разкритие варираше от десетки до хиляди.

В тази извадка не бяха включени идентификационни данни. Същите повърхности имат достъп до oauth_entity и sys_user, когато списъците за контрол на достъпа (ACL) го позволяват.

Snowpick изпраща заявка към публичната страница за вход, извлича сесийния токен, който ServiceNow издава там, и го използва повторно за следващите API повиквания. Той проверява набор от компоненти по подразбиране плюс 26 вградени двойки от таблици и полета, като може също да запита инстанцията кои компоненти са инсталирани и да ги добави към списъка.

Персонализираните компоненти изискват тази стъпка на откриване. Организациите пишат свои собствени правила за достъп за тях, а тези правила никога не са преминавали през преглед от платформата.

Изходните данни разделят излагането на редове от оракул за броене, което означава, че ServiceNow е потвърдил съществуването на съвпадащи записи, но не е върнал нито един от тях. Varonis Threat Labs документираха сляпо извеждане на данни чрез поведението за броене, проследявано като CVE-2025-3648. За всяко констатация Snowpick запазва отчетения общ брой, ограничена извадка от редове и curl команда, която възпроизвежда заявката.

Публикуване на инструмент с две остриета

Всеки може да насочи Snowpick към инстанция, която не притежава. Галегос каза, че неговият екип е започнал точно от това. „Въпросът, върху който се фокусирахме, беше дали пускането на инструмента ще промени съществено възможностите на атакуващите или ще подобри видимостта за защитниците.“

Основните техники вече бяха публично известни. Арън Костело документира излагането на widget-simple-list през октомври 2023 г., включително генерирането на сесийни токени и изброяването на таблици, а AppOmni го последва с анализ на механиката на ACL в ServiceNow.

Галегос обясни решението за публикуване по следния начин: „Публикувахме Snowpick, защото запазването му като вътрешен инструмент нямаше да забави никого, който проучва системи, които не притежава – това само щеше да попречи на хората, отговорни за тези системи, да открият и отстранят това излагане на данни, преди то да се превърне в инцидент.“

Настройките по подразбиране на платформата могат да поемат част от товара. Галегос отбеляза, че предпазните мерки около публичните компоненти и достъпа до таблици повишават минималното ниво на сигурност, но ServiceNow е създаден с цел да бъде персонализиран. „Организациите добавят свои собствени компоненти, таблици, роли и ACL с течение на времето и тези комбинации могат да се държат по различен начин от очакваното, когато до тях се достигне от неавтентикирана сесия.“

„Това е споделена отговорност. ServiceNow може да намали броя на опасните модели, но клиентите все пак трябва да тестват своите собствени публични инстанции отвън, по начина, по който би го направил един атакуващ.“

Работата по отстраняване на уязвимостта започва с публичните компоненти на Service Portal, които връщат данни за заявки, прикачени файлове, база знания, каталог или списъци. Списъците за контрол на достъпа (ACL) на ниво таблица, поле и ред изискват отделен преглед. Компонент, който е блокиран при директно зареждане, все още може да бъде достъпен чрез друг компонент, който го зарежда.

Snowpick е достъпен безплатно в GitHub.