제퍼넷 로고

S3 Ep145: 이름이 인상적인 버그!

시간

한 주, BWAINS 두 개

Apple 패치 두 개의 제로데이, 하나는 두 번째입니다. 30년 된 암호 체계는 어떻게 금이 간. 당신의 모든 비밀은 젠블리드. 의심스러운 PC/Mac 광고를 기억합니다.

아래에 오디오 플레이어가 없습니까? 듣다 직접 사운드클라우드에서.

Doug Aamoth와 Paul Ducklin과 함께. 인트로 및 아웃트로 음악 에디스 머지.

당신은 우리를들을 수 있습니다 사운드 클라우드, Apple Podcasts, Google 포드 캐스트, 스포티 파이 그리고 좋은 팟캐스트가 있는 곳이면 어디든지. 아니면 그냥 버리세요 RSS 피드의 URL 좋아하는 팟캐쳐에.


대본 읽기

더글라스.  Apple 패치, 보안 대 성능, 경찰 무선 해킹.

Naked Security 팟캐스트에서 이 모든 것.

[뮤지컬 모뎀]

팟캐스트에 오신 것을 환영합니다.

저는 Doug Aamoth입니다. 그는 폴 더클린이다.

폴, 무슨 일이야, 친구?


오리.  XNUMX월입니다, 더글라스!


더글라스.  음, 우리의 XNUMX월에 대해 이야기해 봅시다. 이번 주 기술 역사 세그먼트.

28년 1993월 1.0일에 루아 프로그래밍 언어.

Little Language That could에 대해 들어본 적이 없더라도 혜택을 받았을 것입니다.

Lua는 Roblox, World of Warcraft, Angry Birds, Venmo 및 Adobe의 웹 앱과 같은 앱에서 사용되며 Wireshark, Nmap, Neovim 및 훨씬 더 널리 퍼진 스크립팅 가능한 앱은 말할 것도 없습니다.

Paul, 내가 착각하지 않았다면 Naked Security 기사 중 일부에서 Lua를 사용합니다.


오리.  저는 Lua의 열렬한 팬입니다, Douglas.

나는 내 자신의 스크립팅을 위해 그것을 상당히 광범위하게 사용합니다.

그것은 내가 "간단하고 비열한 전투 기계"라고 부르는 것을 좋아합니다.

몇 가지 멋진 특징이 있습니다. 배우기 매우 쉬운 언어입니다. 읽기 매우 쉬운 언어입니다. 그러나 기능적 스타일로 프로그램을 작성할 수도 있습니다.

(기술적으로 말하자면, 함수는 언어의 일급 개체이므로 C와 같은 보다 전통적인 언어로는 할 수 없는 모든 종류의 깔끔한 작업을 수행할 수 있습니다.)

그리고 나는 종종 Naked Security 기사에서 의사 코드가 될 것에 대해 그것을 사용합니다.

(A) 코드를 복사하여 붙여넣고 원하는 경우 직접 사용해 볼 수 있고 (B) 프로그래밍에 익숙하지 않은 사람도 실제로 놀라울 정도로 가독성이 높기 때문입니다.

Lua는 브라질 리우데자네이루 출신입니다.
Lua라는 단어는 포르투갈어로 '달'을 의미합니다.

더글라스.  아름다운!

좋아, 코드의 주제에 머물자.

우리는 지금까지 Apple의 두 번째 Rapid Response 패치에 대해 여러 번 이야기했습니다.

거기에 있었다, 거기에 없었다, 무슨 일이야?

글쎄, 그 패치는 이제 전체 업데이트, 그리고 실제로 두 번째 제로데이를 패치한 Paul.

Apple은 최신 "Rapid Response" 스파이웨어 패치를 모든 사람에게 배송하고 두 번째 제로 데이를 수정합니다.


오리.  예.

당신이 그것을 기억한다면 신속한 대응, 네가 말했듯이…

…버전 업데이트가 있었습니다. (a), 이것이 첫 번째 항목을 나타내는 방법인데 거기에 문제가 있었습니다(User-Agent 문자열을 제대로 구문 분석하지 않는 일부 웹 사이트를 탐색함).

그래서 Apple은 "오, 걱정하지 마세요. (b) 약간의."

그리고 다음으로 우리가 본 것은 버전이었습니다. (c).

귀하의 말이 맞습니다. 이러한 Rapid Response의 아이디어는 궁극적으로 완전한 새 버전 번호를 얻을 수 있는 전체 업그레이드에 포함된다는 것입니다.

따라서 Rapid Response가 두렵더라도 빨리는 아니더라도 나중에 수정 사항을 받을 수 있습니다.

그리고 WebKit의 제로데이(Rapid-Response 패치)는 이제 커널 수준의 구멍에 대한 제로데이 수정과 함께 제공됩니다.

그리고 몇 가지(어떻게 표현해야 할까요?) "흥미로운 우연"이 있습니다. 그것을 비교 Apple의 마지막 주요 보안 업그레이드는 2023년 XNUMX월로 거슬러 올라갑니다.

즉, Rapid Response 부분에서 수정된 제로데이는 WebKit에 있었고 "익명의 연구원"에 기인했습니다.

그리고 현재 커널에 패치된 제로데이는 러시아의 안티바이러스 회사인 Kaspersky가 담당한 것으로 유명합니다.

따라서 스마트 머니는 Apple이 보안 게시판에서 이를 명시적으로 언급하지 않았지만 이것이 소위 말하는 것과 관련된 또 다른 수정이라고 말합니다. 삼각 측량 트로이 목마.

즉, 최소한 일부 표적 공격에 사용된 실제 스파이웨어입니다.

이는 Rapid Response를 더욱 이해하기 쉽게 만듭니다(Apple이 신속하게 출시하기를 원했던 이유). 왜냐하면 브라우저가 처음부터 휴대전화를 속이는 데 사용되는 것을 중지하기 때문입니다.

그리고 이 업그레이드를 매우 중요하게 만듭니다. 사기꾼이 브라우저를 손상시킨 후 사용할 것이라고 상상하는 구멍 뒤의 구멍을 닫는 것을 의미하기 때문입니다.

그들은 본질적으로 완전한 제어를 제공하는 이 두 번째 취약점에 연결될 것입니다.


더글라스.  자, 그럼 30주 전에서 XNUMX년 전으로 가보겠습니다…

… 그리고 이것은 그러한 재미있는 이야기.

비공개 계약 뒤에 숨겨진 암호화 비밀을 유지하려고 시도하지 않는 것에 대한 경고 이야기입니다. [NDA]

새로운 BWAIN으로 완성하세요, Paul.

새로운 BWAIN이 있습니다!

경찰 라디오 해킹: 30년 된 암호 결함이 주목받다


오리.  "인상적인 이름을 가진 버그."

알고리즘이 제대로 작동하려면 비밀로 유지해야 하는 경우…

... 뇌물을 받거나, 실수를 하거나, 제품을 리버스 엔지니어링하는 데 한 사람만 있으면 전체가 무너집니다.

이것이 바로 이 TETRA 무선 시스템이 한 일입니다.

비표준, 독점, 영업 비밀 암호화 알고리즘에 의존했기 때문에 수년 동안 실제로 많은 조사를 받지 못했습니다.

테트라는 지상파 트렁크 라디오.

이것은 이동 전화와 비슷하지만 법 집행 기관 및 최초 대응자와 같은 사람들에게 몇 가지 중요한 이점이 있습니다. 즉, 범위가 더 길어 기지국이 훨씬 적게 필요합니다.

그리고 처음부터 일대일 및 일대다 통신으로 설계되었으므로 긴급 상황에 대응하기 위해 많은 사람들을 조정하려고 할 때 이상적입니다.

불행히도 2021년에야 네덜란드 연구원들이 발견한 몇 가지 결함이 있는 것으로 밝혀졌습니다.

그리고 그들은 Black Hat 2023을 시작으로 많은 회의에서 할 버그에 대한 세부 정보를 공개하기 위해 거의 XNUMX년을 참을성 있게 기다려 왔습니다.

그들이 2021년 말부터 패치를 준비하기 위해 공급업체와 협력하면서 이 정보에 앉아 있었기 때문에 그들이 지금 그것에 대해 큰 관심을 기울이고 싶어하는 이유를 이해할 수 있습니다.

사실, 그들이 얻은 버그 번호인 CVE는 모두 CVE-2022-xxxx이며, 이는 이러한 구멍에 대한 패치를 얻기 위해 극복해야 했던 시스템에 얼마나 많은 관성이 있는지를 나타냅니다.


더글라스.  그리고 우리의 BWAIN은 TETRA:BURST입니다.

이 구멍 중 일부에 대해 이야기합시다.


오리.  총 XNUMX개의 CVE가 있지만 "가르칠 수 있는 순간"이라고 생각하는 두 가지 주요 문제가 있습니다.

첫 번째는 CVE-2022-24401로, 핵심 합의라는 까다로운 문제를 다룹니다.

기지국과 누군가의 핸드셋이 이 특정 대화에 사용할 키에 어떻게 동의하여 다른 키와 확실하게 다른가요?

TETRA는 분명히 앞으로만 움직이는 현재 시간에 의존하여 이를 수행했습니다. (우리가 아는 한.)

문제는 데이터 인증이나 검증 단계가 없다는 것입니다.

핸드셋이 베이스 스테이션에 연결하고 타임스탬프를 받으면 "이것이 내가 신뢰하는 베이스 스테이션의 실제 타임스탬프입니까?"를 확인할 방법이 없습니다.

타임스탬프에 디지털 서명이 없었기 때문에 불량 기지국을 설정하고 *귀하의* 타임스탬프를 사용하여 대화하도록 속일 수 있었습니다.

즉, *당신이 어제 이미 가로채서 녹음한* 다른 사람의 대화에 대한 암호 키…

...오늘 누군가와 천진난만하게 대화를 나눌 수 있었습니다. 대화를 원했기 때문이 아니라 키스트림을 복구하고 싶었기 때문입니다.

그런 다음 해당 키 스트림을 사용할 수 있습니다. *어제 사용된 것과 동일하기 때문에* 가로챈 대화에 사용할 수 있습니다.

그리고 물론, 당신이 할 수 있는 또 다른 일은 다음 주 화요일에 무언가를 가로챌 수 있기를 원한다고 생각되면 다음 주에 대한 가짜 타임스탬프를 사용하여 *오늘* 당신과 대화하도록 누군가를 속일 수 있습니다.

그런 다음 나중에 해당 대화를 가로채면 오늘 대화에서 키 스트림을 얻었기 때문에 암호를 해독할 수 있습니다.


더글라스.  자, 이것이 첫 번째 버그입니다.

그리고 이야기의 교훈은 다음과 같습니다. 확인할 수 없는 데이터에 의존하지 마십시오.

두 번째 버그에서 이야기의 교훈은 다음과 같습니다. 백도어 또는 기타 고의적인 약점을 구축하지 마십시오.

그건 절대 안돼, 폴!


오리.  정말이야.

그 중 하나는 CVE 2022-24402입니다.

이제 미디어에서 이것이 정말 백도어로 간주되는지에 대한 논쟁이 있는 것을 보았습니다. 의도적으로 삽입되었고 NDA에 서명한 모든 사람이 그것이 거기에 있다는 것을 알고 있었기 때문입니다(또는 깨달았어야 했습니다).

하지만 이를 백도어라고 부르자. 일부 유형의 장치(다행히도 일반적으로 법 집행 기관이나 최초 대응자에게 판매되는 장치가 아니라 상업 조직에 판매되는 장치)의 운영자가 의도적으로 프로그래밍된 메커니즘이기 때문입니다.

...80비트 암호화 키를 사용하는 대신 "이봐, 여러분, 32비트 대신 80비트만 사용하세요."라고 말하는 마법의 버튼이 있는 특수 모드가 있습니다.

그리고 우리가 DES를 없앴다고 생각할 때, 데이터 암호화 표준, 밀레니엄이 시작될 무렵에는 56비트 키만 있었기 때문에 *2023년 현재*에 32비트 암호화 키가 실제로 얼마나 약한지 상상할 수 있습니다.

무차별 대입 공격을 수행하는 데 드는 시간과 재료 비용은 아마도 사소할 것입니다.

중간 수준의 노트북 두 대만 있으면 암호를 해독하고 싶은 모든 대화를 오후에 처리할 수 있다고 상상할 수 있습니다.


더글라스.  좋아, 아주 좋아.

마지막으로 중요한 것은…

… 2014년에 Heartbleed를 기억한다면 당황하지 마세요. 하지만 새로운 것이 있습니다. 젠블리드

Zenbleed: CPU 성능에 대한 탐구가 암호를 위험에 빠뜨릴 수 있는 방법


오리.  네, 금주의 BWAIN XNUMX위입니다. [웃음]


더글라스.  예, 또 다른 BWAIN입니다! [웃음]


오리.  Zenbleed라는 이름이 귀엽고("Zen"이라는 이름은 내가 아는 한 AMD의 Zen 2 프로세서 시리즈에 버그가 적용된다는 사실에서 유래했습니다.) Google Project Zero의 전설적인 버그 헌터 Tavis Ormandy는 프로세서 내부에서 일어나는 일에 관심을 기울이고 있습니다.

“Bleed” 공격… 기사에서 쓴 단어를 사용하여 설명하겠습니다.


접미사 "-bleed"는 공격자도 피해자도 실제로 제어할 수 없는 우연한 방식으로 데이터를 유출하는 취약점에 사용됩니다.


따라서 블리드 공격은 인터넷을 통해 뜨개질 바늘을 컴퓨터에 찔러넣고 “아하! 이제 저는 여러분이 sales.sql 나에게 업로드하십시오.”

그리고 다른 구멍에 뜨개질 바늘을 꽂고 "신용 카드 번호가 나타날 때까지 메모리 오프셋 12를 지켜보고 나중에 디스크에 저장하십시오."

다른 사람의 프로그램에서 새어 나오는 의사 난수 데이터를 얻을 뿐입니다.

볼 수 없어야 하는 임의의 항목을 얻을 수 있으며 원하는 경우 몇 분, 몇 시간, 며칠, 심지어 몇 주 동안 마음대로 수집할 수 있습니다.

그런 다음 도난당한 물건에 대해 빅 데이터 작업을 수행하고 그로부터 무엇을 얻을 수 있는지 확인할 수 있습니다.

이것이 Tavis Ormandy가 여기서 찾은 것입니다.

이것은 기본적으로 벡터 처리의 문제인데, Intel 및 AMD 프로세서가 일반적인 64비트 모드에서 작동하지 않고(예를 들어 두 개의 64비트 정수를 한 번에 추가할 수 있음) 256에서 작동할 수 있는 경우입니다. - 한 번에 데이터의 비트 청크.

이는 비밀번호 크래킹, 크립토마이닝, 이미지 처리, 모든 종류의 작업에 유용합니다.

프로세서 내부에 있는 완전히 별도의 명령어 세트입니다. 전체 별도의 내부 레지스터 세트; 매우 큰 성능 결과를 위해 이러한 매우 큰 숫자에 대해 수행할 수 있는 멋지고 정말 강력한 계산 세트입니다.

그것들이 버그가 없을 가능성은 무엇입니까?

그리고 그것이 바로 Tavis Ormandy가 찾던 것입니다.

그는 성능 저하를 피하기 위해 주로 사용되는 매우 특별한 명령을 발견했습니다.

...라는 마법의 명령이 있습니다. VZEROUPPER 이것은 CPU에 "이 멋진 256비트 레지스터를 사용했지만 더 이상 관심이 없기 때문에 나중을 위해 상태를 저장하는 것에 대해 걱정할 필요가 없습니다."라고 알려줍니다.

무엇을 추측?

모든 128비트 벡터 레지스터의 상위 256비트를 동시에 XNUMX으로 설정하는 이 마법 명령은 하나의 명령으로 모두 수행됩니다(여기에서 많은 복잡성이 있음을 알 수 있습니다)…

... 기본적으로 최근에 실행된 다른 프로세스나 스레드에서 데이터를 유출하는 경우가 있습니다.

이 명령을 올바른 방법으로 남용하고 Tavis Ormandy가 이 방법을 알아낸 경우, 자신만의 매직 벡터 명령을 수행하고 이 매우 멋진 기능을 사용합니다. VZEROUPPER 프로그램의 벡터 레지스터가 때때로 가져서는 안 되는 데이터 값으로 나타나기 시작합니다.

그리고 그 데이터 값은 무작위가 아닙니다.

그것들은 실제로 *다른 사람의 프로세스에서 나온* 16바이트(128비트) 데이터 청크입니다.

당신은 누구를 모릅니다.

당신은 이 악성 데이터가 때때로 유령 같은 모습을 하고 있다는 것을 알고 있습니다.

불행하게도 Taviso는 이 명령을 옳고 그름 방식으로 오용함으로써 실제로 CPU 코어당 초당 다른 사람의 프로세스에서 30KB의 가짜 유령 데이터를 추출할 수 있음을 발견했습니다.

그리고 그것은 매우 느린 데이터 속도처럼 들리지만(요즘 누가 인터넷 연결에서 초당 30KB를 원하겠습니까? – 아무도)…

... 다른 사람의 프로그램에서 임의의 16바이트 데이터 청크를 가져올 때 실제로는 코어당 하루에 약 3GB로 작동합니다.

다른 사람들의 웹 페이지가 조금 있을 것입니다. 사용자 이름이 있을 것입니다. 암호 데이터베이스가 있을 수 있습니다. 인증 토큰이 있을 수 있습니다.

여러분이 해야 할 일은 이 방대한 건초더미를 뒤져 재미있어 보이는 바늘을 찾는 것뿐입니다.

그리고 이것의 정말 나쁜 부분은 *당신과 같은 권한 수준에서 실행되는 다른 프로세스만이 아니라는 것입니다*.

따라서 "Doug"로 로그인한 경우 이 버그는 운영 체제 계정 "Doug"로 실행되는 다른 프로세스만 감시하지 않습니다.

Taviso 자신이 지적한 바와 같이:


다음과 같은 기본 작업 strlen, memcpystrcmp...


(이것들은 모든 프로그램이 텍스트 문자열의 길이를 찾고, 메모리를 복사하고, 텍스트의 두 항목을 비교하는 데 사용하는 표준 함수입니다.)


이러한 기본 작업은 벡터 레지스터를 사용하므로 이 기술을 효과적으로 사용하여 시스템 어디에서나 발생하는 작업을 감시할 수 있습니다!


그리고 그는 바로 거기에 느낌표를 붙였습니다.


다른 가상 머신, 샌드박스, 컨테이너, 프로세스 등에서 발생하는지 여부는 중요하지 않습니다.


나는 그가 실제로 거기에서도 두 번째 느낌표를 사용했다고 생각합니다.

즉, *모든 프로세스*, 운영 체제, 동일한 VM에 있는 다른 사용자, VM을 제어하는 ​​프로그램, 비밀번호를 매우 비공개로 처리해야 하는 샌드박스 등 어떤 것이든 가능합니다.

다른 사람들로부터 오는 16바이트 데이터 청크의 꾸준한 피드를 받고 있을 뿐이며, 앉아서 지켜보고 기다리기만 하면 됩니다.


더글라스.  따라서 마더보드 공급업체가 패치를 기다리는 시간이 짧습니다...

Mac을 사용하는 경우 ARM 기반 Mac과 Intel 기반 Mac은 있지만 AMD Mac은 없기 때문에 걱정할 필요가 없지만 AMD 프로세서를 사용하는 Windows 사용자와 특정 Linux 사용자는 어떻습니까?


오리.  Linux 배포판에는 자동으로 적용되는 펌웨어 마이크로코드 업데이트가 있을 수 있습니다.

그리고 본질적으로 문서화되지 않은(또는 기껏해야 문서화가 매우 빈약한) AMD 기능이 있습니다. 이 기능은 MSR로 알려진 것을 통해 칩에 제공할 수 있는 특수 명령입니다. 모델별 레지스터.

각각의 특정 칩 라운드에 대한 구성 설정 도구와 같습니다.

이 버그에 대해 칩을 면역화하는 것으로 보이는 설정이 있으므로 적용할 수 있습니다.

Linux 및 BSD에 대해 이 작업을 수행하는 명령이 있지만 불행히도 Windows에서 유사한 명령을 인식하지 못합니다.

Windows에서 모델별 CPU 레지스터[MSR]를 망칠 수 있지만 일반적으로 말해서 커널 드라이버가 필요합니다.

그리고 그것은 일반적으로 알려지지 않은 제XNUMX자로부터 가져와서 직접 컴파일하고 설치하고 드라이버 서명을 끄는 것을 의미합니다.

…그래서 절대적으로 필요한 경우에만 그렇게 하십시오.

Windows가 정말 절실하고 AMD Zen 2 프로세서가 있다면… (실험에 적합한 컴퓨터가 없기 때문에 시도하지 않았습니다.)


더글라스.  비용을 지불해야 합니다. [웃음]

이것은 업무와 관련된 것입니다!


오리.  아마 다운받아 설치하면 WinDbg ["윈드백"으로 발음], 마이크로소프트 디버거…

...로컬 커널 디버깅을 활성화하고, 자신의 커널에 연결하고, 모델별 레지스터[DRAMATIC VOICE]를 만지작거릴 수 있습니다.

그리고 물론 OpenBSD를 사용하고 있다면 제가 들은 바에 따르면 Theo [de Raadt]는 이렇게 말했습니다. 버그 작동을 중지시키는 이 특별한 비트를 켜고 있습니다. 성능을 희생하더라도 보안을 선호하기 때문에 OpenBSD에서 기본값으로 만들 것입니다.”

그러나 다른 모든 사람들은 문제가 해결될 때까지 기다리거나 약간의 마이크로 해킹을 직접 수행해야 합니다!


더글라스.  좋아, 아주 좋아.

우리는 이것을 주시하고 내 말을 기억할 것입니다.

그리고 오늘 우리 쇼에서 해가지기 시작하면 Facebook 독자 중 한 사람의 말을 들어 봅시다.

이것은 쇼의 상단에서 이야기한 Apple 이야기와 관련이 있습니다.

앤서니는 다음과 같이 씁니다.


예전에 Apple 사용자들이 Apple의 아키텍처가 어떻게 완벽하고 보안 패치가 필요하지 않은지에 대해 PC 사용자들에게 떠들던 때가 기억납니다.


Paul, 흥미로운 질문을 던집니다. 제 생각에 우리는 적어도 매년 이것을 다시 방문한다고 생각하기 때문입니다.

Apple이 너무 안전해서 보안 소프트웨어가 필요하지 않거나 해킹, 맬웨어 또는 그와 유사한 것에 대해 걱정할 필요가 없다고 말하는 사람들에게 우리는 무엇을 말해야 합니까?


오리.  글쎄요, 보통 우리는 크고 다정한 미소를 지으며 이렇게 말합니다. “이봐, 그 광고 기억하는 사람 있어? 저는 PC입니다/저는 Mac입니다. 저는 PC입니다/저는 Mac입니다. 어떻게 됐어?” [웃음]


더글라스.  잘했다!

그리고 글을 써주신 Anthony에게 대단히 감사합니다.

제출하고 싶은 흥미로운 이야기, 의견 또는 질문이 있으면 팟캐스트에서 읽고 싶습니다.

tips@sophos.com으로 이메일을 보내거나 당사 기사 중 하나에 댓글을 달거나 소셜(@nakedSecurity)에서 연락할 수 있습니다.

그것이 오늘의 쇼입니다. 들어주셔서 대단히 감사합니다.

Paul Ducklin의 경우, 저는 Doug Aamoth라고 합니다. 다음 시간까지...


양자 모두.  보안 유지!

[뮤지컬 모뎀]


spot_img

최신 인텔리전스

spot_img