루트킷 탐지 - 코드 무결성

루트킷은 더 이상 시스템 관리자만의 전유물이 아닙니다. 저장소에도 존재합니다.

루트킷이란 무엇인가요?

루트킷은 더 이상 단순한 저수준 악성 소프트웨어가 아닙니다. 그 핵심은 은밀한 잠입입니다. 무단 접근을 허용하는 악성 소프트웨어 루트킷은 자신의 존재를 숨긴 채 활동합니다. 기존에는 커널 공간이나 시스템 서비스에 존재했지만, 오늘날에는 저장소, CI 시스템, 패키지 매니페스트에도 숨어들어 코드 무결성을 훼손하고 빌드 시스템을 감염시킵니다.

시스템 루트킷부터 저장소 루트킷까지

시스템 엔지니어들은 예전에는 커널 루트킷 때문에 골머리를 앓곤 했습니다. 루트킷은 시스템에 대한 완전한 제어권을 부여하여 시스템 호출을 가로채고, 프로세스를 숨기고, 코드 무결성을 손상시켰습니다. 이제 개발자 중심의 시나리오를 가정해 보겠습니다. 악의적인 공격자가 여러분의 시스템에 루트킷을 주입했습니다. Git 저장소 or 의존성 트리이 저장소 루트킷은 빌드 출력을 조작하거나 백도어를 몰래 심어 패키지 아티팩트의 일부가 되는 코드입니다. 시스템에서 패키지가 실행되기 전에도 이러한 행위가 발생할 수 있습니다. 루트킷은 소스 코드, 종속성 및 저장소로 침투합니다. CI/CD 흐름.

루트킷은 어떻게 코드베이스와 종속성에 숨어 있을까요?

개발자들이 반드시 주의해야 할 구체적인 루트킷 공격 벡터를 살펴보겠습니다.

  • 모호하거나 오해의 소지가 있는 commits
    상상 commit "오타 수정"이라고 쓰여 있지만 실제로는 런타임에 악성 페이로드를 복호화하는 로더를 삽입하는 루트킷입니다. 이런 경우 루트킷 탐지는 까다롭습니다. commit 메시지에는 의도가 숨겨져 있습니다.
  • 변조되었거나 백도어가 있는 라이브러리
    흔히 사용되는 유틸리티 함수가 교묘하게 백도어가 심어진 버전으로 대체되었습니다. 이 함수는 테스트는 통과하지만, 근무 시간 이후에는 비밀 정보를 원격 서버에 기록합니다. 겉보기에는 익숙한 라이브러리처럼 보이지만, 코드의 무결성이 훼손된 것입니다.
  • 손상된 타사 패키지 및 전이적 종속성
    설치하셨습니다 lib-crypto@2.0.1상류, 누군가 독을 넣은 버전 2.0.0 악성코드에 감염되었습니다. 이제 당신의 pipeline 실수로 루트킷을 추출했거나, 더 심각하게는 잠금 파일이 손상되어 오염된 코드를 추출했을 수도 있습니다.
  • 슬리핑 코드와 논리 폭탄

코드는 몇 주 또는 몇 달 동안 아무런 문제 없이 있다가 갑자기 활동을 시작합니다. 예를 들면 다음과 같습니다.

오늘은 테스트가 통과했지만, 코드 무결성이 손상되었다는 사실을 너무 늦게 알아차리는 경우가 있습니다.

DevOps에서 루트킷 탐지가 중요한 이유

루트킷이 당신의 pipeline 그리고 저장소는 실제 개발자 워크플로를 위협합니다:

  • 변조되었지만 감지되지 않고 통과되는 빌드: 루트킷인 경우 hooks 빌드 스크립트에 악성 코드를 삽입하는 것과 같은 행위는 위험할 수 있습니다. 설치 후 or setup.py그러면 CI 테스트는 통과되지만, 당신은 자신도 모르게 손상된 아티팩트를 푸시하게 됩니다.
  • 빌드 결과가 일관되지 않거나 재현되지 않는 경우: 루트킷은 개발자 컴퓨터와 CI 에이전트에서 빌드 결과가 다르게 나타나도록 만들 수 있습니다. 이러한 차이는 코드 무결성에 문제가 될 수 있지만, 이를 확인하는 경우에만 문제가 됩니다.
  • 여러 릴리스에 걸쳐 지속적인 침해 발생: 일단 삽입되면 브랜치 병합, 체리픽, 향후 릴리스에서도 살아남을 수 있습니다. 더 심각한 경우, 업데이트에 삽입되어 공급망을 손상시킬 수도 있습니다.
  • Pipeline 개발자 환경 내부의 독성 물질 유입 및 수평 이동: 루트킷은 CI 설정, 공유 실행기, 공유 자격 증명을 사용하는 개발자 컴퓨터 등을 통해 확산될 수 있습니다. 코드 무결성은 코드 자체뿐만 아니라 여러 환경에 걸쳐 손상될 수 있습니다.

실용적인 루트킷 탐지 Pipelines

다음은 개발자가 쉽게 따라할 수 있고 실용적인 루트킷 탐지 기술입니다.

• 중요 파일에 대한 해시 유효성 검사 의존성

키 파일과 같은 파일에 대해 SHA-256(또는 유사한) 해시값을 계산합니다. requirements.txt, 패키지 잠금.json또는 최상위 빌드 스크립트:

해당 파일에 변경 사항이 생기면 악의적인 의도가 개입되었을 가능성이 있습니다.

• SBOM (소프트웨어 BOM) 검증

생성 SBOM Syft 또는 SPDX와 같은 도구를 사용하여 빌드에 포함된 종속성(및 버전)을 정확하게 추적하고 비교하세요. SBOM빌드 전반에 걸쳐 s를 검사하여 예상치 못한 또는 악의적인 추가 사항을 감지합니다.

• 서명됨 commits 및 서명 확인

적용 자식 commit -S CI에서 서명을 확인합니다.

새롭거나, 서명이 없거나, 서명이 의심스러운 경우 commit 소스-루트킷 프로브일 수 있습니다.

• 빌드 또는 런타임 중 동작 기반 이상 탐지

빌드 과정에 프로파일링을 추가하여 예상치 못한 네트워크 호출과 같은 이상 동작을 포착하세요. npm 설치 or 핍 설치또는 보호된 디렉터리의 파일 변경 사항:

설치 중 예기치 않은 외부 트래픽이 발생하는 것은 루트킷 로딩 단계일 수 있습니다.

• 난독화되었거나 엔트로피가 높은 코드 세그먼트를 검색합니다.

코드의 엔트로피가 의심스럽거나 비ASCII/읽기 어려운 부분을 표시하는 도구를 사용하십시오. pull requests예를 들어, 스캔을 통합합니다. 베이스 이상한 실행/평가 코드 사용이나 의미 없는 문자열이 발견되었습니다. 강조 표시된 코드는 대기 중인 로더 또는 암호화된 페이로드일 수 있습니다.

공급망 전반에 걸쳐 코드 무결성 유지

장기적으로는 루트킷 탐지를 습관화할 수 있는 연습이 필요합니다.

  • 종속성 고정 및 잠금 파일: 항상 commit 잠금 파일(package-lock.json, requirements.lock버전을 고정하여 변형된 전이적 종속성을 실수로 가져와 루트킷이 침투할 위험을 방지하세요.
  • 릴리스 및 패키지의 암호화 서명: GPG 또는 유사한 프로토콜을 사용하여 빌드 결과물에 서명하세요. 사용자는 서명을 검증합니다. 루트킷이 릴리스를 변조한 경우 검증이 실패하여 신뢰 체인이 끊어집니다.
  • 정기적인 검토 제3자 및 전이적 변경: 새로운 종속성이나 변경된 종속성을 표시하는 종속성 모니터링 도구를 사용하십시오. 다음 도구와 함께 사용하십시오. SBOM 모듈이 주입되거나 교체되었는지 감지하기 위한 차이점 분석.
  • 종속성 변화에 대한 지속적인 모니터링 또는 무단 변경: Automate SBOM CI 환경에서 차이점을 추적하고, 예상치 못한 종속성이 나타나면 빌드를 실패시키세요. 시간 경과에 따른 종속성 변화를 추적하고, 예상 상태에서 벗어나는 경우(예: 루트킷) 경고를 표시하세요. commit 또는 대체된 종속성.

맺음말

루트킷은 더 이상 시스템 관리자와 커널에만 국한되지 않습니다. 이제 개발의 핵심인 저장소, 빌드 및 CI 환경으로까지 침투했습니다. pipeline개발자는 루트킷 탐지 및 코드 무결성을 핵심 애플리케이션 보안 문제로 다뤄야 합니다. 해시 유효성 검사를 사용하면, SBOM 감사, 서명됨 commits, 행동 이상 탐지 및 종속성 관리 기능을 통해 코드에 숨어있는 루트킷에 대한 실질적인 방어 체계를 구축할 수 있습니다.

같은 도구 제니소프트웨어 공급망 강화에 초점을 맞춘 이 도구는 DevSecOps 팀이 코드 무결성을 유지하고 워크플로 초기에 루트킷 위협을 탐지할 수 있도록 지원합니다. 개발자 중심 보안에 필수적인 이 도구는 루트킷이 저장소, 빌드 또는 프로덕션 환경으로 확산되기 전에 차단하는 데 도움을 줍니다.

sca-tools-software-composition-analysis-tools
소프트웨어 위험을 우선순위화하고, 해결하고, 보호하십시오.
무료 계정을 만드세요.
신용 카드가 필요하지 않습니다.

소프트웨어 개발 및 제공을 안전하게 보호하세요

Xygeni 제품군과 함께