Critical ReviewComputer Systems
Memory Safety at the Tipping Point: How Rust Drove Android Vulnerabilities Below 20%
Google reports that memory safety vulnerabilities have dropped below 20% of total Android vulnerabilities for the first time, driven by Rust adoption in new code. MIT, NSA, CISA, and DARPA's TRACTOR program signal that memory-safe languages are moving from recommendation to institutional mandate.
By Sean K.S. Shin
This blog summarizes research trends based on published paper abstracts. Specific numbers or findings may contain inaccuracies. For scholarly rigor, always consult the original papers cited in each post.
Disclaimer: This post is a research trend overview for informational purposes. Specific findings, statistics, and claims should be verified against the original papers before citation in academic work.
Memory Safety at the Tipping Point: How Rust Drove Android Vulnerabilities Below 20%
For decades, memory safety vulnerabilitiesโbuffer overflows, use-after-free errors, null pointer dereferencesโhave constituted the majority of severe security bugs in systems software. Microsoft reported in 2019 that roughly 70% of its CVEs over the previous decade stemmed from memory safety issues. Google's Project Zero found similar proportions across major software projects. The pattern was so consistent that it began to feel like a law of nature: write systems code in C or C++, and roughly two-thirds of your critical vulnerabilities will be memory bugs.
That ratio is now changing. Google's Android team reports that memory safety vulnerabilities have dropped below 20% of total vulnerabilities for the first time. The mechanism is not better C++ practices, not more sophisticated static analysis, and not more thorough code reviewโthough all of those help at the margins. The primary driver is writing new code in Rust, a language that enforces memory safety at compile time through its ownership and borrowing system.
The Android Evidence
Android is a compelling case study because of its scale and heterogeneity. The Android Open Source Project comprises millions of lines of code spanning kernel drivers, system services, media codecs, networking stacks, and hardware abstraction layersโexactly the kind of performance-critical, hardware-adjacent code that has historically been written in C and C++ because "you need the control."
Google's approach was not to rewrite existing C/C++ code in Rustโa strategy that would be prohibitively expensive and would introduce its own bugs during translation. Instead, they adopted a policy of writing new code in Rust while allowing existing C/C++ code to age in place. The rationale is that most vulnerabilities cluster in recently modified code: the older a piece of code is, the more it has been tested by real-world usage, and the fewer bugs remain. New code, by contrast, is where fresh memory safety bugs are introduced.
This "Safe Coding" strategy produces a counterintuitive result: even though the total amount of C/C++ code still vastly exceeds Rust code in Android, the share of memory safety vulnerabilities declines steadily because the new vulnerability introduction rate drops to near zero in Rust modules.
<
| Claim | Source | Confidence | Status |
|---|
| Android memory safety vulnerabilities dropped below 20% of total | Google Android reports | High | Reported by Google |
| Rust adoption in new Android code is the primary driver | Google Android reports | High | Stated by Google |
| MIT declares memory safety at a tipping point | MIT News, 2025 | High | Published editorial position |
| NSA/CISA issued policy guidance on memory-safe languages | NSA/CISA publications | High | Public government documents |
| DARPA TRACTOR program funds C-to-Rust auto-translation | DARPA program announcements | High | Publicly announced program |
The Institutional Cascade
What distinguishes the current moment from earlier advocacy for memory-safe languages is the institutional weight behind the shift. This is no longer a debate among programming language enthusiasts on forums; it is a matter of national security policy.
The NSA published guidance in November 2022 recommending that organizations transition to memory-safe languages, specifically naming Rust, Go, C#, Java, Swift, and Python. CISA followed with its own guidance emphasizing memory safety as a key component of secure-by-design software development. The White House ONCD issued a technical report in February 2024 calling on the technology ecosystem to adopt memory-safe languages and formally treat memory unsafety as a class of defect to be eliminated rather than managed.
Most concretely, DARPA's TRACTOR program (Translating All C to Rust) funds research into automated translation of existing C codebases to Rust. The program name is both literal and aspirational: the goal is not merely to demonstrate that translation is possible for small programs, but to build tools capable of handling the millions of lines of C that underpin operating systems, embedded systems, and critical infrastructure.
MIT's declaration that memory safety has reached a "tipping point" reflects this convergence of technical evidence (Android's numbers), institutional policy (NSA/CISA/ONCD), and active investment (DARPA TRACTOR).
The Criticism Worth Taking Seriously
The case for memory-safe languages is strong, but several counterarguments deserve honest engagement rather than dismissal.
Performance overhead: Rust's borrow checker enforces safety at compile time with zero runtime cost, but the language's safety guarantees can force programmers into patterns that are less cache-friendly or require more allocations than equivalent unsafe C. In latency-critical systemsโreal-time audio processing, certain kernel paths, high-frequency tradingโthese differences can matter. The response that "Rust is zero-cost" is technically correct about the borrow checker but misleading about the broader programming patterns the language encourages.
Unsafe blocks: Rust allows unsafe blocks that bypass the borrow checker, and these are necessary for low-level systems programmingโinterfacing with hardware, implementing data structures that require pointer arithmetic, calling foreign functions. The proportion of unsafe code in real Rust projects varies widely. If critical vulnerabilities cluster in unsafe blocks, the effective safety improvement is smaller than the language-level guarantee suggests.
Translation fidelity: DARPA TRACTOR's ambition to translate C to Rust at scale faces the fundamental challenge that C and Rust have different memory models. A faithful translation preserves the original program's semantics, but those semantics may include the very undefined behaviors that Rust is designed to prevent. An idiomatic translation that restructures code to use Rust's ownership model may change program behavior in subtle ways.
Ecosystem maturity: The C and C++ ecosystems have decades of tooling, libraries, and developer expertise. Rust's ecosystem is growing rapidly but remains thinner in domains like embedded systems, legacy kernel modules, and certain scientific computing niches.
Open Questions
The unsafe frontier: What fraction of memory safety vulnerabilities in Rust-containing projects originate in unsafe blocks, and does this fraction grow as Rust is adopted for increasingly low-level tasks?Translation correctness: Can TRACTOR-style automated translators provide formal guarantees that the translated Rust code preserves the original C program's behavior, or will translation introduce its own class of subtle bugs?Beyond memory safety: Memory safety addresses roughly 60-70% of critical vulnerabilities in systems code. What systematic approaches address the remaining 30-40%โlogic bugs, concurrency errors, authentication failuresโthat memory-safe languages do not prevent?Adoption economics: For organizations with large C/C++ codebases, what is the break-even point at which Rust adoption costs (training, tooling, incremental rewriting) are recouped through reduced vulnerability remediation costs?The decline of memory safety vulnerabilities below 20% in Android is not the end of a story but the validation of a hypothesis: that a class of vulnerability responsible for the majority of severe security bugs can be systematically eliminated through language choice rather than developer discipline. Whether this success generalizes to less well-resourced organizations and less modern codebases remains the central question.
๋ฉด์ฑ
์กฐํญ: ์ด ๊ฒ์๋ฌผ์ ์ ๋ณด ์ ๊ณต ๋ชฉ์ ์ ์ฐ๊ตฌ ๋ํฅ ๊ฐ์์ด๋ค. ํ์ ์ฐ๊ตฌ์์ ์ธ์ฉํ๊ธฐ ์ ์ ํน์ ์ฐ๊ตฌ ๊ฒฐ๊ณผ, ํต๊ณ ๋ฐ ์ฃผ์ฅ์ ์๋ณธ ๋
ผ๋ฌธ๊ณผ ๋์กฐํ์ฌ ๊ฒ์ฆํด์ผ ํ๋ค.
์ ํ์ ์ ์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ: Rust๊ฐ ์ด๋ป๊ฒ Android ์ทจ์ฝ์ ์ 20% ๋ฏธ๋ง์ผ๋ก ๋ฎ์ท๋๊ฐ
์์ญ ๋
๋์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ์ทจ์ฝ์ โ๋ฒํผ ์ค๋ฒํ๋ก์ฐ, use-after-free ์ค๋ฅ, null ํฌ์ธํฐ ์ญ์ฐธ์กฐโ์ ์์คํ
์ํํธ์จ์ด์์ ๋ฐ์ํ๋ ์ฌ๊ฐํ ๋ณด์ ๋ฒ๊ทธ์ ๋๋ค์๋ฅผ ์ฐจ์งํด ์๋ค. Microsoft๋ 2019๋
์ง๋ 10๋
๊ฐ ์์ฌ CVE์ ์ฝ 70%๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ๋ฌธ์ ์์ ๋น๋กฏ๋์๋ค๊ณ ๋ณด๊ณ ํ๋ค. Google์ Project Zero๋ ์ฃผ์ ์ํํธ์จ์ด ํ๋ก์ ํธ ์ ๋ฐ์ ๊ฑธ์ณ ์ ์ฌํ ๋น์จ์ ๋ฐ๊ฒฌํ๋ค. ์ด ํจํด์ ๋๋ฌด๋ ์ผ๊ด์ ์ด์ด์ ๋ง์น ์์ฐ ๋ฒ์น์ฒ๋ผ ๋๊ปด์ง๊ธฐ ์์ํ๋ค. C ๋๋ C++๋ก ์์คํ
์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์น๋ช
์ ์ทจ์ฝ์ ์ ์ฝ 3๋ถ์ 2๊ฐ ๋ฉ๋ชจ๋ฆฌ ๋ฒ๊ทธ๊ฐ ๋ ๊ฒ์ด๋ผ๋ ๋ฒ์น ๋ง์ด๋ค.
์ด์ ๊ทธ ๋น์จ์ด ๋ณํํ๊ณ ์๋ค. Google์ Android ํ์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ์ทจ์ฝ์ ์ด ์ฒ์์ผ๋ก ์ ์ฒด ์ทจ์ฝ์ ์ 20% ๋ฏธ๋ง์ผ๋ก ๊ฐ์ํ๋ค๊ณ ๋ณด๊ณ ํ๋ค. ๊ทธ ์๋๋ ฅ์ ๋ ๋์ C++ ๊ดํ๋, ๋ ์ ๊ตํ ์ ์ ๋ถ์๋, ๋ ์ฒ ์ ํ ์ฝ๋ ๋ฆฌ๋ทฐ๋ ์๋๋คโ๋ฌผ๋ก ์ด ๋ชจ๋๊ฐ ์ฃผ๋ณ์ ์ผ๋ก๋ ๋์์ด ๋์ง๋ง. ํต์ฌ ๋์ธ์ ์์ ๊ถ ๋ฐ ์ฐจ์ฉ ์์คํ
์ ํตํด ์ปดํ์ผ ํ์์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ๊ฐ์ ํ๋ ์ธ์ด์ธ Rust๋ก ์๋ก์ด ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค.
Android์ ์ฌ๋ก
Android๋ ๊ทธ ๊ท๋ชจ์ ์ด์ง์ฑ ๋๋ฌธ์ ์ค๋๋ ฅ ์๋ ์ฌ๋ก ์ฐ๊ตฌ ๋์์ด๋ค. Android Open Source Project๋ ์ปค๋ ๋๋ผ์ด๋ฒ, ์์คํ
์๋น์ค, ๋ฏธ๋์ด ์ฝ๋ฑ, ๋คํธ์ํน ์คํ, ํ๋์จ์ด ์ถ์ํ ๊ณ์ธต์ ๊ฑธ์ณ ์๋ฐฑ๋ง ์ค์ ์ฝ๋๋ก ๊ตฌ์ฑ๋์ด ์๋ค. ์ด๋ "์ ์ด๊ฐ ํ์ํ๋ค"๋ ์ด์ ๋ก ์ญ์ฌ์ ์ผ๋ก C์ C++๋ก ์์ฑ๋์ด ์จ ์ฑ๋ฅ ์ค์ฌ์ ์ด๊ณ ํ๋์จ์ด์ ๊ทผ์ ํ ์ฝ๋์ ์ ํ์ด๋ค.
Google์ ์ ๊ทผ ๋ฐฉ์์ ๊ธฐ์กด C/C++ ์ฝ๋๋ฅผ Rust๋ก ์ฌ์์ฑํ๋ ๊ฒ์ด ์๋์๋ค. ๊ทธ ์ ๋ต์ ์์ฒญ๋ ๋น์ฉ์ด ๋ค๊ณ ๋ณํ ๊ณผ์ ์์ ์๋ก์ด ๋ฒ๊ทธ๋ฅผ ๋์
ํ ์ ์๋ค. ๋์ ๊ทธ๋ค์ ๊ธฐ์กด C/C++ ์ฝ๋๋ ๊ทธ๋๋ก ์ ์งํ๋ฉด์ ์๋ก์ด ์ฝ๋๋ฅผ Rust๋ก ์์ฑํ๋ ์ ์ฑ
์ ์ฑํํ๋ค. ๊ทธ ๊ทผ๊ฑฐ๋ ๋๋ถ๋ถ์ ์ทจ์ฝ์ ์ด ์ต๊ทผ ์์ ๋ ์ฝ๋์ ์ง์ค๋๋ค๋ ๊ฒ์ด๋ค. ์ฝ๋๊ฐ ์ค๋๋ ์๋ก ์ค์ ์ฌ์ฉ ํ๊ฒฝ์์ ๋ ๋ง์ด ํ
์คํธ๋์ด ๋จ์์๋ ๋ฒ๊ทธ๊ฐ ์ค์ด๋ ๋ค. ๋ฐ๋๋ก ์๋ก์ด ์ฝ๋๋ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ๋ฒ๊ทธ๊ฐ ๋์
๋๋ ๊ณณ์ด๋ค.
์ด "์์ ํ ์ฝ๋ฉ(Safe Coding)" ์ ๋ต์ ์ง๊ด์ ๋ฐํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณ๋๋ค. Android์์ C/C++ ์ฝ๋์ ์ด๋์ด ์ฌ์ ํ Rust ์ฝ๋๋ฅผ ์๋์ ์ผ๋ก ๋์ด์์ง๋ง, Rust ๋ชจ๋์์ ์๋ก์ด ์ทจ์ฝ์ ๋์
๋ฅ ์ด ๊ฑฐ์ 0์ ๊ฐ๊น๊ฒ ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ์ทจ์ฝ์ ์ ๋น์จ์ ๊พธ์คํ ๊ฐ์ํ๋ค.
<
| ์ฃผ์ฅ | ์ถ์ฒ | ์ ๋ขฐ๋ | ์ํ |
|---|
| Android ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ์ทจ์ฝ์ ์ด ์ ์ฒด์ 20% ๋ฏธ๋ง์ผ๋ก ๊ฐ์ | Google Android ๋ณด๊ณ ์ | ๋์ | Google์ด ๋ณด๊ณ |
| ์๋ก์ด Android ์ฝ๋์์์ Rust ๋์
์ด ์ฃผ์ ์์ธ | Google Android ๋ณด๊ณ ์ | ๋์ | Google์ด ๋ช
์ |
| MIT, ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ด ์ ํ์ ์ ๋๋ฌํ๋ค๊ณ ์ ์ธ | MIT News, 2025 | ๋์ | ๋ฐํ๋ ํธ์ง ์
์ฅ |
| NSA/CISA, ๋ฉ๋ชจ๋ฆฌ ์์ ์ธ์ด์ ๊ดํ ์ ์ฑ
์ง์นจ ๋ฐํ | NSA/CISA ์ถํ๋ฌผ | ๋์ | ๊ณต๊ฐ ์ ๋ถ ๋ฌธ์ |
| DARPA TRACTOR ํ๋ก๊ทธ๋จ, C์์ Rust๋ก์ ์๋ ๋ณํ ์ฐ๊ตฌ ์ง์ | DARPA ํ๋ก๊ทธ๋จ ๋ฐํ | ๋์ | ๊ณต๊ฐ ๋ฐํ๋ ํ๋ก๊ทธ๋จ |
๊ธฐ๊ด์ ์ฐ์์ ํธ์
ํ์ฌ ์์ ์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ธ์ด์ ๋ํ ์ด์ ์ ์ง์ง ์์ง์๊ณผ ๊ตฌ๋ณ ์ง๋ ๊ฒ์ ์ด ์ ํ ๋ค์ ์๋ ๊ธฐ๊ด์ ๋ฌด๊ฒ๊ฐ์ด๋ค. ์ด๊ฒ์ ๋ ์ด์ ํฌ๋ผ์์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ ํธ๊ฐ๋ค ์ฌ์ด์ ๋
ผ์์ด ์๋๋ค. ์ด์ ์ด๊ฒ์ ๊ตญ๊ฐ ์๋ณด ์ ์ฑ
์ ๋ฌธ์ ์ด๋ค.
NSA๋ 2022๋
11์ ์กฐ์ง๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์์ ์ธ์ด๋ก ์ ํํ ๊ฒ์ ๊ถ๊ณ ํ๋ ์ง์นจ์ ๋ฐํํ๋ฉด์, ๊ตฌ์ฒด์ ์ผ๋ก Rust, Go, C#, Java, Swift, Python์ ๋ช
์ํ์๋ค. CISA๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ๋ณด์ ์ค๊ณ(secure-by-design) ์ํํธ์จ์ด ๊ฐ๋ฐ์ ํต์ฌ ์์๋ก ๊ฐ์กฐํ๋ ์์ฒด ์ง์นจ์ ๋ค์ด์ด ๋ฐํํ์๋ค. ๋ฐฑ์
๊ด ONCD๋ 2024๋
2์ ๊ธฐ์ ๋ณด๊ณ ์๋ฅผ ๋ฐ๊ฐํ์ฌ ๊ธฐ์ ์ํ๊ณ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ ์ธ์ด๋ฅผ ์ฑํํ๊ณ , ๋ฉ๋ชจ๋ฆฌ ๋น์์ ์ฑ์ ๊ด๋ฆฌ ๋์์ด ์๋ ์ ๊ฑฐํด์ผ ํ ๊ฒฐํจ์ ํ ๋ฒ์ฃผ๋ก ๊ณต์์ ์ผ๋ก ๋ค๋ฃฐ ๊ฒ์ ์ด๊ตฌํ์๋ค.
๊ฐ์ฅ ๊ตฌ์ฒด์ ์ธ ์ฌ๋ก๋ก, DARPA์ TRACTOR ํ๋ก๊ทธ๋จ(Translating All C to Rust)์ ๊ธฐ์กด C ์ฝ๋๋ฒ ์ด์ค๋ฅผ Rust๋ก ์๋ ๋ณํํ๋ ์ฐ๊ตฌ์ ์๊ธ์ ์ง์ํ๋ค. ์ด ํ๋ก๊ทธ๋จ์ ๋ช
์นญ์ ๋ฌธ์ ๊ทธ๋๋ก์ด์ ์ด๋ง์ ์๋ฏธ๋ฅผ ๋์์ ๋ด๊ณ ์๋ค. ์ฆ, ๋ชฉํ๋ ์๊ท๋ชจ ํ๋ก๊ทธ๋จ์ ๋ํด ๋ณํ์ด ๊ฐ๋ฅํจ์ ๋จ์ํ ์
์ฆํ๋ ๊ฒ์ด ์๋๋ผ, ์ด์์ฒด์ , ์๋ฒ ๋๋ ์์คํ
, ํต์ฌ ์ธํ๋ผ๋ฅผ ๋ท๋ฐ์นจํ๋ ์๋ฐฑ๋ง ์ค์ C ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ ๋๊ตฌ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒ์ด๋ค.
MIT๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ด "์ ํ์ (tipping point)"์ ๋๋ฌํ๋ค๊ณ ์ ์ธํ ๊ฒ์ ๊ธฐ์ ์ ์ฆ๊ฑฐ(Android์ ์์น), ๊ธฐ๊ด ์ ์ฑ
(NSA/CISA/ONCD), ๊ทธ๋ฆฌ๊ณ ์ ๊ทน์ ํฌ์(DARPA TRACTOR)๋ผ๋ ํ๋ฆ์ ์๋ ด์ ๋ฐ์ํ๋ค.
์ง์งํ๊ฒ ๋ฐ์๋ค์ผ ๋งํ ๋นํ
๋ฉ๋ชจ๋ฆฌ ์์ ์ธ์ด๋ฅผ ์ง์งํ๋ ๋
ผ๊ฑฐ๋ ๊ฐ๋ ฅํ์ง๋ง, ๋ช ๊ฐ์ง ๋ฐ๋ก ์ ์ผ์ถํ๊ธฐ๋ณด๋ค ์์งํ๊ฒ ๊ฒํ ํ ํ์๊ฐ ์๋ค.
์ฑ๋ฅ ์ค๋ฒํค๋: Rust์ ๋น๋ฆผ ๊ฒ์ฌ๊ธฐ(borrow checker)๋ ๋ฐํ์ ๋น์ฉ ์์ด ์ปดํ์ผ ํ์์ ์์ ์ฑ์ ๊ฐ์ ํ์ง๋ง, ์ธ์ด์ ์์ ์ฑ ๋ณด์ฅ์ ํ๋ก๊ทธ๋๋จธ๋ก ํ์ฌ๊ธ ๋๋ฑํ unsafe C๋ณด๋ค ์บ์ ์นํ์ฑ์ด ๋ฎ๊ฑฐ๋ ๋ ๋ง์ ํ ๋น์ ํ์๋ก ํ๋ ํจํด์ ์ฌ์ฉํ๋๋ก ๊ฐ์ ํ ์ ์๋ค. ์ค์๊ฐ ์ค๋์ค ์ฒ๋ฆฌ, ์ผ๋ถ ์ปค๋ ๊ฒฝ๋ก, ๊ณ ๋น๋ ๊ฑฐ๋ ๋ฑ ์ง์ฐ ์๊ฐ์ด ์ค์ํ ์์คํ
์์๋ ์ด๋ฌํ ์ฐจ์ด๊ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์๋ค. "Rust๋ ๋น์ฉ์ด ์๋ค(zero-cost)"๋ ๋ฐ์์ ๋น๋ฆผ ๊ฒ์ฌ๊ธฐ์ ๊ดํด์๋ ๊ธฐ์ ์ ์ผ๋ก ์ ํํ์ง๋ง, ์ธ์ด๊ฐ ๊ถ์ฅํ๋ ๋ ๋์ ํ๋ก๊ทธ๋๋ฐ ํจํด์ ๋ํด์๋ ์คํด๋ฅผ ๋ถ๋ฌ์ผ์ผํฌ ์ ์๋ค.
Unsafe ๋ธ๋ก: Rust๋ ๋น๋ฆผ ๊ฒ์ฌ๊ธฐ๋ฅผ ์ฐํํ๋ unsafe ๋ธ๋ก์ ํ์ฉํ๋ฉฐ, ์ด๋ ์ ์์ค ์์คํ
ํ๋ก๊ทธ๋๋ฐโํ๋์จ์ด ์ธํฐํ์ด์ค, ํฌ์ธํฐ ์ฐ์ ์ด ํ์ํ ์๋ฃ๊ตฌ์กฐ ๊ตฌํ, ์ธ๋ถ ํจ์ ํธ์ถโ์ ํ์์ ์ด๋ค. ์ค์ Rust ํ๋ก์ ํธ์์ unsafe ์ฝ๋์ ๋น์จ์ ๋งค์ฐ ๋ค์ํ๋ค. ๋ง์ฝ ์น๋ช
์ ์ทจ์ฝ์ ์ด unsafe ๋ธ๋ก์ ์ง์ค๋๋ค๋ฉด, ์ค์ง์ ์ธ ์์ ์ฑ ๊ฐ์ ์ ์ธ์ด ์์ค์ ๋ณด์ฅ์ด ์์ฌํ๋ ๊ฒ๋ณด๋ค ์์์ง๋ค.
๋ณํ ์ถฉ์ค๋: C๋ฅผ ๋๊ท๋ชจ๋ก Rust๋ก ๋ณํํ๋ ค๋ DARPA TRACTOR์ ์ผ๋ง์, C์ Rust์ ๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ธ์ด ๋ค๋ฅด๋ค๋ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ์ ์ง๋ฉดํ๋ค. ์ถฉ์คํ ๋ณํ์ ์๋ ํ๋ก๊ทธ๋จ์ ์๋ฏธ๋ก ์ ๋ณด์กดํ์ง๋ง, ๊ทธ ์๋ฏธ๋ก ์๋ Rust๊ฐ ๋ฐฉ์งํ๋๋ก ์ค๊ณ๋ ๋ฐ๋ก ๊ทธ ๋ฏธ์ ์ ๋์(undefined behavior)์ด ํฌํจ๋ ์ ์๋ค. Rust์ ์์ ๊ถ ๋ชจ๋ธ์ ํ์ฉํ๋๋ก ์ฝ๋๋ฅผ ์ฌ๊ตฌ์ฑํ๋ ๊ด์ฉ์ (idiomatic) ๋ณํ์ ํ๋ก๊ทธ๋จ ๋์์ ๋ฏธ๋ฌํ ๋ฐฉ์์ผ๋ก ๋ฐ๊ฟ ์ ์๋ค.
์ํ๊ณ ์ฑ์๋: C์ C++ ์ํ๊ณ๋ ์์ญ ๋
์ ๊ฑธ์น ํด๋ง, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ฐ๋ฐ์ ์ ๋ฌธ์ฑ์ ๋ณด์ ํ๊ณ ์๋ค. Rust์ ์ํ๊ณ๋ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๊ณ ์์ง๋ง, ์๋ฒ ๋๋ ์์คํ
, ๋ ๊ฑฐ์ ์ปค๋ ๋ชจ๋, ์ผ๋ถ ๊ณผํ ์ปดํจํ
ํ์ ๋ถ์ผ์์๋ ์ฌ์ ํ ์์ ํธ์ด๋ค.
๋ฏธํด๊ฒฐ ๊ณผ์
unsafe ํ๋ฐํฐ์ด: Rust๋ฅผ ํฌํจํ ํ๋ก์ ํธ์์ ๋ฐ์ํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ทจ์ฝ์ ์ค unsafe ๋ธ๋ก์์ ๋น๋กฏ๋๋ ๋น์จ์ ์ผ๋ง์ด๋ฉฐ, Rust๊ฐ ์ ์ ๋ ์ ์์ค ์์
์ ์ฑํ๋จ์ ๋ฐ๋ผ ์ด ๋น์จ์ ์ฆ๊ฐํ๋๊ฐ?๋ณํ ์ ํ์ฑ: TRACTOR ๋ฐฉ์์ ์๋ ๋ณํ๊ธฐ๊ฐ ๋ณํ๋ Rust ์ฝ๋๊ฐ ์๋ C ํ๋ก๊ทธ๋จ์ ๋์์ ๋ณด์กดํ๋ค๋ ํ์์ ๋ณด์ฅ์ ์ ๊ณตํ ์ ์๋๊ฐ, ์๋๋ฉด ๋ณํ ์์ฒด๊ฐ ์๋ก์ด ์ข
๋ฅ์ ๋ฏธ๋ฌํ ๋ฒ๊ทธ๋ฅผ ๋์
ํ๊ฒ ๋๋๊ฐ?๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ๋๋จธ: ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ์ ์์คํ
์ฝ๋์ ์น๋ช
์ ์ทจ์ฝ์ ์ค ๋๋ต 60~70%๋ฅผ ํด๊ฒฐํ๋ค. ๋ฉ๋ชจ๋ฆฌ ์์ ์ธ์ด๊ฐ ๋ฐฉ์งํ์ง ๋ชปํ๋ ๋๋จธ์ง 30~40%โ๋
ผ๋ฆฌ ๋ฒ๊ทธ, ๋์์ฑ ์ค๋ฅ, ์ธ์ฆ ์คํจโ๋ฅผ ํด๊ฒฐํ๋ ์ฒด๊ณ์ ์ธ ์ ๊ทผ๋ฒ์ ๋ฌด์์ธ๊ฐ?
๋์
๊ฒฝ์ ์ฑ: ๋๊ท๋ชจ C/C++ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ณด์ ํ ์กฐ์ง์ ๊ฒฝ์ฐ, Rust ๋์
๋น์ฉ(๊ต์ก, ํด๋ง, ์ ์ง์ ์ฌ์์ฑ)์ด ์ทจ์ฝ์ remediation ๋น์ฉ ์ ๊ฐ์ ํตํด ํ์๋๋ ์์ต๋ถ๊ธฐ์ ์ ์ด๋์ธ๊ฐ?Android์์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฑ ์ทจ์ฝ์ ์ด 20% ์ดํ๋ก ๊ฐ์ํ ๊ฒ์ ํ๋์ ์ด์ผ๊ธฐ์ ๋์ด ์๋๋ผ ํ๋์ ๊ฐ์ค์ ๋ํ ๊ฒ์ฆ์ด๋ค. ์ฆ, ์ฌ๊ฐํ ๋ณด์ ๋ฒ๊ทธ์ ๋๋ค์๋ฅผ ์ฐจ์งํ๋ ์ทจ์ฝ์ ๋ถ๋ฅ๊ฐ ๊ฐ๋ฐ์์ ๊ท์จ์ด ์๋ ์ธ์ด ์ ํ์ ํตํด ์ฒด๊ณ์ ์ผ๋ก ์ ๊ฑฐ๋ ์ ์๋ค๋ ๊ฐ์ค์ด๋ค. ์ด๋ฌํ ์ฑ๊ณต์ด ์์์ด ๋ถ์กฑํ ์กฐ์ง๊ณผ ๋ ํ๋์ ์ธ ์ฝ๋๋ฒ ์ด์ค์๋ ์ผ๋ฐํ๋ ์ ์๋์ง์ ์ฌ๋ถ๋ ์ฌ์ ํ ํต์ฌ์ ์ธ ์ง๋ฌธ์ผ๋ก ๋จ์ ์๋ค.
References (5)
Google Android Security Team. (2025). Android Security Annual Report. Google.
MIT News. (2025). Memory Safety at a Tipping Point.
National Security Agency. (2022). Software Memory Safety (Cybersecurity Information Sheet).
DARPA. (2024). TRACTOR: Translating All C to Rust (Program Announcement).
Google Android Security Team; MIT News (2025). Memory Safety at a Tipping Point (MIT News / Google Android Security Reports).