보안 우려로 인해 Linux AF_ALG 암호화 코드에서 Zero-Copy 지원 제거
요약
Linux 커널의 AF_ALG 암호화 API에서 보안 취약점을 방지하기 위해 zero-copy 지원을 제거하기로 결정되었습니다. 이는 사용자 공간에서 연산 중인 메모리를 동시에 수정하여 발생하는 TOCTOU(Time-of-Check to Time-of-Use) 취약점과 페이지 캐시 악용 위험을 차단하기 위한 조치입니다.
핵심 포인트
- zero-copy 지원 제거를 통해 TOCTOU 취약점 및 악성 소프트웨어의 페이지 캐시 악용 위험 감소
- AF_ALG는 하드웨어 가속기 접근용으로 설계되었으나 실제 활용도가 낮아 보안 위험 대비 이점이 적음
- 이번 변경은 API를 깨뜨리지 않는 soft break 방식으로, 커널이 연산 전 데이터의 안정적인 복사본을 생성함
- 해당 패치는 Linux 7.2 머지 윈도우에 제출될 예정
Linux AF_ALG 암호화 코드에서 보안 우려로 인해 Zero-Copy 지원 제거
Zero-copy (제로 카피) 지원은 성능과 효율성을 높이는 데 매우 훌륭하지만, 커널 공간 (kernel space)에서는 악성 소프트웨어가 그 의미론적 특성을 악용할 가능성을 높입니다. Linux 커널의 암호화 API (cryptographic API)를 사용자 공간 (user-space)에 노출하는 Linux AF_ALG 코드는 보안 위험을 줄이기 위해 SKCIPHER 및 AEAD 코드에서 zero-copy 지원을 제거할 예정입니다.
Google의 Linux 암호화 전문가인 Eric Biggers는 zero-copy 지원을 제거하는 이번 패치에 대해 다음과 같이 설명했습니다:
"zero-copy 지원은 AF_ALG에서 가장 위험한 측면 중 하나입니다. 이는 사용자 공간이 'su' 바이너리와 같은 파일의 페이지 캐시 (pagecache) 페이지에서 직접 암호화 연산을 요청할 수 있게 합니다. 또한 사용자 공간이 연산 중인 메모리를 동시에 수정할 수 있게 하여, TOCTOU (Time-of-Check to Time-of-Use) 취약점을 유발하는 원인이 됩니다.
zero-copy 지원은 빈번하게 사용되는 네트워킹 및 파일 I/O 코드와 같이 커널의 다른 영역에서는 더 가치가 높지만, 니치(niche)한 UAPI인 AF_ALG에서는 그 가치가 훨씬 낮습니다. AF_ALG는 주로 사용자 공간 암호화 코드를 사용하도록 아직 수정되지 않은 'iwd'와 같은 소수의 사용자 공간 프로그램들과의 하위 호환성을 위해서만 존재합니다.
원래 AF_ALG는 하드웨어 암호화 가속기 (hardware crypto accelerators)에 접근하기 위해 의도되었습니다. 하지만 어차피 이를 위한 효율적인 인터페이스가 아니었으며, 실제로 이런 방식으로 사용되는 경우는 드문 것으로 밝혀졌습니다.
따라서 AF_ALG에서 zero-copy 지원의 위험성은 그 이점보다 훨씬 큽니다. 그냥 제거하도록 합시다.
이 커밋은 "skcipher" 및 "aead" 알고리즘 유형에서 이를 제거합니다. "hash"는 별도로 처리될 것입니다."
이것은 하드 브레이크 (hard break)가 아닌 소프트 브레이크 (soft break)입니다. 이 커밋 이후에도 파이프 (pipe) 또는 임의의 파일로부터 각각 AF_ALG 요청 소켓 (request socket)으로 데이터를 전송하기 위해 splice() 또는 sendfile()을 사용하는 것은 여전히 작동합니다. 변경되는 점은 커널이 암호화 연산 (crypto operation)을 수행하기 전에 데이터의 내부적이고 안정적인 복사본 (stable copy)을 만든다는 것입니다. 따라서 성능은 약간 저하되지만, UAPI (User API)가 깨지지는 않습니다. 그리고 매우 중요한 점은, 이것이 훨씬 더 안전하다는 것입니다.
이 제거 패치가 이제 "cryptodev" Git 코드에 포함됨에 따라, 6월에 진행될 Linux 7.2 머지 윈도우 (merge window)에 제출될 것으로 예상됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Phoronix의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기