Therac-25 – медицинское устройство, предназначенное для проведения радиотерапии, выпущенное канадской компанией Atomic Energy of Canada Limited в начале 1980-х годов. Эта система была разработана для лечения различных видов рака с использованием электонного и рентгеновского излучения. Тем не менее, несмотря на высокие цели, связанные с его созданием, Therac-25 вошёл в историю как один из самых печально известных примеров катастроф, возникших вследствие ошибок программного обеспечения в безопасных для жизни медицинских приборах. История создания Therac-25 восходит к более ранним моделям Therac-6 и Therac-20, которые разрабатывались в сотрудничестве с французской компанией Compagnie générale de radiologie. Новая модель, представленной в 1982 году, была гораздо компактнее и более универсальной, обладая возможностью переключаться между электронным и рентгеновским режимами.
Ключевой особенностью Therac-25 стала замена аппаратных средств безопасности на программные механизмы контроля, что в итоге сыграло роковую роль в безопасности пациентов. В течение 1985–1987 годов Therac-25 стал причиной по крайней мере шести известных случаев массового передозирования радиации пациентам. Ошибки программирования, в частности так называемые гонки данных (race conditions), приводили к тому, что в особых обстоятельствах аппаратура могла выдавать дозы излучения, превосходящие безопасные нормы в сотни раз. Этим травматическим событиям подверглись пациенты в медицинских центрах Канады и США, что повлекло за собой тяжелые повреждения тканей и, в ряде случаев, смерть. Одной из трагедий стал инцидент в клинике Kennestone Regional Oncology Center, где пациентка Кэти Ярбро подверглась облучению дозой, в пятьдесят и даже сто раз превышающей норму.
Ее жалобы на ощущение ожога игнорировались до тех пор, пока симптомы не стали явно указывать на неправильное лечение. Подобный сценарий повторялся в других центрах, но из-за доверия к системе и убеждения в «непогрешимости» программного обеспечения своевременные меры по предотвращению повторных случаев не принимались. Одной из причин этих инцидентов стало то, что компания AECL доверяла надежности программного обеспечения, в том числе использующемуся ранее в Therac-6 и Therac-20, и не проводила необходимого независимого аудита кода. Кроме того, переход с аппаратных средств безопасности на программную логику стал фатальной ошибкой, так как ПО не обеспечивало адекватный контроль и не способно было эффективно выявлять и предотвращать неправильные режимы работы. Система отображения ошибок оставляла операторов в неведении относительно серьезности возможных проблем.
Многие сообщения, такие как «MALFUNCTION 54», не давали четкого понимания функциональной угрозы. Более того, ошибки, из-за которых пациент мог пострадать, не всегда останавливали аппарат. Машина могла всего лишь приостанавливать лечение, что давало пользователям возможность игнорировать проблему и продолжать сеанс при небезопасных условиях. Характерной ошибкой стала ситуация, когда оператор быстро менял режим с рентгеновского на электронный, что программно не обработалось должным образом. Из-за этого электронный луч мог включиться при отсутствии необходимых деталей оборудования – например, облучать пациента без согласованного положения мишени, что приводило к невероятно высокой нагрузке радиации в локальной зоне.
Ряд серьезных недостатков дизайна проявлялся в отсутствии аппаратных блокировок, защищающих от небезопасных состояний. В Therac-6 и Therac-20 подобные аппаратные механизмы существовали, и именно они маскировали софтовые ошибки. В Therac-25 же полагались исключительно на программные проверки, которые оказались ненадежными. Последствия для здоровья пострадавших были тяжелыми. Пациенты ощущали жгучую боль и электрошоковые ощущения во время процедуры.
Симптомы острого поражения кожи и внутренних тканей проявлялись спустя несколько дней, что позволяло длительное время игнорировать причину. Ожоги сопровождались некрозом тканей, параличами и другими тяжелыми неврологическими нарушениями. Более того, как минимум три пациента умерли от осложнений передозировки радиации. Эти трагические события вызвали волну пересмотра подходов к безопасности программного обеспечения в медицинских устройствах в целом. Подчеркнулась необходимость строгого тестирования, кросс-проверки кода и наличия аппаратных средств контроля безопасности, которые нельзя заменить исключительно программой.
Также отмечалась важность грамотной коммуникации с пользователями техники, чтобы операторы имели понятные инструкции и осознание риска при проявлении ошибок. В результате катастрофы Therac-25 стали классическим примером в образовательных курсах по информатике, инженерии безопасности и этике. Были выделены основные уроки, среди которых отсутствие слепого доверия к переиспользуемому коду, важность независимой проверки и необходимость учета человеческого фактора. Влияние этого случая отразилось и на формировании международных стандартов, таких как IEC 62304, касающихся разработки и сопровождения программного обеспечения для медицинских устройств. Therac-25 продемонстрировал, что сочетание сложных технических систем и человеческого фактора без должных мер безопасности может стать источником серьезных трагедий.
В современном мире, где компьютерное управление медицинским оборудованием становится нормой, необходимость обеспечения надежности, прозрачности и многоуровневой защиты софта исключительно важна. Важно помнить о трагедиях прошлого, чтобы предотвратить повторение подобных ошибок в будущем и сохранить жизни пациентов по всему миру.