4. Code, Data, and Execution Integrity
장치 무결성 (저장된 코드, 저장 및 운영 중인 데이터, 실행 상태) 확보 필요.
ENMany cyber incidents are caused, at their root, by the violation of some form of device integrity. This includes the violation of stored code, stored and operational data, or execution state.KR많은 사이버 사고는 근본적으로 장치 무결성의 어떤 형태가 침해되면서 발생합니다. 여기에는 저장된 코드, 저장 및 운영 중인 데이터, 실행 상태의 침해가 포함됩니다.
코드 무결성을 위한 권고사항
코드 무결성을 위한 권고사항
- Hardware-based security solutions should be considered and employed when possible;
- 가능하다면 하드웨어 기반 보안 솔루션을 고려하고 적용해야 합니다.
- Authenticate firmware and software. Verify authentication tags (e.g., signatures, message authentication codes (MACs)) of software/firmware content, version numbers, and other metadata. The version numbers intended to be installed should themselves be signed or have MACs. Devices should be electronically and visibly identifiable (e.g., Unique device identifier (UDI),79 model number, serial number);
- 펌웨어 및 소프트웨어를 인증하고, 소프트웨어/펌웨어 콘텐츠, 버전 번호 및 기타 메타데이터의 인증 태그(예: 서명, 메시지 인증 코드(MAC))를 검증해야 합니다. 설치될 예정인 버전 번호 자체도 서명되거나 MAC이 있어야 합니다. 장치는 전자적으로 그리고 시각적으로 식별 가능해야 합니다(예: 고유 장치 식별자(UDI), 모델 번호, 일련번호).
- Allow installation of cryptographically authenticated firmware and software updates, and do not allow installation where such cryptographic authentication either is absent or fails. Use cryptographically signed updates to help prevent any unauthorized reductions in the level of protection (downgrade or rollback attacks) by ensuring that the new update represents an authorized version change;
- 암호화 인증된 펌웨어 및 소프트웨어 업데이트만 설치를 허용하고, 해당 인증이 없거나 실패한 경우에는 설치를 허용하지 않아야 합니다. 암호화 서명된 업데이트를 사용하여 보호 수준이 무단으로 낮아지는 다운그레이드 또는 롤백 공격을 방지하고, 새로운 업데이트가 승인된 버전 변경임을 보장해야 합니다.
- One possible approach for authorized downgrades would be to sign new metadata for downgrade requests which, by definition, only happen in exceptional circumstances.
- 예외적인 상황에서만 발생하는 다운그레이드 요청에 대해 새로운 메타데이터에 서명하는 방식이 하나의 가능한 접근법입니다.
- Ensure that the authenticity of software, firmware, and configuration are validated prior to execution, e.g., “allow-listing”80 based on digital signatures;
- 소프트웨어, 펌웨어 및 구성의 진위를 실행 전에 검증해야 하며, 예를 들어 디지털 서명을 기반으로 한 “허용 목록(allow-listing)”을 사용할 수 있습니다.
- Disable or otherwise restrict unauthorized access to all test and debug ports (e.g., JTAG, UART) prior to delivering products; and
- 제품을 제공하기 전에 모든 테스트 및 디버그 포트(예: JTAG, UART)에 대한 비인가 접근을 비활성화하거나 제한해야 합니다.
- Employ tamper evident seals on device enclosures and their sensitive communication ports to help verify physical integrity.
- 장치 외관 및 민감한 통신 포트에 변조 감지 씰을 적용하여 물리적 무결성을 검증할 수 있도록 해야 합니다.
데이터 무결성을 위한 권고사항
데이터 무결성을 위한 권고사항
- Verify the integrity of all incoming data, ensuring that it is not modified in transit or at rest. Cryptographic authentication schemes verify data integrity, but do not verify data validity. Therefore, the integrity of all incoming data should be verified to ensure that it is not modified in transit or at rest;
- 모든 수신 데이터의 무결성을 검증하여 전송 중 또는 저장 중에 변경되지 않았음을 확인해야 합니다. 암호화 인증 체계는 데이터 무결성을 검증하지만, 데이터의 유효성은 검증하지 않습니다. 따라서 모든 수신 데이터가 전송 중 또는 저장 중에 변경되지 않았음을 보장해야 합니다.
- Validate that all data originating from external sources is well-formed and compliant with the expected protocol or specification. Additionally, as appropriate, validate data ranges to ensure they fall within safe limits; and
- 외부 출처에서 유입된 모든 데이터가 예상된 프로토콜이나 사양에 부합하는지 확인하고, 필요에 따라 데이터 범위가 안전한 한도 내에 있는지도 검증해야 합니다.
- Protect the integrity of data necessary to ensure the safety and effectiveness of the device, e.g., critical configuration settings such as energy output.
- 장치의 안전성과 유효성을 보장하기 위해 필요한 데이터의 무결성을 보호해야 합니다. 예: 에너지 출력과 같은 중요한 구성 설정.
실행 무결성을 위한 권고사항
실행 무결성을 위한 권고사항
- Use industry-accepted best practices to maintain and verify integrity of code while it is being executed on the device. For example, Host-based Intrusion Detection/Prevention Systems (HIDS/HIPS) can be used to accomplish this goal; and
- 장치에서 코드가 실행되는 동안 무결성을 유지하고 검증하기 위해 업계에서 인정된 모범 사례를 사용해야 합니다. 예: 호스트 기반 침입 탐지/방지 시스템(HIDS/HIPS)을 활용할 수 있습니다.
- Carefully design and review all code that handles the parsing of external data using automated (e.g., static and dynamic analyses) and manual (i.e., code review) methods.
- 외부 데이터를 파싱하는 모든 코드를 자동화된 방법(예: 정적 및 동적 분석)과 수동 방법(예: 코드 리뷰)을 통해 신중하게 설계하고 검토해야 합니다.