AI, 최대 오픈소스 의료 기록 소프트웨어서 38개 취약점 발견
AI 보안 분석 엔진이 전 세계 10만 개 이상의 의료 기관에서 사용 중인 오픈소스 전자 건강 기록 플랫폼인 OpenEMR에서 38개의 심각한 보안 취약점(CVE)을 단 분기 만에 발견했습니다. 가장 심각한 문제들은 SQL 인젝션 공격을 통해 환자의 민감한 데이터 유출 및 서버 원격 제어까지 가능하게 만드는 수준이었습니다. 이는 공격에 악용되기 전 AI를 통한 선제적인 보안 진단이 의료 분야 등 핵심 인프라를 지키는 데 매우 효과적임을 입증한 사례입니다.
AI, 10만 개 의료 기관이 사용하는 헬스케어 소프트웨어에서 38개의 CVE 발견
작성자: Stanislav Fort 게시일: 2026년 4월 28일
헬스케어 산업의 디지털화는 보안 기술의 발전 속도보다 더 빠르게 진행되고 있습니다. AI 보조 진단, 원격 의료, 자동 청구 시스템은 전례 없는 속도로 의료 서비스에 대한 접근성을 확대하고 있지만, 이러한 시스템을 보호하는 보안 관행은 이 속도를 따라가지 못하고 있습니다. 동시에 공격자들 역시 취약점을 그 어느 때보다 빠르게 찾아내기 위해 AI를 활용하고 있습니다. 그 결과, 헬스케어 소프트웨어의 기능과 이를 방어하는 수준 사이의 격차는 점점 벌어지고 있습니다.
'OpenEMR'은 바로 이 격차 한가운데에 서 있습니다. 이 플랫폼은 세계에서 가장 널리 채택된 오픈소스 전자 건강 기록(EHR) 플랫폼 중 하나로, 34개 언어를 지원하며 2억 명 이상의 환자를 진료하는 10만 개 이상의 의료 기관에서 사용되고 있습니다. 2026년 2월에 릴리스된 OpenEMR 8.0은 미국 연방 보건 IT 인증 프로그램에 따라 전체 개인정보 보호 및 보안 기준(§ 170.315(d)(1) ~ (d)(13))을 충족하여 ONC 인증을 받았습니다. 이러한 넓은 사용 범위 때문에 이 시스템을 보호하는 것은 필수적입니다.
바로 이러한 이유로 우리는 OpenEMR을 오픈소스 파트너십 보안 작업의 핵심 대상으로 선택했습니다. 우리의 목표는 과거 OpenSSL에서 12개의 제로데이 취약점을 밝혀낸 것과 동일한 자율 분석 엔진을 수백만 환자가 매일 의존하는 코드 베이스에 적용하여 핵심 인프라를 강화하는 것입니다. OpenEMR 유지보수 팀은 우리와 긴밀하게 협력했으며, 발견된 사항에 대해 매우 빠르고 전문적으로 대응했습니다. 다음은 우리가 발견한 내용, 문제가 해결된 방식, 그리고 이 경험이 헬스케어 애플리케이션 보안의 현재 상태에 대해 시사하는 바에 대한 요약입니다.
[발견 사항 요약] 2026년 1분기 동안, AISLE의 연구원들인 Stanislav Fort, Petr Simecek, Petr Simecek는 AISLE AI 분석기를 OpenEMR 코드 베이스에 적용하여 38개의 CVE(공통 취약점 및 노출)를 발견했습니다. 이는 해당 기간 동안 GitHub에 게시된 전체 OpenEMR 보안 권고의 절반 이상을 차지하는 수치입니다. 비교를 위해 언급하자면, OpenEMR에 대해 가장 주목받았던 이전의 독립적인 보안 감사는 '2018 Project Insecurity' 보고서입니다. 이는 전담 인간 연구팀의 장기적인 노력 끝에 23개의 취약점을 공개하며 국제적인 언론 보도를 이끌어냈던 사례입니다. 그러나 AISLE의 분석기는 단 한 분기 만에 38개의 취약점을 찾아냈습니다.
이러한 취약점들은 OpenEMR 배포 환경을 겨냥한 광범위한 공격을 가능하게 할 수 있었습니다. 가장 심각한 경우에는 SQL 인젝션(SQL Injection) 취약점이 일정 수준의 데이터베이스 권한과 결합되어 데이터베이스 전체가 탈취되고, 대규모 개인 건강 정보(PHI) 유출이 발생하며, 서버에서 원격 코드 실행(RCE)까지 가능했습니다.
[주요 발견 사항] 다음의 각 취약점은 민감한 환자 데이터에 접근하거나 이를 조작(변조)하는 데 악용될 수 있었습니다.
CVE-2026-24908: 환자 REST API 정렬 파라미터에서의 SQL 인젝션 CVSS 점수 10.0(최대 위험도)을 기록한 이번 발견은 OpenEMR의 환자 REST API에서 발견되었습니다. 이 API에서 _sort 쿼리 파라미터는 클라이언트가 반환된 결과의 정렬 순서를 선택할 수 있게 해주는 일반적인 REST 패턴입니다. 그러나 _sort에 전달된 값은 아무런 검증이나 허용된 정렬 필드의 화이트리스트 처리, 식별자 이스케이프 처리 없이 SQL ORDER BY 절에 직접 문자열로 연결되었습니다. 단 하나의 누락된 호출 조치로 인해 OAuth2 베어러 토큰을 가진 인증된 클라이언트라면 누구든지 이 결함을 세 가지 방식으로 악용할 수 있었습니다. 첫째, UNION SELECT 페이로드를 사용하여 자격 증명 해시나 임의의 테이블 내용을 추출할 수 있습니다. 둘째, SLEEP() 함수를 통한 시간 기반 블라인드 인젝션으로 취약점 악용 가능성을 확인할 수 있습니다. 셋째, 데이터베이스 사용자에게 FILE 권한이 있는 경우 임의의 파일 읽기/쓰기 및 원격 코드 실행(RCE)으로 권한을 상승시킬 수 있습니다.
CVE-2026-23627: 예방 접종 검색/보고서에서의 SQL 인젝션 예방 접종(Immunization) 모듈의 검색 및 보고서 엔드포인트에도 REST API가 아닌 웹 UI 내에 유사한 결함이 있었습니다. patient_id 폼 파라미터는 쉼표로 분할된 뒤, 각 조각이 파라미터화나 이스케이프 처리 없이 SQL WHERE 절에 직접 꿰매어져 들어갔습니다. 인젝션 지점이 ORDER BY가 아닌 WHERE 절에 있었기 때문에 악용은 훨씬 더 간단했습니다. 단일 요청만으로 UNION SELECT를 통해 모든 테이블의 데이터를 추출할 수 있었고, 단순한 SLEEP() 호출만으로도 시간 기반 블라인드 인젝션이 작동했습니다. 만약 데이터베이스 사용자에게 충분한 권한이 있었다면 이 경로를 통해서도 시스템 전체가 위험에 처할 수 있었습니다.