banner

소식

May 06, 2023

연구원들은 Siemens PLC에서 마스터 암호화 키를 추출합니다.

루시안 콘스탄틴

CSO 선임 작가, CSO |

보안 연구원들이 여러 Siemens 프로그래밍 가능 논리 컨트롤러(PLC) 제품군의 CPU에 하드코딩된 글로벌 암호화 키를 추출하여 보안 통신 및 인증을 손상시키는 방법을 발견했습니다. Siemens는 모든 고객에게 영향을 받는 장치의 펌웨어와 엔지니어가 장치와 통신하고 프로그램을 배포하는 데 사용하는 TIA Portal 소프트웨어를 모두 업그레이드할 것을 권고합니다.

Claroty의 보안 연구원에 따르면 Siemens는 구성, 프로그램 및 통신을 보호하기 위해 거의 10년 전에 SIMATIC S7-1200/1500 PLC CPU에 비대칭 암호화를 도입했습니다. 그러나 회사는 해당 제품군의 모든 장치에 하드코딩된 글로벌 개인 키를 사용하는 방식을 선택했습니다. 당시에는 동적 키 배포 및 관리가 일반적인 관행이 아니었고 고객에게 잠재적인 부담이 되었기 때문입니다.

연구원들은 보고서에서 "그러나 그 이후 기술의 발전, 보안 연구, 빠르게 변화하는 위협 환경으로 인해 하드코딩된 암호화 키는 용납할 수 없는 위험이 되었습니다"라고 밝혔습니다. "하드코드된 글로벌 키를 추출할 수 있는 악의적인 행위자는 전체 장치 제품군 보안을 돌이킬 수 없는 방식으로 손상시킬 수 있습니다."

Claroty에 따르면 Siemens S7-1200 및 S7-1500 PLC는 여러 키를 사용합니다. "제품군별" 키는 제품군의 모든 장치에서 공유되며 "모델별/펌웨어" 키는 구성을 암호화하고 코드 무결성을 유지하는 데 사용됩니다. 클라이언트와의 통신을 암호화합니다. 연결 키는 구성 키에서 파생되며 타원 곡선 기반 암호화에 사용됩니다.

이는 공격자가 구성 키를 획득하고 잠재적으로 PLC 구성에서 사용자 비밀번호를 해독할 수 있을 뿐만 아니라 암호화된 구성을 읽을 수 있는 액세스 권한이 없더라도 중간자 공격을 시작할 수 있음을 의미합니다.

문제는 이 제품군 전체 구성 키가 장치 펌웨어(장치에서 실행되는 운영 체제)가 아니라 CPU 자체에 저장된다는 것입니다. 따라서 키를 읽으려면 opcode를 통해 CPU와 직접 상호 작용하기 위한 액세스가 필요합니다. 모든 장치가 키를 공유하므로 한 장치에서 한 번만 수행하면 됩니다.

지난해 Claroty 연구원들은 S7 PLC에 영향을 미쳐 장치에서 네이티브 코드를 실행할 수 있게 해주는 원격 코드 실행 취약점(CVE-2020-15782)을 발견했습니다. 일반적으로 엔지니어가 특수 엔지니어링 소프트웨어를 통해 PLC에 작성하고 배포하는 프로그램이나 로직은 PLC OS의 샌드박스 내에서 실행됩니다. CVE-2020-15782를 통해 연구원들은 해당 보안 계층을 우회하고 PLC에서 일반적으로 보호되는 메모리 주소를 직접 읽고 쓸 수 있었습니다.

연구원들은 "우리가 획득한 DA(직접 메모리 액세스) 읽기 권한을 사용하여 암호화된 전체 PLC 펌웨어(SIMATIC S7-1500)를 추출하고 해당 기능을 매핑할 수 있었습니다"라고 말했습니다. "매핑 과정에서 우리는 PLC에서 개인 키를 읽는 함수를 발견했습니다. 함수 주소를 얻은 후에는 특정 MC7+ opcode의 기능을 쉘 코드로 다시 작성하여 개인 키를 읽는 기본 함수를 호출하도록 했습니다. . 그런 다음 키를 알려진 메모리 주소에 복사하고 거기에서 읽습니다. 덮어쓰기된 기능을 실행하면 PLC의 전체 개인 키가 제공됩니다."

Siemens PLC와 상호 작용하려면 비밀번호가 필요하지만 클라이언트가 장치에 부여하는 권한은 구성할 수 있는 4가지 보호 수준으로 정의됩니다. 보호 수준이 3보다 낮은 경우 공격자는 특별한 권한 없이 PLC에서 구성을 추출할 수 있습니다. 이 구성에는 비밀번호 해시가 포함되어 있지만 암호화되어 있습니다. 그러나 글로벌 개인 키가 있는 경우 공격자는 비밀번호 해시를 해독하고 이를 사용하여 더 높은 권한으로 PLC에 인증할 수 있습니다.

공유하다