что такое dicom и как им пользоваться

Как открыть диск с МРТ или КТ снимками?

О формате файлов КТ И МРТ

Файлы КТ или МРТ исследования на диске записаны в специальном формате DICOM, и он не открывается обычными программами просмотра картинок. DICOM — это формат медицинских изображений, где в каждый файл помимо собственно картинки «вшита» другая информация — имя пациента, его возраст, номер снимка, обозначения режимов сканирования и т.п.

Программы для открытия файлов КТ и МРТ

Чтобы открыть снимки с CD диска, Вам понадобится специальная программа — DICOM-вьюер. Таких программ много, платных и бесплатных. Самая удобная из бесплатных программ — Radiant DICOM Viewer. Скачать ее можно здесь. Эта программа умеет открывать совершенно любые медицинские снимки в формате DICOM, например МРТ, КТ, ПЭТ-КТ, рентген, маммографию, ангиографию и т.д.

Чтобы открыть снимки программой Radiant, нужно скопировать все содержимое диска в папку на компьютере, затем зайти в программу, нажать в левом верхнем углу кнопку Scan folder for DICOM files и выбрать эту папку. Подробнее про работу программы можно почитать здесь.

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

Лучшая из программ для MAC-OS — это Osirix. Скачать бесплатную версию для настольного компьютера можно здесь. Версия Osirix для iPhone и iPad продается в Apple Store или здесь.

Часто МРТ или КТ записывается на диск уже с программой-вьюером. В таком случае не нужно отключать автозапуск на своем компьютере, и программа просмотра запустится автоматически. К недостатку таких программ относится то, что ими, как правило, не очень удобно пользоваться. Поэтому советуем Вам все же установить Radiant.

Помните, что даже идеально выполненное исследование не исключает врачебной ошибки, ведь достоверность диагностики напрямую зависит от умения врача расшифровать снимки. Поэтому при сомнениях в диагнозе врачи рекомендуют получить Второе мнение — расшифровку МРТ или КТ у рентгенолога экспертного уровня с целью подтверждения или опровержения диагноза, а также более точного и детального описания снимков. В России действует Национальная телерадиологическая сеть — служба дистанционных консультаций, с помощью которой любой человек может обратиться к ведущим диагностам из Москвы или Санкт-Петербурга, отправить им файлы исследования и получить квалифицированное описание. Особенное значение такая консультация имеет при онкологических, неврологических и других сложных заболеваниях.

Также вы можете отправить файлы МРТ или КТ с диска вашему лечащему врачу. Как это сделать, можно почитать здесь.

Источник

DICOM — Какая печать нужна медицине?

В настоящее время медицинские учреждения в России стремятся использовать самые современные технологии для успешной диагностики и лечения. Некоторые изменения происходят и в сфере диагностических аппаратов, появляются 3D снимки, полноцветные рентгены, мониторы для просмотра снимков и т.д. Но эти технологии только увеличивают стоимость процесса. Однако в медицине, как и в любом бизнесе требуются инновации для уменьшения расходов. Возможность применения обычных принтеров для визуализации данных со снимков рентгенографии или томографии позволяет добиться такой экономии на пленках, а также быстрее получать результаты исследований.
В прошедшем году компания OKI представила несколько новых моделей принтеров, поддерживающих DICOM, которые отличаются от базовых моделей приставкой «DM», а также ценой и исключительно поддержкой данной технологии. И здесь возникает вопрос, действительно ли DICOM так востребована и может принести пользу медицинским учреждениям или это скорее маркетинговый трюк?

Как например этот:

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

Что такое DICOM?
Обычно введение новых стандартов и технологий воспринимается ИТ-специалистами «в штыки», ведь никто не хочет отказываться от существующих и привычных форматов и уже известных принципов работы. («Работает — не трогай!»). Однако в случае с DICOM (Digital Imaging and Communication in Medicine), дела обстоят совершенно иначе. Дело в том, что стандарт DICOM используется для сбора и хранения информации о пациенте на современном медицинском оборудовании. Формат файлов DICOM четко регламентирует принципы хранения результатов исследований, а сетевой протокол — взаимодействие между различными устройствами (включая хранилища и терминалы), обеспечивая облегченный поиск в сети и на отдельном устройстве всех данных, связанных с конкретным пациентом.

Так выглядит стандартная программа для работы с протоколом

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

DICOM против обычных принтеров
Что касается возможностей печати, стандартные принтеры, уже много лет успешно применяющиеся в медицине в качестве вспомогательных элементов системы визуализации, обладают сразу двумя недостатками:
• во-первых, большинство принтеров требуют наличия промежуточного элемента для коммуникации с медицинскими системами — персонального компьютера;
• во-вторых, использование 8-битного интерфейса печати не позволяет отобразить все «тонкости» диагностической инфорамции.
Первая неприятность диктует медицинскому учреждению необходимость обслуживания дополнительно еще одного рабочего места, обновления компонентов компьютера, настройки экспорта изображений с томографов и систем моделирования и так далее. А это значит, что функция печати будет доступна не всегда, для ее обслуживания периодически нужен ИТ-специалист, а значит… мы опять возвращаемся к пленкам, по крайней мере, в большинстве случаев.
Второй нюанс значительно ограничивает возможности диагностики без применения пленочных носителей. Дело в том, что неполная передача информации, которую удалось извлечь из данных магнитного резонанса или, например, прохождения рентгеновских лучей через ткани организма, может привести к неверной диагностике и навредить пациенту… да и просто приводит в бешенство врачей, которые в итоге предпочитают получать пленочные результаты исследований.
Протокол DICOM призван решить обе проблемы. Двенадцатибитный интерфейс делает отпечатки более полезными, а возможность печати без использования компьютера упрощает процедуру визуализации, исключает необходимость наличия дополнительного компьютера с операционной системой и драйверами, а также освобождает ИТ-персонал от лишних задач. Задания на печать могут быть отправлены непосредственно из системы визуализации, управления МРТ или других медицинских устройств.

примеры отпечатков

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

Отказ от пленки?
Конечно, печать на принтере проще, дешевле и быстрее, чем вывод изображений на пленку, но рассчитывать на полный отказ от пленки было бы глупо. Это связано не только с традициями в медицине, но и с исключительным разрешением пленочных диагностических материалов.
Высокая ценность принтеров с интерфейсом DICOM может проявиться при печати трехмерных изображений, полученных в результате томографии или составленных по итогам других медицинских исследований. Таким образом, принтеры могут быть использованы скорее как дополнение к пленочным носителям, но при этом медицинским руководителям необходимо знать: чем больше персонал использует функцию печати вместо экспозиции на пленке, тем больше дополнительных материальных средств высвобождается в отделении. И хотя распечатки исследований далеко не всегда оказываются полезными в диагностике, их всегда можно отдать клиентам, подготовить для страховых компаний и использовать для предварительной оценки ракурса снимка.
Причин экономии существует сразу несколько:
• во-первых, стоимость самого отпечатка на принтере в 5-10 раз меньше, чем экспозиция изображения на пленку — в среднем примерно 10 рублей против 70 рублей;
• во-вторых, временные трудозатраты на проявление пленки составляют 10-15 минут, в то время как печать страницы А4 на светодиодных принтерах составляет менее минуты;
• в-третьих, высокая нагрузка на проявочные машины приводит к их износу и преждевременной замене, а стоимость такого оборудования исчисляется десятками тысяч долларов.

Место DiCOM принтера в инфраструктуре
Принтер c интерфейсом DICOM является не только элементом медицинской системы, но также полноценной системой печати, как правило, с возможностью передачи широкого спектра цветов. Такой принтер может быть подключен непосредственно к системе диагностики, а также к компьютерной сети Ethernet, используя данные с медицинских PACS-серверов. Но при этом не исключается возможность использования того же принтера для решения офисных задач печати — создания больничных листов, распечатки эпикризов и многого другого. При этом наличие минимального запаса расходных материалов гарантирует доступность сервисов печати как для лечащих врачей, так и для специалистов в области диагностики. Однако не стоит забывать, что не всегда можно использовать полученные таким способом отпечатки для лечебной диагностики, прежде всего, такие технологии позволяют сократить расходы на необходимые бюрократические процедуры.

Источник

Разметка медицинских данных (DICOM) в Computer Vision Annotation Tool

Второе десятилетие 21 века отлично показало, как многие трудно формализуемые в рамках классических методов задачи могут быть решены с использованием искусственных нейронных сетей. Важно и то, что для таких решений уже давно было найдено свое применение в различных прикладных областях жизни современного общества, связанных с безопасностью, автоматизацией производственных и бизнес процессов, и просто привнесением большого количества удобств. Значительная часть таких решений располагается в области Computer Vision, где в качестве основного источника данных выступают визуальные образы (изображения, видео, карты глубины). ИИ-исследователи хорошо знакомы с проблемой острой необходимости достаточного количества качественных обучающих данных (ground truth examples) для тренировки нейронных сетей, ведь фактически, чем больше таких данных использовано при обучении, тем точнее предсказания модели. Мы в компании Intel используем разные источники таких данных. Один из основных — подготовка собственных данных силами внутренней команды разметки. Для облегчения этого процесса в нашей команде был разработан инструмент Computer Vision Annotation Tool (CVAT), исходный код которого был опубликован на GitHub. Продукт является частью экосистемы OpenVINO — набора инструментов для быстрой разработки эффективных приложений, использующих различные модели глубокого обучения. К настоящему времени CVAT успел набрать достаточно высокую популярность среди обычных и коммерческих пользователей по всему миру.

Немного истории

С тех пор мы начали задумываться о том, что стоит научить CVAT работать с этим форматом и предоставить удобный интерфейс для разметки такого рода данных. Ведь, с одной стороны, доля медицины в ИИ, достаточно высока, а значит есть и спрос на подобного рода функциональность (особенно после начавшейся пандемии COVID 19). С другой стороны, на существующем рынке нами не было найдено многофункциональных (в сравнении c CVAT) и доступных решений, в особенности с открытым исходным кодом, для разметки DICOM датасетов. Есть достаточно хорошие решения, которые в основном предоставляют функциональность для обработки, хранения, управления и просмотра DICOM данных (pydicom, cornerstonejs, orthanc-server), простые аннотационные инструменты (md.ai), и комплексные решения с хорошим функционалом для разметки данных, но они являются коммерческими, с ограниченным функционалом в бесплатных версиях (medseg.ai).

Почему все не так просто

Здесь мы плавно подходим ко второй проблеме. Обычно процесс разработки новых функций в CVAT основывается на том, что необходимо нашим пользователям в первую очередь. Например, значительная часть разработанных функций была добавлена с целью удовлетворения требований внутренней команды разметки, которая занималась подготовкой данных для обучения многих моделей в OpenVINO Model Zoo – зоопарке точных и высоко-оптимизированных моделей глубокого обучения. Такой подход подразумевает, что сперва какое-либо заинтересованное лицо обращается к нам с определенным запросом, разметить тот или иной набор данных тем или иным образом, чтобы на выходе получить разметку в определенном формате. После этого мы решаем конкретную задачу, а не пытаемся предугадать, что именно нужно пользователям. Однако, поскольку CVAT никогда и нигде не позиционировался как инструмент разметки медицинских данных, настоящее CVAT сообщество, глобально говоря, не слишком заинтересовано в реализации подобного функционала Таким образом у нас нет достаточно хорошего представления о направлении дальнейшей разработки. И одна из целей настоящего материала – собрать больше сведений о задачах, с которыми работает сообщество и востребованных функциях. Так, если вы заинтересованы в разработке, вы можете обратиться к нам через GitHub или прямым письмом (все ссылки и адреса предоставлены в конце статьи).

Тем не менее, это возможно

Статья не оправдала бы свое название, если бы закончилась на предыдущем абзаце. Несмотря на указанные проблемы, мы подготовили небольшое, «быстрое» решение проблемы разметки DICOM файлов в CVAT. Решение, конечно, не является самым удобным, но по крайней мере для самых простых случаев использования оно может оказаться применимым. Как было отмечено, DICOM файлы очень вариативны, но значительную долю проблем позволяют решить существующие решения, в том числе и с открытым исходным кодом. Так, мы использовали модуль языка программирования Python для работы с DICOM (pydicom) для подготовки скрипта, который осуществляет конвертацию DICOM файлов в обычные изображения и далее покажем подробный пример использования. Интерфейс командной строки для конвертации располагается в репозитории CVAT по ссылке. Скрипт доступен начиная с релиза 1.4. Набор команд ниже был протестирован на ОС Ubuntu 20.04, но действия по большей части простые и легко выполнимы в ОС Windows или других с помощью графического пользовательского интерфейса.

Для корректной работы команд, описанных ниже подразумевается, что в системе установлен ряд инструментов. Чтобы установить их в Ubuntu, вы можете воспользоваться следующей командой:

Первый шаг – склонировать репозиторий, если вы этого еще не сделали:

Следующим шагом необходимо перейти в папку с утилитой и рекомендуется создать виртуальное окружение Python, чтобы избежать установки лишних пакетов в систему, затем активировать его и установить необходимые зависимости:

Теперь можно запустить скрипт для того, чтобы преобразовать набор данных. Для примера возьмем набор данных CHAOS (Combined (CT-MR) Healthy Abdominal Organ Segmentation). Вы можете скачать его по предоставленной ссылке вручную, либо с помощью утилиты curl (Ubuntu):

Разархивируем полученные данные с использованием графического интерфейса или с помощью командной строки Ubuntu:

И сконвертируем их, запустив скрипт и передав нужные аргументы. Первый аргумент – корневой каталог с исходными файлами. Второй – корневой каталог для преобразованных файлов:

Примечание: Скрипт осуществляет рекурсивный поиск DICOM файлов. Структура каталогов в результате сохраняется.

В результате работы скрипта в каталогах CHAOS_Train_converted и CHAOS_Test_converted находятся обычные изображения, с которыми CVAT умеет работать. Далее в зависимости от ваших потребностей вы можете выбрать часть данных или все данные целиком и создать аннотационную CVAT задачу. Для удобства запакуем преобразованные файлы в архив с использованием графического интерфейса или с помощью командной строки в Ubuntu:

Кроме того, каталог можно просто переместить без дополнительной архивации в CVAT хранилище (если оно подключено) и использовать соответствующую вкладку файлов в CVAT при создании задачи, либо загрузить изображения стандартными средствами браузера из любого места на компьютере, если работаете с линейным списком изображений (загрузка каталогов пока не поддерживается).

Теперь необходимо установить CVAT, если вы этого еще не сделали. Подробный гайд по установке и настройке, в зависимости от операционной системы, может быть найден в документации.

В установленном CVAT создадим проект DICOM, который включает пару абстрактных классов разметки (мы будем размечать нечто абстрактное, поскольку не являемся медицинскими экспертами и не ясно, что именно представляет область интереса в наборе данных), откроем его и затем создадим две задачи для двух архивов:

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

Теперь разметим абстрактные сущности на изображениях:

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоватьсяИзображение, размеченное вручную

Кроме ручной разметки, можно использовать полуавтоматические методы:

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

Полуавтоматическая сегментация с использованием OpenCV JS выглядит эффективно в данном сценарии, поскольку у размечаемых объектов высокий контраст, а значит алгоритм работает довольно точно. Еще одно размеченное изображение:

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоватьсяИзображение, размеченное с помощью полуавтоматических методов

После того, как все данные размечены, можно получить результат в виде, например, PNG маски. CVAT поддерживает большое количество разных форматов, но, как показывает практика, маски довольно популярны при работе с DICOM данными.

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоватьсяПоддерживаемые форматы

Конечный файл содержит маски и другую полезную информацию:

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

В этом небольшом руководстве мы рассмотрели возможный сценарий разметки DICOM данных с использованием инструмента Computer Vision Annotation Tool. Кроме того, мы постарались объяснить как именно наша команда приходит к разработке новой функциональности, какое важное влияние в этом оказывают наши пользователи, их отзывы и описания задач, которые необходимо решить с помощью инструмента. Если вы желаете оставить отзыв по инструменту или данному материалу, либо предоставить ваши идеи по охваченной теме, пожалуйста, свяжитесь с нами, используя контакты ниже.

Источник

К чему приводят уязвимости протокола DICOM

Вы наверняка видели в медицинском сериале, как интерны бьются над рентгеновским снимком пациента, а потом приходит их наставник и ставит диагноз по едва заметному пятнышку. В реальности такими остроглазыми диагностами становятся модели машинного обучения, применяемые в технологии medical imaging. Благодаря таким штукам можно гораздо быстрее выявить болезнь, например, определить, являются ли клетки на снимках опухолевыми или неопухолевыми.

Но есть одна проблема — в медицинских технологиях используются DICOM-протоколы, безопасность которых оставляет желать лучшего. О них и пойдет речь в этой статье.

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

Протокол DICOM и его слабые места

Коротко о самом протоколе

DICOM (Digital Imaging and Communication in Medicine) — протокол представления медицинских обследований и передачи их между различными компонентами. Этими компонентами могут быть:

Протокол DICOM имеет две части:

Теперь к делу

Каждый DICOM-файл содержит информацию о пациентах и состоянии их здоровья — данные, которые требуют особой защиты. Именно поэтому я решила проверить реализации DICOM-протокола на уязвимости вместе с группой исследователей-энтузиастов AISec, которая занимается безопасностью в сфере машинного обучения.

Мы также изучили безопасность PACS (Picture Archiving and Communication System). Это такие системы, в которых результаты обследований хранятся в электронном виде. Они позволяют передавать снимки между врачами по сети. Да-да, благодаря PACS больше не нужно таскать с собой рентгеновские снимки в конверте, как мы привыкли.

DICOM-файл

DICOM-файл — изображение медицинского характера, сохраненное в формате DICOM. Этот формат — отраслевой стандарт для хранения и распространения медицинских снимков.

Помимо графических данных, DICOM-файлы могут содержать персональную информацию в виде атрибутов, позволяющих сопоставить изображение с конкретным человеком и идентифицировать пациента. К ним относятся пол, имя пациента, дата рождения и пр. Список возможных атрибутов и их описание можно найти в документации.

На рисунке показана структура DICOM-файла:

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

DICOM Network

Стандарт протокола довольно сложно и нудно описывает сетевое взаимодействие — мне до сих пор не удалось изучить его целиком. Но если говорить в общем, вот какие команды сетевого взаимодействия есть у DICOM-протокола:

ДействиеОписание
C-ECHOТест соединения между двумя устройствами
C-FINDПоиск исследований на удаленном сервере
C-GET, C-MOVEСкачивание исследований с удаленного сервера
C-STOREСохранение исследования на удаленном сервере

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться
Вот как выглядит процесс передачи результатов медицинских обследований по DICOM-протоколу

Немного статистики по DICOM-серверам в интернете.

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться
Такие картинки-отчеты о сканировании генерирует Grinder Framework

Интересный факт: когда мои коллеги из AISec проводили сканирование в 2019 году, то доступных серверов было меньше тысячи. В 2020 году же их оказалось около 2700.

Большинство хостов в сети настроены таким образом, что любой может установить с ними соединение. Давайте разберем пример, как просто получить исследование с удаленного сервера из сети. Для этого воспользуемся утилитами findscu и getscu из DCMTK — набора библиотек и приложений, реализующих большую часть стандарта DICOM.

Первой командой получаем список всех доступных исследований на сервере.

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться
Пример вывода команды findscu

Следующей командой скачиваем нужное нам исследование или все исследования сразу.

Значения ключей в команде аналогичны предыдущей.

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться
Пример исследования, скачанного с удаленного сервера DICOM

Вот так с помощью двух команд можно скачать данные с удаленного DICOM-сервера при наличии одного из условий:

Далее рассмотрим популярные инструменты и реализации протокола и найденные в них недостатки.

Реализации протокола DICOM

SimpleITK

SimpleITK — реализация протокола, которая используется в одном из крупных проектов в области medical imaging NVIDIA CLARA.

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

В ответ на репорт о переполнении кучи разработчик просто поправил файл, демонстрирующий уязвимость, чтобы он корректно обрабатывался библиотекой 🙂

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

Чем кончилось: в конце концов мы друг друга поняли, и вендор быстро исправил обе уязвимости.

DCMTK

DCMTK (DICOM Toolkit) — самая старая реализация DICOM-протокола. Она включает набор инструментов для работы с протоколом: парсеры DICOM-файлов в разных форматах и из разных форматов, а также утилиты для взаимодействия с DICOM-сервером по сети.

XXE в xml2dcm

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

Чем кончилось: данную уязвимость вендор устранил.

Небезопасные функции xml2dcm

По аналогии с external entities в XML, cама по себе утилита xml2dcm позволяет создавать DICOM-файлы c содержимым других файлов внутри. Это удобно, потому что не нужно писать данные в XML-файл — достаточно указать в теге PixelData путь к файлу, из которого нужно подгрузить данные при конвертировании.

Если в теге PixelDatа указать путь к любому файлу в системе, то после обработки утилитой xml2dcm мы получим DICOM-файл с его содержимым.

Чем кончилось: эту функцию невозможно отключить никаким флагом, а на доработку парсера xml2dcm вендор не согласился 🙁

DoS в парсерах DICOM-файлов

Мы тестировали парсеры из DCMTK при помощи фаззинга AFL и libFuzzer. Результат — DoS-утилиты xml2dcm и dcm2xml.

Чем кончилось: вендор исправил найденные ошибки.

DoS в dcmqrscp-сервере

DCMTK также предоставляет реализацию DICOM-сервера dcmqrscp. Тестирование безопасности DICOM-сервера dcmqrscp было проведено с помощью фаззинга, в результате которого был обнаружен DoS.
Фаззинг проводился при помощи AFLNet. Поддержку протокола DICOM я добавила в официальный репозиторий AFLNet, если кому-то захочется пофаззить другие DICOM-серверы.

Чем кончилось: вендор исправил ошибку реализации.

Приложения medical imaging

ORTHANC

В ходе исследования мы затронули приложение ORTHANC. Этот продукт очень прост в настройке и использовании: он предоставляет веб-обертку для просмотра DICOM-файлов, и для работы с DICOM-протоколом требуется только браузер.
ORTHANC используют в здравоохранении, в различных университетах и госпиталях, с его помощью проводятся исследования в области машинного обучения medical imaging (раз и два).

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться
Открытые серверы ORTHANC в сети

Небезопасное API

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

Он принимает на вход скрипты на lua и без какой-либо валидации выполняет их на сервере. Чтобы убедиться в этом самостоятельно, посмотрите исходный код ORTHANC.

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться

Уязвимость аутентификации к CSRF-атаке

Метод execute-script является небезопасным. Разработчик ORTHANC решил эту проблему при помощи аутентификации, чтобы выполнять такие запросы могли только зарегистрированные пользователи. Но по умолчанию аутентификация отключена при работе с ORTHANC-сервером с официального сайта.

В докере от разработчика уже включена аутентификация по умолчанию. Это здорово, если бы не следующая проблема: данная система аутентификации уязвима к CSRF-атаке. Достаточно создать страничку со следующим содержанием и отправить ее пользователю:

Когда пользователь открывает страницу, на сервер отправляется команда, запускающая выполнение произвольного кода.

Ответ вендора на запрос исправления данной уязвимости меня удивил: оказывается, ORTHANC — это микросервис, поэтому и о безопасности среды, где вы его разворачиваете, извольте позаботиться сами. То есть и механизм аутентификации мы сами должны написать? И догадаться о том, что поставляемый вендором механизм аутентификации лишь создает иллюзию безопасности и надежности, но на самом деле бесполезен?

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться
Ответ вендора

BTW: кеш гугла показал, что приписку в документации о CSRF вендор сделал после моего репорта об уязвимости. И, конечно же, вряд ли он известил тех клиентов, которые уже пользуются их «микросервисом» и верят в его надежность.

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться
Страница документации после ответа вендора на репорт об уязвимости

что такое dicom и как им пользоваться. Смотреть фото что такое dicom и как им пользоваться. Смотреть картинку что такое dicom и как им пользоваться. Картинка про что такое dicom и как им пользоваться. Фото что такое dicom и как им пользоваться
Страница документации из кеша гугл за пару дней до репорта не содержит каких-либо упоминаний CSRF

Чем кончилось: вендор так ничего и не предпринял для устранения данной уязвимости, только дополнил документацию.

Заключение

То, как просто найти уязвимости в medical imaging и как забавно вендоры реагируют на баг-репорты, показывает слабый уровень защищенности таких технологий. Чтобы они стали безопасными, над ними еще работать и работать.

Напоследок оставлю табличку со всеми описанными в статье багами.

VendorProductWeakness
SimpleITKImageSeriesReaderHeap-buffer-overflow
SimpleITKImageSeriesReaderBuffer-overflow
OrthancOrthancCSRF with remote code execution
DCMTKxml2dcmXXE
DCMTKxml2dcmDoS
DCMTKxml2dcmFile read functionality
DCMTKdcm2xmlDoS
DCMTKdcmqrscpDoS

Также подробная информация лежит на github.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *