Что такое диком файл
Файл формата DICOM открывается специальными программами. Чтобы открыть данный формат, скачайте одну из предложенных программ.
Чем открыть файл в формате DICOM
Файл с расширением DICOM представляет собой полную аналогию DCM формата. Расширения DICOM и DCM – разработка корпорации NEMA (National Electrical Manufacturers Association), специализирующейся на разработке форматов передачи, хранения и просмотра медицинских изображений.
DICOM Image File – медицинский формат представления графических изображений и коммуникационных линий связи. Объектами стандартизации формата DICOM являются результаты проведения диагностики пациента: обследование с применением ультразвукового диапазона частот, компьютерная/резонансная томография, маммография, УЗИ, рентгенография и.т.п. Помимо графических данных, файл DCM может содержать персональную информацию, благодаря которой представляется возможность идентифицировать пациента и сопоставить изображение с конкретным субъектом.
Программы для открытия DICOM
Создание, загрузка и редактирование файла с расширением DICOM возможно в большинстве графических редакторов. Также, с помощью некоторых специализированных программ можно открыть МРТ снимок или посмотреть КТ.
Самое широкое распространение среди них получили следующие программные комплексы:
Каждая из вышеперечисленных графических систем обладает своим уникальным набором инструментов, позволяющих произвести редактирование изображения медицинских диагностических исследований.
Конвертация DICOM в другие форматы
Конвертация файла DICOM (графическое цифровое изображение) в другой формат представления данных предусмотрена в следующих вариациях:
Почему именно DICOM и в чем его достоинства?
Всестороннее диагностическое обследование пациента невозможно без качественно сделанных снимков. Формат DICOM позволяет осуществлять хранение/передачу/обработку графической информации и сопоставлять ее с персональными данными каждого пациента.
Изображение, создаваемое в формате Digital Imaging and Communications in Medicine (DICOM), который был разработан компанией NEMA (National Electrical Manufacturers Association) для обмена и просмотра медицинских изображений, таких как сканированные изображения CT, MRI и изображения ультразвука.
Файлы DICOM могут также содержать данные идентификации для пациентов таким образом, что изображение связано с определенным человеком.
Чем открыть файл в формате DICOM (DICOM Image File)
Файлы формата DICOM
Важно!
3D-функции Photoshop будут удалены в будущих обновлениях. Пользователям, работающим с 3D-функциями, рекомендуется ознакомиться с новой коллекцией Adobe Substance 3D, которая представляет собой новое поколение 3D-инструментов от Adobe.
Дополнительную информацию о прекращении поддержки 3D-функций Photoshop можно найти здесь: Photoshop 3D | Распространенные вопросы об упраздненных 3D-функциях.
В Photoshop CS6 функциональные возможности 3D были доступны в Photoshop Extended. Все возможности Photoshop Extended доступны в Photoshop. Photoshop не имеет специальной версии Extended.
Сведения о файлах формата DICOM
Стандарт DICOM (сокращенное название Digital Imaging and Communications in Medicine (формирование, передача и хранение медицинских изображений)) является наиболее распространенным стандартом данных медицинских сканирований. Photoshop позволяет открывать файлы стандарта DICOM (с расширением DC3, DCM, DIC или без расширения) и работать с ними. Файлы DICOM могут содержать несколько «фрагментов» или кадров, которые соответствуют различным слоям изображения.
Photoshop считывает все кадры из файла стандарта DICOM и преобразует их в слои Photoshop. Photoshop также способен располагать все кадры в формате DICOM в сетке одного слоя или преобразовывать их в 3D-объем, который можно вращать в 3D-пространстве. Программа Photoshop может считывать 8‑, 10‑, 12‑ или 16‑битные файлы DICOM. Программа Photoshop преобразует 10‑ и 12‑битные файлы в 16‑битные файлы.
После открытия файла стандарта DICOM в программе Photoshop можно использовать любой инструмент Photoshop для настройки изображения, нанесения меток или добавления аннотации к файлу. Например, для добавления комментария к файлу используйте инструмент «Комментарий», для пометки определенной области изображения используйте инструмент «Карандаш», для удаления с изображения пыли и царапин используйте фильтр «Пыль и царапины». Для измерения содержимого изображения используйте «Линейку» или инструменты выделения.
Каждая шкала изменений, присутствующая в файле DICOM, автоматически импортируется вместе с файлом. Если шкала отсутствует, то добавляется пользовательская шкала с масштабом по умолчанию (1 пиксель = 1 мм). См. раздел Задание шкалы измерений.
8-битные файлы DICOM можно сохранять в файл с любым форматом, поддерживаемым Photoshop (16‑битные файлы должны сохраняться в файлах формата DICOM, Large Document Format, Photoshop, Photoshop PDF, Photoshop Raw, PNG или TIFF).
При сохранении файла в формате DICOM все стили слоев, настройки, режимы наложения и маски сохранены не будут.
Открытие файла DICOM
Перед открытием файла формата DICOM необходимо задать вариант открытия кадров DICOM (в качестве слоев, в сетке, как 3D-объем), а также установить параметры (в диалоговом окне «Импорт файла формата DICOM»), сделав анонимными метаданные пациента и отобразив перекрытия. Во время импорта можно выполнять панорамирование, увеличение, а также регулировать окна.
Диалоговое окно импорта файлов формата DICOM также содержит заголовки DICOM — текстовую информацию о файле (размеры, данные о разрешении и сведения о сжатии данных).
С помощью команды «Новый видеослой из файла» можно импортировать последовательность из нескольких однокадровых файлов формата DICOM в один файл Photoshop с несколькими слоями. См. раздел Импорт последовательностей изображений.
DICOM на сайте: как загружать и просматривать
Знали ли Вы, что на нашем сайте есть возможность не только загружать, но и просматривать клинические случаи в DICOM-формате?
Данная пошаговая инструкция научит Вас это делать.
Для начала нам нужно раздобыть DICOM-файлы. Мы будем копировать их с диска, который до этого записали на станции оператора.
1. Вставляем диск с DICOM в привод, открываем «Мой Компьютер». Если началась автозагрузка просмотровщика, то можно ее остановить.
2. Чтобы увидеть содержимое диска, в «Моем компьютере» кликаем на изображение диска правой кнопкой и выбираем «Открыть в новом окне»:
3. В открывшемся окне ищем директорию «DICOM». Если такой директории нет, просто выделите все, что есть на диске. При дальнейшей загрузке лишние файлы будут удалены. На директории DICOM кликаем правой кнопкой мыши и выбираем «копировать»:
4. Нам нужно скопировать файлы DICOM на наш компьютер, чтобы была возможность поместить их в zip-архив, иначе это работать не будет! Выбираем любую директорию, куда мы хотим поместить DICOM-файлы. В нашем примере это, конечно же, рабочий стол! Кликаем правой кнопкой мыши на пустом месте и выбираем «вставить»:
5. Теперь делаем zip-архив с DICOM-файлами. Для этого кликаем по директории с файлами правой кнопкой мыши, выбираем «Отправить» и «Сжатая zip-папка»:
6. Должен получиться zip-файл:
7. На сайте RADIOMED создаем клиническое наблюдение. В разделе «Исследование» выбираем вкладку «DICOM»:
8. Перетаскивем при помощи мыши наш DICOM-файл в область с надписью «переместите файл сюда. » или пользуемся кнопкой «просмотр», чтобы найти файл на диске:
9. Ждем загрузки файла. Пока он загружается, модно закончить оформление остальных разделов клинического наблюдения.
10. После сохранения клинического наблюдения в окне исследования появится кнопка «DICOM»:
11. После нажатия этой кнопки прямо Вы увидите окно просмотровщика прямо в браузере:
Дождитесь загрузки исслелдования, полсле чего можно работать с ним практически также, как на рабочей станции:
К чему приводят уязвимости протокола DICOM
Вы наверняка видели в медицинском сериале, как интерны бьются над рентгеновским снимком пациента, а потом приходит их наставник и ставит диагноз по едва заметному пятнышку. В реальности такими остроглазыми диагностами становятся модели машинного обучения, применяемые в технологии medical imaging. Благодаря таким штукам можно гораздо быстрее выявить болезнь, например, определить, являются ли клетки на снимках опухолевыми или неопухолевыми.
Но есть одна проблема — в медицинских технологиях используются 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 Network
Стандарт протокола довольно сложно и нудно описывает сетевое взаимодействие — мне до сих пор не удалось изучить его целиком. Но если говорить в общем, вот какие команды сетевого взаимодействия есть у DICOM-протокола:
Действие | Описание |
---|---|
C-ECHO | Тест соединения между двумя устройствами |
C-FIND | Поиск исследований на удаленном сервере |
C-GET, C-MOVE | Скачивание исследований с удаленного сервера |
C-STORE | Сохранение исследования на удаленном сервере |
Вот как выглядит процесс передачи результатов медицинских обследований по DICOM-протоколу
Немного статистики по DICOM-серверам в интернете.
Такие картинки-отчеты о сканировании генерирует Grinder Framework
Интересный факт: когда мои коллеги из AISec проводили сканирование в 2019 году, то доступных серверов было меньше тысячи. В 2020 году же их оказалось около 2700.
Большинство хостов в сети настроены таким образом, что любой может установить с ними соединение. Давайте разберем пример, как просто получить исследование с удаленного сервера из сети. Для этого воспользуемся утилитами findscu и getscu из DCMTK — набора библиотек и приложений, реализующих большую часть стандарта DICOM.
Первой командой получаем список всех доступных исследований на сервере.
Пример вывода команды findscu
Следующей командой скачиваем нужное нам исследование или все исследования сразу.
Значения ключей в команде аналогичны предыдущей.
Пример исследования, скачанного с удаленного сервера DICOM
Вот так с помощью двух команд можно скачать данные с удаленного DICOM-сервера при наличии одного из условий:
Далее рассмотрим популярные инструменты и реализации протокола и найденные в них недостатки.
Реализации протокола DICOM
SimpleITK
SimpleITK — реализация протокола, которая используется в одном из крупных проектов в области medical imaging NVIDIA CLARA.
В ответ на репорт о переполнении кучи разработчик просто поправил файл, демонстрирующий уязвимость, чтобы он корректно обрабатывался библиотекой 🙂
Чем кончилось: в конце концов мы друг друга поняли, и вендор быстро исправил обе уязвимости.
DCMTK
DCMTK (DICOM Toolkit) — самая старая реализация DICOM-протокола. Она включает набор инструментов для работы с протоколом: парсеры DICOM-файлов в разных форматах и из разных форматов, а также утилиты для взаимодействия с DICOM-сервером по сети.
XXE в xml2dcm
Чем кончилось: данную уязвимость вендор устранил.
Небезопасные функции 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 (раз и два).
Открытые серверы ORTHANC в сети
Небезопасное API
Он принимает на вход скрипты на lua и без какой-либо валидации выполняет их на сервере. Чтобы убедиться в этом самостоятельно, посмотрите исходный код ORTHANC.
Уязвимость аутентификации к CSRF-атаке
Метод execute-script является небезопасным. Разработчик ORTHANC решил эту проблему при помощи аутентификации, чтобы выполнять такие запросы могли только зарегистрированные пользователи. Но по умолчанию аутентификация отключена при работе с ORTHANC-сервером с официального сайта.
В докере от разработчика уже включена аутентификация по умолчанию. Это здорово, если бы не следующая проблема: данная система аутентификации уязвима к CSRF-атаке. Достаточно создать страничку со следующим содержанием и отправить ее пользователю:
Когда пользователь открывает страницу, на сервер отправляется команда, запускающая выполнение произвольного кода.
Ответ вендора на запрос исправления данной уязвимости меня удивил: оказывается, ORTHANC — это микросервис, поэтому и о безопасности среды, где вы его разворачиваете, извольте позаботиться сами. То есть и механизм аутентификации мы сами должны написать? И догадаться о том, что поставляемый вендором механизм аутентификации лишь создает иллюзию безопасности и надежности, но на самом деле бесполезен?
Ответ вендора
BTW: кеш гугла показал, что приписку в документации о CSRF вендор сделал после моего репорта об уязвимости. И, конечно же, вряд ли он известил тех клиентов, которые уже пользуются их «микросервисом» и верят в его надежность.
Страница документации после ответа вендора на репорт об уязвимости
Страница документации из кеша гугл за пару дней до репорта не содержит каких-либо упоминаний CSRF
Чем кончилось: вендор так ничего и не предпринял для устранения данной уязвимости, только дополнил документацию.
Заключение
То, как просто найти уязвимости в medical imaging и как забавно вендоры реагируют на баг-репорты, показывает слабый уровень защищенности таких технологий. Чтобы они стали безопасными, над ними еще работать и работать.
Напоследок оставлю табличку со всеми описанными в статье багами.
Vendor | Product | Weakness |
---|---|---|
SimpleITK | ImageSeriesReader | Heap-buffer-overflow |
SimpleITK | ImageSeriesReader | Buffer-overflow |
Orthanc | Orthanc | CSRF with remote code execution |
DCMTK | xml2dcm | XXE |
DCMTK | xml2dcm | DoS |
DCMTK | xml2dcm | File read functionality |
DCMTK | dcm2xml | DoS |
DCMTK | dcmqrscp | DoS |
Также подробная информация лежит на github.
DICOM
DICOM (англ. Digital Imaging and Communications in Medicine ) — отраслевой стандарт создания, хранения, передачи и визуализации медицинских изображений и документов обследованных пациентов.
Содержание
DICOM Standard
DICOM опирается на ISO-стандарт OSI, поддерживается основными производителями медицинского оборудования и медицинского программного обеспечения.
Стандарт DICOM, разрабатываемый Национальной ассоциацией производителей электронного оборудования (National Electrical Manufacturers Association), позволяет создавать, хранить, передавать и печатать отдельные кадры изображения, серии кадров, информацию о пациенте, исследовании, оборудовании, учреждениях, медицинском персонале, производящем обследование, и т. п.
Стандартом DICOM определено два информационных уровня:
DICOM File
DICOM File представляет собой объектно-ориентированный файл с теговой организацией. Информационная модель стандарта DICOM для DICOM файла четырёхступенчатая:
Файловый уровень стандарта DICOM 3.0 редакции 2008 года описывает:
DICOM Network Protocol
DICOM Network Protocol использует TCP/IP для передачи медицинской информации от медицинского оборудования в PACS-систему (Picture Archiving and Communication System) и для связи между PACS-системами. Протокол трёхуровневый — нижний, сразу над TCP — DUL (DICOM Upper Layer); над ним — сервисы: DIMSE (DICOM Message protocol) и ACSE (Association Control protocol — standard OSI protocol); и выше DICOM Application Interface. Над ними расположено приложение — Medical Imaging Application.
Стандарт DICOM позволяет производить интеграцию медицинского оборудования разных производителей, включая DICOM-сканеры, DICOM-серверы, автоматизированные рабочие места и DICOM принтеры в единую радиологическую (англ. Radiology information system ) или клиническую информационную систему (англ. Hospital information system ).
Стандарт DICOM включает в себя ряд сетевых (основных) сервисов:
Стандарт DICOM включает в себя основные сетевые команды, каждая из которых осуществляет как запрос (request) — в основном отправляет «клиент» (Service Class User, SCU), так и ответ (response) — в основном отвечает «сервер» (Service Class Provider, SCP):