Bun Rust 코드, 기본 Miri 검사도 통과 못 해
오픈소스 프로젝트 Bun의 Rust 코드베이스에서 정의되지 않은 동작(UB)을 유발하는 치명적인 메모리 안전성 버그가 발견되었습니다. Rust의 공식 메모리 검사 도구인 Miri조차 통과하지 못하는 수준의 미숙한 코드가 포함되어 있어, 개발자 커뮤니티에서는 AI가 작성한 코드를 무분별하게 신뢰하고 검수 없이 반영한 결과라는 비판이 제기되고 있습니다.
oven-sh / bun 공개 알림
이슈 내용: 전체 Rust 코드베이스에 대해 - 이 코드베이스는 가장 기본적인 Miri 검사조차 통과하지 못하며, 안전한 Rust(safe rust) 내에서 정의되지 않은 동작(UB)을 허용합니다. #30719
설명 사용자 AwesomeQubic이 2026년 5월 14일에 개제한 이슈 내용:
에러: 정의되지 않은 동작(Undefined Behavior): &[u8] 타입에 대한 유효하지 않은 값 생성 - dangling reference(허상 참조)를 발견했습니다. (0x20933[noalloc]에 provenance가 없음) --> src/main.rs:97:18 | 97 | unsafe { core::slice::from_raw_parts(ptr as *const u8, self.len()) } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 여기서 정의되지 않은 동작이 발생했습니다. | = 도움말: 이는 프로그램에 버그가 있음을 나타냅니다. 유효하지 않은 연산을 수행하여 정의되지 않은 동작을 유발했습니다. = 도움말: 자세한 내용은 https://doc.rust-lang.org/nightly/reference/behavior-considered-undefined.html 을 참조하세요. = 참고: 스택 백트레이스: 0: PathString::slice at src/main.rs:97:18: 97:75 1: main at src/main.rs:130:22: 130:34
테스트에 사용된 코드: fn main() { let test = Box::new(*b"Hello World"); let init = PathString::init(&*test); drop(test); println!("{:?}", init.slice()); }
제언: AI는 Rust 코드 작성에 서툴기 때문에 무작정 AI에게 맡겨 코딩(vibe coding)하는 방식은 지양해 주시기 바랍니다. 또한, 실제 유능한 Rust 개발자를 채용하시기를 권장합니다.
현재 반응(Reactions)을 볼 수 없습니다.
메타데이터: 담당자(Assignees): 지정되지 않음 라벨(Labels): 없음 유형(Type): 없음 프로젝트(Projects): 없음 마일스톤(Milestone): 없음 관계(Relationships): 아직 없음 개발(Development): 관련된 브랜치나 풀 리퀘스트가 없습니다.