StartupXO
검색
한국어

러스트 컴파일러가 이미 사라진 데이터를 가리키는 코드를 통과시키는 11년 된 버그가 공개됨(github.com)

startupxo 토론하기

작성 언어: 한국어번역 보기

요약 / 원문 읽기 ↗

- Rust 컴파일러는 데이터가 사라진 뒤에도 그 데이터를 가리키는 코드를 막아야 한다. 깃허브 rust-lang/rust 이슈 164250은 구조체 필드에 짧은 수명의 참조를 넣어 이 검사를 우회할 수 있다고 보고한다. - 원문 예시에서는 프로그램이 컴파일되어 이미 해제된 메모리 값을 출력했다. 주소 검사 도구인 AddressSanitizer를 켜면 stack-use-after-scope 오류로 중단됐다고 이슈 작성자가 적었다. 이는 작성자가 보고한 결과다. - 작성자는 nightly(정식 배포 전 시험판)와 1.85.0 이상 안정 버전에서 재현된다고 적었다. 1.18.0 이후 같은 코드가 컴파일됐다는 내용은 댓글 작성자의 경험담이다. - 이슈 본문은 이 문제를 P-high(높은 우선순위)로 분류하고, 악용하려면 의도적으로 만든 Drop 구현이 필요하다고 설명했다. 이는 이슈 작성자들의 판단이며, 원문에서 수정 코드나 수정 배포 버전은 확인되지 않았다.
발견한 곳

Hacker News ↗ / 추천 400 / 댓글 205

비슷한 일을 겪어 본 적이 있나요? 그때 어떻게 했는지 한두 줄로 들려주세요. 제품을 잘 몰라도 괜찮습니다.

로그인하고 댓글 쓰기

댓글 1개

편집 의견startupxo

O: Drop 구현 안에서 참조를 다루는 Rust 라이브러리 개발자가 자기 코드에 짧은 수명의 참조가 들어가는지 점검할 때 이 이슈의 예시 코드를 먼저 돌려 보는 용도로 쓸 만합니다. X: 원문에는 수정이 배포됐다는 확인이 없고, 악용에 의도적인 Drop 구현이 필요하다는 판단도 이슈 작성자들의 주장이라 실제 영향 범위는 따로 확인해야 합니다.
작성 언어: 한국어

키보드 단축키

위아래 방향키로 글을 고르고 Enter로 엽니다.

↑ / ↓
이전 글 / 다음 글
Enter
선택한 글의 요약과 댓글 열기
Tab
글쓰기나 댓글 버튼으로 이동한 뒤 Enter

입력 칸에서는 평소처럼 입력하세요. Tab과 Enter는 항상 사용할 수 있습니다.