윈디하나의 누리사랑방. 이런 저런 얘기

글쓴시간
분류 기술,IT/서버
ZombieLoad(Microarchitectural Data Sampling)

예측실행(Speculative execution) 를 데이터를 읽어올 수 있는 보안문제가 발견되었네요. 2019년 5월에 발견된거니 꽤 최근의 일입니다. 에혀.

예전에 CPU의 예측실행, 예측분기, 비순차적실행 기능을 추가해서 성능을 향상시켰는데, 이게 되려 보안적으로는 발목을 잡나보네요. 어직 Meltdown, Spectre 도 제대로 해결이 안되었는데요.
글쓴시간
분류 기술,IT/서버
Foreshadow(L1 Terminal Fault)

사용자 삽입 이미지
Intel 의 SGX (Software Guard Extensions) 를 이용해 L1 캐시상의 데이터를 읽을 수 있는 문제가 발견되었네요. OOE (Out-of-Order Execution) 를 이용하고 Side Effect 를 사용해 읽어냅니다. 어떻게 보면 Meltdown 나 Spectre 와 비슷합니다. 이거 L1 캐시의 보안성에 의문이 생기네요. 아예 구조를 바꾸지 않는 이상 계속 발견될 것 같은 느낌이네요. 머 L1 캐시를 임의로 읽을 수 있으면 말 다한거죠.


보안전문가들 사이에서는 Foreshadow, 인텔은 L1 Terminal Fault (=결함)이라고 부릅니다.


그나마 다행인건 상당히 공격하기 어렵다고 하네요.
글쓴시간
분류 기술,IT/서버
Row Hammer, RAMBleed
잘 모르고 지나갔습니다만, 이런 문제가 있었네요. "Row Hammer" 취약점은 특정 메모리영역의 데이터를 임의로 변경할 수 있는 취약점이고, RAMBleed 취약점은 특정 메모리 영역의 데이터를 읽을 수 있는 취약점입니다.

DDR3 메모리에 대해 Row Hammer 취약점이 발견되어서, DDR4 의 개발에도 영향을 미쳤다고 하는데요, DDR4 에도 Row Hammer 의 변형된 공격에는 취약하다고 합니다. 이 기능은 메모리의 ECC 기능에 의해 무력화될 수 있다고 생각되었습니다만, 최근에는 이것도 무력화시킨다고 하네요. 해결방안은 메모리 암호화 뿐이라고 합니다. 최신 CPU 에서나 지원 되고 활성화 되며 OS 에서도 이제야 쓸까 말까 하는 기능입니다.

RAMBleed 는 Row Hammer 를 응용해서 Site Effect 로 특정 메모리의 값을 유추해낼 수 있는 취약점입니다. 어떻게 보면 HeardBleed 와 비슷하네요.

메모리의 구조상 하나의 ROW 로 여러개의 데이터 비트를 관리하게 되는데요, Row Hammer, RAMBleed 는 이걸 이용한다고 하네요. http://windy.luru.net/1074 에 간단하게 언급되어있습니다.
글쓴시간
분류 기술,IT/서버
하드디스크(HDD) 선택

사용자 삽입 이미지

시게이트의 고성능 데스크탑용 디스크인 BarraCuda Pro



※ 하드디스크(HDD)를 고르다보면 데스크톱용, 노트북용, 서버용(NAS, 감시, 엔터프라이즈) 등등 용도에 따라 여러가지로 나뉘어 있는걸 알 수 있다. 각각의 용도에 따라 다른점은 아래와 같다.

- 가격대를 보면 엔터프라이즈용이 가장 비싸고, 감시나 NAS 용 하드디스크 역시 고가에 형성되어있다. 데스크톱용이 가장 싸다.

- 크기로만 보면 데스크톱과 서버용이 3.5인치 규격(101.6 mm × 25.4 mm × 146 mm)이고, 노트북용이 2.5 인치 규격(69.85 mm × 7~15 mm × 100 mm)을 사용한다.

- HDD 는 플래터라는 회전하는 금속 원반 위를, 헤드가 움직여서 자기력을 이용해 금속 원반 상의 한 점의 극성을 변경하면서 데이터를 쓴다. 읽는건 헤드를 움직여 금속원반의 극성을 알아내는 방식이다. 플래터와 헤드는 접촉되어있지 않다.

- 금속 원반을 회전시키기 위해 모터가 장치되어있고 이 "모터"때문에 HDD가 PC안의 다른 전자기기와는 다른 기계적인 특성을 가진다.

- 성능은 서버용 하드디스크 중에 엔터프라이즈용이 가장 좋고 데스크톱용, 노트북용 순이다. 감시용은 성능이 낮다.

※ 좀더 기술적인 이야기를 하자면 아래와 같은 차이점이 있다.

- 첫번째는 진동과 충격에 대한 대비가 다르다. 기본적으로 5400 ~ 7200RPM, 엔트프라이즈급은 10000RPM 이 넘기 때문에, 이정도로 고속 회전하는 금속원반을 잘 잡아서 진동이 덜 일어나게 하는 것이 매우 중요하다. 데스크탑용은 플래터가 HDD하단에 마운트되어있고 NAS용이나 엔터프라이즈급은 하단과 상부에 각각 붙어있다. 따라서 서버용이 더 안정적이다. 서버용은 좁은 공간에 하드디스크를 수십/수백개를 달아놓기 때문에 서로서로 진동을 발생시키고 이게 각각의 HDD에 영향을 받기 때문에 진동을 발생하지 않도록 하고 발생되어도 HDD를 보호하기 위한 장치가 잘 되어있다. 또한 사람이 손으로 툭 치는 정도의 충격도 하드디스크에 그대로 전달되면 하드디스크 망가진다. 그래서 기본적인 충격 보호 장치는 모든 HDD에 달려있지만, 서버용은 이걸 더 정교하게 장치했다. 충격 센서까지 달려있다.

- 두번째는 읽기/쓰기 알고리즘이 다르다. 예를 들어 CCTV는 순차적인 쓰기가 가장 많이 발생하기 때문에 이에 대한 최적화가 되어있다.

- 세번째는 전원 관리 알고리즘이 다르다. 데스크탑이나 노트북의 경우 유휴기간에는 전원을 끄지만, 서버급은 유휴기간에는 RPM을 줄여 전력소비를 줄인다. CCTV용은 페쇄된 외부환경에 노출되기 때문에 저발열, 저전력에 특화되어있다.

- 네번째는 이동성이 다르다. 노트북용 HDD는 휴대를 전제로 하기 때문에 가장 충격에 대한 대비가 잘되어있다.

- 다섯번째는 수명이 다르다. 워크로드(WorkLoad)라 부르는데 읽고 쓸 수 있는 용량의 기준이 데스크탑용과 서버용이 배이상 차이난다.

--> 쉽게 말하자면 HDD 는 정말정말 용도에 맞게 써야 된다는 거다. 비싸다고 싼거 쓰지 말자.

※ 원래 데스크탑-노트북용과 서버용으로 나뉘어있던게 서버용이 좀 더 세분화되었다.

-> 용도가 분류되어있는 하드디스크에서, 서로 같은건 플래터와 헤드뿐이다. 나머지를 구성하고 있는 부품은 모두 다르다. 필자는 충분히 비용을 지불할만한 가치가 있다고 생각한다. NAS 장비에 엔터프라이즈급 HDD를 쓰는게 좋지만, 비용이 문제라면 NAS용 HDD라도 쓰자.

글쓴시간
분류 기술,IT/서버
TLS 1.3

TLS 1.3이 발표되었습니다. 발표된지는 꽤 되었는데, 제 사이트에서 적용시킨 다음에 이 내용을 쓰려고 좀 기다렸네요.

사용자 삽입 이미지

TLS 1.3 으로 접속된 windy.luru.net



TLS 1.3 의 주요 특징은 아래와 같습니다.

- 더 빨라짐: 핸드쉐이크를 개선해서 기존대비 더 빨라졌습니다. TLS 1.2 에서는 서버와 클라이언트 간에 6번 왔다 가야 하는데 반해, TLS 1.3에서는 4번으로 줄었습니다. 그래서 1/3만큼 빨라질걸로 예상합니다.

- 보안성 향상: 더 향상된 암호화 알고리즘(ChaCha20, Poly1305, Ed25519, x25519)을 사용할 수 있게 됩니다. 또한 기존에 취약했던 암호화 알고리즘을 더이상 사용하지 않도록 했습니다.

2018년 10월 이후 릴리즈 되는 브라우저들은 (즉 현재 최신 브라우저들은) TLS 1.3을 공식 지원합니다. Chrome 70, Firefox 63부터입니다. 하지만 Chrome 70은 기본값으로 사용하지는 않습니다. 아직 Edge 는 지원 안하는데 조만간 지원할걸로 예상합니다.

사용자 삽입 이미지

Chrome TLS 1.3 세팅. chrome://flags 에서 TLS1.3 세팅을 Enabled(Final)으로 변경해야 한다.

글쓴시간
분류 기술,IT/서버
윈도 7의 wuauserv 서비스가 CPU를 100% 차지하는 현상

※ 어느날 갑자기 svchost.exe 라는 프로세스가 코어 1개를 100% 차지하면서 시스템 전체 CPU 사용량이 늘어나고 PC가 느려지는 현상이 발생했다. 그래서 살펴본 결과 wuauserv 서비스의 소행인걸 알아냈다.

※ wuauserv 는 "윈도 업데이트" 서비스다. 원래 가끔씩 CPU를 많이 차지하면서 뭔가가 실행되고 디스크를 많이 읽는 현상은 당연한거다. 하지만 필자의 경우는 수시간째 계속 그랬다.

사용자 삽입 이미지

작업관리자 상황. 오른쪽 아래의 "리소스 모니터"를 클릭해 리소스 모니터를 실행하자.



※ 당장 느려지는게 문제라면 해당 서비스를 정지시키면 된다. 리소스 모니터에서 wuauserv를 선택하고 오른쪽 버튼을 눌러 "서비스 중지"를 클릭하면 된다.

사용자 삽입 이미지

리소스 모니터에서 wuauserv 를 찾았다.



※ 근본적으로 해결하려면 패치를 하면 된다.

https://support.microsoft.com/en-us/kb/3172605 에서 "Windows6.1-KB3172605-x64.msu" 파일(윈도7 x64기준)을 다운받아 업데이트하면 된다.

※ 아예 윈도 10으로 업그레이드 해도 되지만 wuauserv 때문에 업그레이드가 많이 느릴 것이다. 업그레이드 전에 패치를 먼저 하자.
글쓴시간
분류 기술,IT/서버
업타임(Uptime)

별 생각없이 서버들어가서 uptime 이라는 명령을 쳐보았다.

두둥

사용자 삽입 이미지

2091 일이라니. 뭔가 잘못되었다. 아마 이 서버의 uptime 은 30일 조금 안될꺼다. 근데 이게 왜 바뀐건지는 잘 모르겠음. 버그인감.

참고로 uptime 이란건 어떤 장치의 운영 시간, 작동 시간을 말한다. 주로 컴퓨터의 이야기. 즉 "업타임이 2091일"이라는건 컴퓨터를 켜고 운영체제로 부팅 한 후, 5.7년동안 한번도 안 껐다는 의미다. Uptime 은 틱카운트를 세기 때문에 수정/조작 하는게 불가능한걸로 아는데, 내가 모르는 뭔가가 더 있는건감.

서버 관리 처음할떄에는 왠지 업타임에 신경썼었다. 가급적 안끄는게 좋은건 맞으니깐. 실제 서비스 중인 서버로 1800일은 넘겨봤다. 약 5년동안 한번도 안 껐다는 이야기. 엔터프라이즈급 솔라리스 서버였는데, 꺼야할 일이 없었다. 서버도 굉장히 안정적으로 돌아가고. 어쩔 수 없이 끈건 이중화되어있는 스토리지 컨트롤러중 한쪽 노드에 장애가 발생해 결국 하드웨어를 교체해야 했기 때문이다. PnP 지원되긴 했지만 만약을 위해 껐다 켰다.
글쓴시간
분류 기술,IT/서버
HTTP/2

사용자 삽입 이미지


- 2015.02.17에 HTTP/2 프로토콜이 승인되었습니다. RFC 등록이 남아있긴 하지만 이건 시간문제일 뿐이구요.

- HTTP란 웹의 근간을 이루는 프로토콜의 이름입니다. 웹 주소(예를 들어 http://windy.luru.net) 첫머리에 나오는 http 가 바로 그겁니다.

- 이번 HTTP/2 프로토콜은 현재 사용하고 있는 HTT/1.1 의 뒤를 잇는 프로토콜입니다. 1999년 발표된 프로토콜로 오래되긴 했지만 큰 문제 없이 쓰다가, 어느 시점부터 성능에 대한 불만이 생기기 시작합니다. 특히 https 가 대중화 되면서 더욱 가중되었죠. 뭔가를 바꾸면 훨씬 빨라질 수 있는데 그걸 표준 규격 지키느라고 못바꾸니까요.

- 답답해하던 구글은 결국 SPDY라는 프로토콜을 제안합니다. SPDY는 몇차례의 개정을 거치다가 SPDY 4.0 즉 HTTP/2 로 결실을 보게된겁니다.

- HTTP/2 의 핵심은 '다중화'입니다. '요청-응답-요청-응답'의 순서를 반드시 지켜야 할 필요 없게 된거죠. 이렇게 되면 서버에서 'I/O다중화'를 적극적으로 사용해 괄목할만한 성능 향상을 이뤄낼 수 있게 됩니다. 성능 향상정도는 특히 https 에서 두드러집니다.

- 현재 Chrome 40과 Firefox 36에서 HTTP/2를 지원하고 있습니다. 곧 나올 Windows 10의 IE11과 IIS에서도 지원됩니다. 문제는 오픈소스 웹 서버들인데 Nginx, Apache, lighttpd 가 지원을 못합니다. 특히 가장 널리 사용되는 서버인 아파치가 아직 지원을 못하기 때문에 범용적으로 사용하질 못하고 있습니다. 물론 이런 브라우저들도 지원계획은 있는데 아직 구현하지 못한것일 뿐 지원은 당연한 사항입니다. 어서빨리 지원되었으면 좋겠네요.

----

2015.10.13 업데이트

Apache 2.4.17 부터 mod_http2 를 통해서 http2 지원하네요. libnghttp2  를 사용하기 때문에 같이 설치해줘야 합니다.
글쓴시간
분류 기술,IT/서버
CVE-2015-0235 GHOST

※ GLIBC 에서 버그가 발견되어 긴급한 패치를 요한다고 하네요. Qualys라는 보안업체가 발견했습니다. 고스트버그라고 이름 붙였네요.

사용자 삽입 이미지

CVE-2015-0235 GHOST



※ glibc 는 GNU 의 C라이브러리입니다. C라이브러리는 여러가지가 있는데, 이중 FSF라는 단체에서 GNU이름으로 배포하는 C라이브러리라는 의미입니다. C라이브러리는 "여러 프로그램에서 공통적으로 사용하는 파일"로 보시면 됩니다.

※ C라이브러리는 C라는 언어로 만든 프로그램을 실행할 때 반드시 필요한데요, 유닉스/리눅스가 C로 만들어져 있기 때문에 유닉스/리눅스에서 실행되는 모든 프로그램은 C라이브러리를 필요로 합니다. 리눅스는 거의 대부분 glibc 기반이기 때문에 대부분의 리눅스가 영향 받게 됩니다.

※ glibc에 버그가 있다고 합니다. __nss_hostname_digits_dots()라는 내부 함수에 있다는데, 이 내부 함수는 gethostbyname(), gethostbyname2()에서 사용한다고 합니다. gethostbyname() 은 조금 과장해서 모든 통신 프로그램에서 사용하는 함수라 이 문제는 꽤 치명적인것 같네요. 2000년 하반기에 배포된 glibc 2.2 부터 문제가 있었다고 하고, 분석글에서는 메일을 사용한 예를 들어 이렇게 사용할 가능성에 대해 언급하고 있습니다. 제대로 안 읽어보긴 했습니다만, 임의의 코드를 실행할 수 있을 것으로 생각합니다.

※ MITRE에 CVE-2015-0235로 등록되어있으며, 패치는 바로 배포되었습니다. (GHOST 버그의 패치는 2013년에 glibc에 적용되어있었습니다만, 리눅스 배포판에는 glibc 의 최신버전을 사용하는 경우가 없죠. 2013년 적용 당시에도 이것이 보안 위협이 될 것으로 인지하지는 못했다고 합니다) 현재 작동하고 있는 거의 대부분의 리눅스가 영향 받을 것이고, 악의적인 해커는 이를 쉽게 응용할 수 있기 때문에 바로 패치가 필요해 보입니다.

※ 작년에 있었던 하트블리드와는 비교되지 않을 정도의 중대한 사건이 아닐까 하네요. 문제는 이미 지원이 종료된 리눅스를 사용하고 있는 서버는 어떻게 할지가 관건이네요. 운영체제 업그레이드만이 답이려나요.

----

MITRE CVE-2015-0235: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-0235
레드햇 보안사이트 고스트: https://access.redhat.com/security/cve/CVE-2015-0235
고스트 버그 분석: https://www.qualys.com/research/security-advisories/GHOST-CVE-2015-0235.txt
하드블리드: http://windy.luru.net/1700
글쓴시간
분류 기술,IT/서버
하트블리드 버그(Heartbleed Bug)

사용자 삽입 이미지

하트블리드


최근에 공개된 OpenSSL의 보안 버그입니다. 2014.04.07에 패치되었습니다. 제 웹 서버는 별 생각없이 패치했습니다만, 이거 의외로 심각한거 같네요. 전 보안 위험은 낮게 봅니다만 OpenSSL이 안쓰이는 곳이 없을 정도로 대중화된 라이브러리라 아마 대부분의 기기가 영향 받을것으로 보입니다.

OpenSSL에서 TLS/DTLS 규격의 하나인 heartbeat 를 구현하는 코드에서, 메모리 관련 경계 검사 오류(경계 확인을 하지 않음)가 존재하고, 공격자는 이를 통해 서버 메모리상의 임의의 주소에 있는 데이터를 읽을 수 있다고 합니다. 임의의 주소에 민감한 정보가 남아있으면 위험하겠죠. 하지만 아직 스크립트 키드들을 위한 툴이 발견된건 아닌거 같습니다. '하트비트' 버그를 이용한거기 때문에 일종의 패러디로 '하트블리드'로 이름 붙였네요.

OpenSSL 1.0.1 ~ OpenSSL 1.0.1f 까지 영향 받습니다. OpenSSL 1.0.1g를 받아 설치하거나 업그레이드가 불가능한 경우 하트비트 기능을 끄고 설치하라네요.

이 버그에 대한 전용 홈페이지까지 나와있는 상태입니다. CVE-2014-0160으로 등록되어있습니다.

쉽게 말하면, 조만간 소프트웨어들 업데이트 있을테니 묻지 말고 패치하라는 겁니다. 특히 웹서비스 운영하시는 분들요. 시놀로지라는 NAS 업체도 자사의 DSM 솔루션을 이미 패치했네요.

----

2014.04.16 하트 블리드를 사용한 해킹 사례가 있네요. 하지 않으신 분들은 어서 패치해야 할듯 합니다.

http://www.zdnet.com/heartbleed-used-for-canada-revenue-agency-breach-7000028425/

----

2014.04.22 이 버그는 서버뿐만 아니라 클라이언트도 영향 받습니다. 공격자가 가짜 서버를 만들어 클라이언트의 메모리에 있는 데이터를 빼낼 수 있습니다. 영향받는 소프트웨어 중에 안드로이드 운영체제도 있네요.

----

하트블리드 버그: http://heartbleed.com/
소스 변경 내역: http://git.openssl.org/gitweb/?p=openssl.git;a=commit;h=96db9023b881d7cd9f379b0c154650d6c108e9a3
시놀로지 하트블리드 보안 패치: http://www.synology.com/ko-kr/support/security_hotfix_dsm_5_0_4458_update_2