Spectre 및 Meltdown CPU 취약성 테스트 및 Linux의 마이크로코드 업데이트


이 페이지에서

  1. Linux 서버가 Spectre CPU 버그에 취약한지 확인하는 방법\n
  2. 설치
  3. Linux에서 Spectre 및 Meltdown 취약점을 확인하는 방법\n
  4. Linux에서 Intel 마이크로코드 펌웨어를 설치/업데이트하는 방법은 무엇입니까?\n
    1. 마이크로코드 현황 파악 방법\n

    Spectre 및 Meltdown CPU 취약점 소개

    이러한 공격을 차단하는 한 가지 방법은 특정 시간에 메모리 캐시를 비워 공격자가 액세스하기 전에 유출된 정보를 제거하는 것입니다. 각 시스템 호출 후 캐시를 다운로드하면 광범위한 추측 공격을 차단할 수 있지만 사용자가 메커니즘을 비활성화할 방법을 찾을 정도로 시스템 속도가 느려질 수도 있습니다. 정보의 보안은 매우 중요하지만 메모리 캐시를 비울 때 비용이 너무 높아 귀중한 생산 시간이 줄어듭니다.

    투기적 실행을 사용하는 공격에는 비투기적 실행이 따르지 않을 경로를 추측하도록 프로세서를 설득하는 것이 포함됩니다. 예를 들어, 커널 함수에는 코드가 배열의 끝을 넘어 액세스하는 것을 방지하는 제한 검사가 포함될 수 있으며 이로 인해 오류가 반환될 수 있습니다. Spectre 취약점을 사용하는 공격은 코드가 액세스하지 않도록 특별히 작성된 데이터에 액세스하여 추측 방식으로 해당 검사를 건너뜁니다. 오류 반환은 부적절한 일이 발생하고 있다는 단서이지만 그때쯤이면 피해가 발생합니다.

    Linux 서버가 Spectre CPU 버그에 취약한지 확인하는 방법

    Spectre & Meltdown Checker는 다음 Intel/AMD/ARM 및 기타 CPU의 버그를 확인하는 셸 스크립트입니다.

    • CVE-2017-5753: 경계 검사 우회(Spectre Variant 1). 결과 코드의 적절한 위치에 LFENCE opcode를 도입하는 수정된 컴파일러로 소프트웨어 및 커널을 다시 컴파일해야 합니다. 완화의 성능 영향은 무시할 수 있습니다.\n
    • CVE-2017-5715: 분기 대상 주입(Spectre Variant 2). 완화의 성능 영향은 CPU에 따라 다릅니다.\n

    • CVE-2017-5754: 악성 데이터 캐시 로드(멜트다운). PTI/KPTI 패치로 업데이트된 커널 버전을 설치해야 합니다. 커널 업데이트로 충분합니다. 완화의 성능 영향은 낮음에서 중간 정도입니다.\n

    spectre-meltdown-checker.sh는 Linux 커널(설치)이 3가지 "투기적 실행\ CVE에 대해 취약한지 확인하는 간단한 셸 스크립트입니다.

    설치

    스크립트는 루트 사용자로 실행해야 합니다. 아래에서 소스 코드를 볼 수 있습니다. wget 명령 또는 curl 명령을 사용하여 Linux 상자에서 소스 코드를 가져옵니다.

    $ cd /tmp/
    $ wget https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh

    또는

    $ git clone https://github.com/speed47/spectre-meltdown-checker.git

    샘플 출력:

    spectre-meltdown-checker로 복제...

    원격: 객체 계산: 155, 완료.

    원격: 개체 압축: 100%(20/20), 완료.

    원격: 총 155개(델타 18), 재사용된 21개(델타 10), 팩 재사용된 125개

    개체 수신: 100%(155/155), 49.78KiB | 145.00 KiB/s, 완료.

    델타 해결: 100%(88/88), 완료.

    Spectre 및 Meltdown 취약점에 대해 Linux를 확인하는 방법

    sudo 명령 또는 su 명령을 사용하여 루트 사용자로 스크립트를 실행합니다.

    $ sudo sh spectre-meltdown-checker.sh

    Ubuntu Linux 데스크톱의 샘플 출력:

    Meltdown/Spectre v1이 커널로 패치된 CentOS 7.x 서버의 또 다른 출력:

    $ sudo sh spectre-meltdown-checker.sh

    Linux에서 인텔 마이크로코드 펌웨어를 설치/업데이트하는 방법은 무엇입니까?

    마이크로코드는 Intel이나 AMD에서 제공하는 CPU 펌웨어일 뿐입니다. Linux 커널은 부팅 시 BIOS 업데이트 없이 CPU의 펌웨어를 업데이트할 수 있습니다. 프로세서 마이크로코드는 RAM에 저장되며 부팅할 때마다 커널이 마이크로코드를 업데이트합니다. Intel/AMD의 이러한 마이크로코드 업데이트는 CPU 버그를 방지하기 위해 버그를 수정하거나 정오표를 적용하는 데 필요했습니다. 이 페이지는 Linux에서 Intel이 제공하는 패키지 관리자 또는 프로세서 마이크로코드 업데이트를 사용하여 AMD 또는 Intel 마이크로코드 업데이트를 설치하는 방법을 보여줍니다.

    마이크로코드의 현재 상태를 확인하는 방법

    루트 사용자로 다음 명령을 실행합니다.

    # dmesg | grep microcode

    샘플 출력:

    패키지 관리자를 사용하여 Linux에 Intel 마이크로코드 펌웨어를 설치하는 방법

    x86/amd64용 CPU 마이크로코드 업데이트를 변환 및 배포하는 도구는 Linux와 함께 제공됩니다. Linux에 AMD 또는 Intel 마이크로코드 펌웨어를 설치하는 절차는 다음과 같습니다.

    1. 터미널 앱 열기

    1. Debian/Ubuntu Linux 사용자 유형: sudo apt install intel-microcode\n

    1. CentOS/RHEL Linux 사용자 유형: sudo yum install microcode_ctl\n

    널리 사용되는 Linux 배포판의 패키지 이름은 다음과 같습니다.

    • microcode_ctl 및 linux-firmware – CentOS/RHEL 마이크로코드 업데이트 패키지

    • intel-microcode – Intel CPUS용 Debian/Ubuntu 및 클론 마이크로코드 업데이트 패키지
    • amd64-microcode – AMD CPU용 Debian/Ubuntu 및 클론 마이크로코드 펌웨어
    • linux-firmware – AMD CPU용 Arch Linux 마이크로코드 펌웨어(기본적으로 설치되며 별도의 조치가 필요하지 않음)\n
    • intel-ucode – Intel CPU용 Arch Linux 마이크로코드 펌웨어
    • microcode_ctl, linux-firmware 및 ucode-intel – Suse/OpenSUSE Linux 마이크로코드 업데이트 패키지

    경고: 경우에 따라 마이크로코드 업데이트로 인해 서버가 중단되거나 부팅 시 자동으로 재설정되는 등의 부팅 문제가 발생할 수 있습니다. 자신의 책임하에 수행하십시오.

    Intel CPU용 Debian/Ubuntu Linux에서 다음 apt command/apt-get command를 입력합니다.

    $ sudo apt-get install intel-microcode

    샘플 출력:

    마이크로코드 업데이트를 활성화하려면 상자를 재부팅해야 합니다.

    $ sudo reboot

    재부팅 후 확인:

    # dmesg | grep 'microcode'

    RHEL/CentOS를 사용하는 경우 yum 명령을 사용하여 다음 두 패키지를 설치하거나 업데이트해 보십시오.

    $ sudo yum install linux-firmware microcode_ctl
    $ sudo reboot
    $ sudo dmesg | grep 'microcode'

    인텔 사이트에서 다운로드한 마이크로코드를 업데이트/설치하는 방법은 무엇입니까?

    벤더가 권장하는 경우에만 다음 방법을 사용하십시오. 그렇지 않으면 위에서 설명한 대로 Linux 패키지를 고수하십시오. 대부분의 Linux 배포판 관리자는 패키지 관리자를 통해 마이크로코드를 업데이트합니다. 패키지 관리자 방법은 많은 사용자가 테스트한 것처럼 안전합니다.

    Linux(20180108 릴리스)용 인텔 프로세서 마이크로코드 블롭을 설치하는 방법은 무엇입니까?

    최신 마이크로코드 펌웨어를 받으려면 AMD 또는 Intel 사이트를 방문하십시오. 먼저 tar 명령을 사용하여 압축을 풉니다.

    $ mkdir firmware
    $ cd firmware
    $ tar xvf ~/path/to/file/microcode-20180108.tgz
    $ ls –l

    샘플 출력:

    /sys/devices/system/cpu/microcode/reload가 종료되는지 확인하십시오.

    $ ls -l /sys/devices/system/cpu/microcode/reload

    cp 명령을 사용하여 intel-ucode에서 /lib/firmware/intel-ucode/로 모든 파일을 복사해야 합니다.

    $ sudo cp -v intel-ucode/* /lib/firmware/intel-ucode/

    intel-ucode 디렉토리를 /lib/firmware/에 복사했습니다. 마이크로코드 파일을 다시 로드하려면 다시 로드 인터페이스를 1로 작성하십시오.

    # echo 1 > /sys/devices/system/cpu/microcode/reload

    다음에 커널을 통해 로드되도록 기존 initramfs를 업데이트합니다.

    $ sudo update-initramfs -u
    $ sudo reboot

    마이크로코드가 부팅 시 업데이트되었는지 또는 echo 명령으로 다시 로드되었는지 확인:

    # dmesg | grep microcode

    그게 전부입니다. 인텔 CPU용 펌웨어를 업데이트했습니다.