설명
원격에서 받은 스크립트나 플러그인 코드를 해시, 서명, 고정된 신뢰 체인 없이 저장하거나 실행하면 변조된 코드가 애플리케이션 권한으로 실행될 수 있습니다.
잠재적 영향
- 네트워크 변조나 저장소 탈취로 악성 코드가 실행될 수 있습니다.
- 배포 환경에 지속성 있는 백도어나 임의 파일이 설치될 수 있습니다.
해결 방법
- 다운로드한 코드의 SHA-256 해시나 디지털 서명을 검증합니다.
- 가능하면 런타임 다운로드 대신 패키지 관리자, 잠금 파일, 서명 검증을 사용합니다.
예시
변경 전
python
code = requests.get(url).text
exec(code)
변경 후
python
data = requests.get(url, timeout=5).content
digest = hashlib.sha256(data).hexdigest()
if not hmac.compare_digest(digest, expected_digest):
raise ValueError("bad digest")
설명:
- 변경 전: 원격에서 받은 스크립트나 플러그인 코드를 해시, 서명, 고정된 신뢰 체인 없이 저장하거나 실행하면 네트워크 변조, 저장소 탈취, DNS 변조로 악성 코드가 주입될 수 있습니다.
- 변경 후: 다운로드한 코드의 SHA-256 해시나 디지털 서명을 고정된 신뢰 기준과 비교합니다.