지난 주에 우리는 다음과 같은 내용에 대해 글을 썼습니다. 메모리 관리 버그 이는 널리 사용되는 OpenSSL 암호화 라이브러리의 최신 보안 업데이트에서 수정되었습니다.
이러한 메모리 버그와 함께 우리는 더빙된 버그에 대해서도 보고했습니다. CVE-2022-4304: RSA 암호 해독에서 Oracle 타이밍.
이 버그에서는 서버에서 동일한 암호화된 메시지를 반복해서 실행하지만 데이터 끝의 패딩을 수정하여 데이터를 유효하지 않게 만들고 그에 따라 일종의 예측할 수 없는 동작을 유발합니다.
...프로세스의 데이터 전송 부분에 걸리는 시간을 안정적으로 추측할 수 있는 네트워크의 대상에 가깝다고 가정하면 일관된 시간이 걸리지 않습니다.
모든 데이터가 동일하게 처리되는 것은 아닙니다.
요청을 실행하고 응답에 걸리는 시간을 측정하고 낮은 수준의 네트워크 데이터 전송 및 수신에 소비된 시간을 빼면 서버가 요청을 처리하기 위해 내부 계산을 수행하는 데 걸린 시간을 알 수 있습니다. .
네트워크에서 얼마나 많은 시간이 소모되는지 확실하지 않더라도 많은 요청을 실행하고 많은 샘플을 수집하여 왕복 시간의 변화를 찾을 수 있습니다.
네트워킹 오버헤드가 대체로 일정하다고 가정할 만큼 네트워크가 신뢰할 수 있는 경우 통계적 방법을 사용하여 어떤 종류의 데이터 수정으로 인해 어떤 종류의 추가 처리 지연이 발생하는지 추론할 수 있습니다.
이를 통해 반복되는 각 요청 내에서 비밀로 유지되어야 하는 암호화되지 않은 원래 데이터의 구조 또는 내용에 대해 많은 것을 추론할 수 있습니다.
XNUMX바이트의 일반 텍스트만 추출할 수 있다고 해도 그런 일은 일어나지 않습니다.
소위 타이밍 공격 단 XNUMX바이트의 일반 텍스트 데이터를 복구하기 위해 수백만 개의 가짜 패킷을 보내고 시간을 맞춰야 하는 경우에도 이러한 종류의 작업은 항상 문제가 됩니다.
...네트워크는 불과 몇 년 전보다 더 빠르고 예측 가능하며 훨씬 더 많은 로드를 처리할 수 있기 때문입니다.
예를 들어 다음 한 시간 내에 스팸 메일을 보내는 수백만 개의 위험한 패킷이 일종의 엄지 손가락처럼 눈에 띌 것이라고 생각할 수도 있습니다.
그러나 "평소보다 많거나 적은 시간당 백만 개의 패킷"은 더 이상 특별히 큰 변화가 아닙니다.
GnuTLS의 유사한 "oracle" 버그
글쎄요, OpenSSL의 최종 수정 버그 타이밍 버그를 보고한 사람이 다음과 같은 내용도 보고했습니다. GnuTLS의 유사한 버그 거의 동시에.
여기에는 버그 식별자가 있습니다. CVE-2023-0361.
GnuTLS는 OpenSSL만큼 널리 사용되거나 널리 사용되지는 않지만 IT 자산이나 심지어 자신의 컴퓨터에 FFmpeg, GnuPG, Mplayer, QEMU를 포함하여 이를 사용하거나 포함하는 여러 프로그램이 있을 수 있습니다. , Rdesktop, Samba, Wget 및 Wireshark.
아이러니하게도 GnuTLS의 타이밍 결함은 애초에 타이밍 공격 오류를 기록해야 하는 코드에서 나타났습니다.
코드 차이에서 볼 수 있듯이 (diff) 아래에서 프로그래머는 조건부(if ... then
) 암호 해독 오류를 확인하고 처리하는 데 사용되는 작업은 타이밍 변화를 일으킬 수 있습니다. 왜냐하면 CPU는 일반적으로 "분기" 명령 이후에 코드가 진행되는 방식에 따라 시간이 다르기 때문입니다.
(CPU는 성능 향상을 위해 반복적으로 실행되는 코드를 기억하거나 캐시하는 경향이 있으므로 자주 사용되지 않는 코드 실행이 감지할 수 없을 만큼 느려지기 때문에 한 방향으로 자주 가고 다른 방향으로 거의 이동하지 않는 분기의 경우 특히 그렇습니다.)
그러나 프로그래머는 여전히 공격이 발생할 수 있음을 기록하고 싶었습니다. if (ok)
위의 테스트가 실패하고 다음으로 분기됩니다. else { ... }
안내
이 시점에서 코드는 _gnutls_debug_log()
이 기능은 작업을 수행하는 데 꽤 오랜 시간이 걸릴 수 있습니다.
따라서 코더는 의도적으로 호출을 삽입했습니다. _gnutls_no_log()
FBI 증오 범죄 보고서 then { ... }
"공격"이 없을 때 이를 기록하는 척하는 코드의 일부는 코드가 어느 방향으로든 소비하는 시간을 균일하게 만들기 위해 시도합니다. if (ok)
분기 명령이 필요할 수 있습니다.
그러나 분명히 두 코드 경로는 사용한 시간이 충분히 유사하지 않았습니다(또는 아마도 _gnutls_debug_log()
기능 자체로는 다양한 종류의 오류를 처리하는 데 있어 일관성이 충분하지 않았으며 공격자는 백만 번 정도 시도한 후에 암호 해독 정보를 구별하기 시작할 수 있습니다.
무엇을해야 하는가?
당신이 프로그래머라면: 여기서의 버그 수정은 간단했으며 "적은 것이 더 많다"는 원칙을 따랐습니다.
어차피 별로 유용한 공격 탐지 데이터를 제공하지 않는 것으로 판단된 위의 분홍색 코드는 빌드 설정에 관계없이 존재하지 않는 코드가 실수로 컴파일될 수 없다는 이유로 단순히 삭제되었습니다…
...그리고 컴파일되지 않은 코드는 우연이든 의도적이든 절대 실행될 수 없습니다.
GnuTLS 사용자인 경우: 최근에 출시된 버전 3.7.9 그리고 '신제품 맛' 3.8.0 다양한 다른 수정 사항과 함께 이 수정 사항이 포함되어 있어야 합니다.
Linux 배포판을 실행 중인 경우 중앙에서 관리되는 GnuTLS 공유 라이브러리 버전에 대한 업데이트와 자체 버전을 가져오는 앱이 있는지 확인하세요.
Linux에서는 이름이 다음과 같은 파일을 검색하세요. libgnutls*.so
주변에 있는 공유 라이브러리를 찾고 검색해 보세요. gnutls-cli
라이브러리에 자주 포함되는 명령줄 유틸리티의 복사본을 찾으려면
당신은 실행할 수 있습니다 gnutls-cli -vv
어떤 버전인지 알아보기 위해 libgnutls
다음 항목에 동적으로 연결됩니다.
$ gnutls-cli -vv gnutls-cli 3.7.9 <-- 내 Linux 배포판이 지난 금요일(2023-02-10)에 업데이트를 받았습니다.
- SEO 기반 콘텐츠 및 PR 배포. 오늘 증폭하십시오.
- 플라토 블록체인. Web3 메타버스 인텔리전스. 지식 증폭. 여기에서 액세스하십시오.
- 출처: https://nakedsecurity.sophos.com/2023/02/13/serious-security-gnutls-follows-openssl-fixes-timing-attack-bug/
- 1
- 7
- 70
- 9
- a
- 할 수 있는
- 소개
- 위의
- 절대
- 사고
- 후
- 반대
- All
- 항상
- 양
- 과
- 답변
- 등장
- 앱
- 약
- 공격
- 저자
- 자동
- 배경 이미지
- 때문에
- 이하
- 경계
- 바닥
- 지사
- 가지
- 가져
- 곤충
- 버그
- 빌드
- 다발
- 캐시
- 전화
- 통화
- 수
- 원인
- 센터
- 기회
- 검사
- 확인
- 닫기
- 암호
- 코더
- 수집
- 색
- 계산
- 컴퓨터
- 일관된
- 상수
- 소비
- 함유량
- 수
- 엄호
- 데이터
- 취급
- 지연
- 의존
- 디자인
- Detection System
- 차이
- 다른
- 방향
- 디스플레이
- 드러내다
- 더빙 된
- 역동적 인
- 마다
- 중
- 암호화
- 암호화
- 충분히
- 오류
- 오류
- 특히
- 재산
- 조차
- 여분의
- 추출물
- 실패
- 빠른
- 를
- 파일
- Find
- 화재
- 발사
- 먼저,
- 수정
- 고정
- 결점
- 다음에
- 다음
- 금요일
- 에
- 기능
- 일반적으로
- 주기
- 너틀
- 간다
- 근거
- 처리
- 발생
- 발생
- 신장
- 여기에서 지금 확인해 보세요.
- 가져가
- 방법
- 그러나
- HTTPS
- 식별자
- 개선
- in
- 포함
- 포함
- 포함
- 내부의
- IT
- 딱 하나만
- 알아
- 넓은
- 크게
- 성
- 최근
- 도서관
- 도서관
- 라인
- 연결
- 리눅스
- 하중
- 잔뜩
- 긴
- 보기
- 확인
- 유튜브 영상을 만드는 것은
- 구축
- .
- 한계
- 최대 폭
- 메모리
- 메시지
- 방법
- 수도
- 백만
- 수백만
- 잘못
- 배우기
- name
- 필요
- 네트워크
- 네트워크 데이터
- 네트워킹
- 네트워크
- 다음 것
- 표준
- 번호
- ONE
- 하려면 openssl
- 조작
- 신탁
- 주문
- 실물
- 기타
- 기타
- 자신의
- 패킷
- 부품
- 특별히
- 폴
- 성능
- 혹시
- 사람
- 장소
- 평문
- 플라톤
- 플라톤 데이터 인텔리전스
- 플라토데이터
- 포인트 적립
- 인기 문서
- 위치
- 게시물
- 예측 가능
- 원칙
- 아마
- 방법
- 처리
- 생산
- 프로덕트
- 프로그램 제작자
- 프로그램
- 복구
- 관계없이
- 신뢰할 수있는
- 기억
- 반복
- 자꾸
- 보고
- 의뢰
- 요청
- RSA
- 달리기
- 달리는
- 삼바
- 같은
- 검색
- 비밀
- 섹션
- 보안
- 보안 업데이트
- 드물게
- 진지한
- 공유
- 비슷한
- 단순, 간단, 편리
- 간단히
- So
- 고체
- 일부
- 무언가
- 서다
- 통계적인
- 아직도
- 구조
- 가정
- SVG
- 받아
- 소요
- 목표
- test
- XNUMXD덴탈의
- 그들의
- 생각
- 시간
- 시대
- 타이밍
- 에
- 상단
- 이전
- 전이
- 투명한
- 참된
- 예측할 수
- 업데이트
- 업데이트
- URL
- 사용
- 사용자
- 유틸리티
- 여러
- 버전
- 원
- 주
- 뭐
- 여부
- 어느
- 동안
- 누구
- 작업
- 겠지
- 년
- 너의
- 제퍼 넷