Skip to content

Educational examples demonstrating memory-safe programming patterns for critical infrastructure

License

Notifications You must be signed in to change notification settings

guardsarm/rust-memory-safety-examples

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rust Memory Safety Examples

CI Crates.io Documentation License: MIT

Educational examples demonstrating memory-safe programming patterns in Rust for financial systems and critical infrastructure. This repository provides clear, documented examples of how Rust eliminates entire classes of security vulnerabilities.

Purpose

This project demonstrates memory safety concepts for:

  • Software engineers learning Rust
  • Security professionals evaluating memory-safe languages
  • Financial institutions considering Rust for critical systems
  • Technical decision-makers assessing CISA/FBI 2024 guidance

Alignment with Federal Guidance

These examples directly address 2024 CISA/FBI guidance recommending memory-safe languages for critical infrastructure. Demonstrates how Rust eliminates 70% of security vulnerabilities found in C/C++ systems.

Vulnerabilities Prevented

1. Buffer Overflow (CWE-120)

  • C/C++ Risk: #1 cause of security vulnerabilities
  • Rust Solution: Bounds checking and ownership system
  • Example: buffer_overflow module

2. Use-After-Free (CWE-416)

  • C/C++ Risk: Leads to arbitrary code execution
  • Rust Solution: Ownership and lifetime tracking
  • Example: use_after_free module

3. Data Races (CWE-362)

  • C/C++ Risk: Undefined behavior in concurrent code
  • Rust Solution: Send/Sync traits and type system
  • Example: data_race module

4. Integer Overflow (CWE-190)

  • C/C++ Risk: Silent overflow causing logic errors
  • Rust Solution: Checked/saturating arithmetic
  • Example: integer_overflow module

5. Null Pointer Dereference (CWE-476)

  • C/C++ Risk: Crashes and security vulnerabilities
  • Rust Solution: Option type enforces null checking
  • Example: null_pointer module

Quick Start

# Clone repository
git clone https://github.com/guardsarm/rust-memory-safety-examples
cd rust-memory-safety-examples

# Run all examples
cargo test -- --nocapture

# Run specific examples
cargo run --example buffer_overflow_prevention
cargo run --example use_after_free_prevention
cargo run --example data_race_prevention

Examples

Buffer Overflow Prevention

use rust_memory_safety_examples::buffer_overflow;

// C/C++ code (UNSAFE):
// char buffer[10];
// strcpy(buffer, "This is way too long"); // Buffer overflow!

// Rust equivalent (SAFE):
let data = vec![1, 2, 3, 4, 5];
if let Some(&value) = data.get(10) {
    println!("Value: {}", value);
} else {
    println!("Index out of bounds - safely handled!");
}

Use-After-Free Prevention

use rust_memory_safety_examples::use_after_free;

// C/C++ code (UNSAFE):
// int* ptr;
// {
//     int x = 42;
//     ptr = &x;
// }
// printf("%d", *ptr); // Use-after-free!

// Rust equivalent (SAFE - won't compile):
// let ptr: &i32;
// {
//     let x = 42;
//     ptr = &x; // ERROR: `x` does not live long enough
// }

Data Race Prevention

use rust_memory_safety_examples::data_race;
use std::sync::{Arc, Mutex};

// Safe concurrent access
let counter = Arc::new(Mutex::new(0));
let mut handles = vec![];

for _ in 0..10 {
    let counter_clone = Arc::clone(&counter);
    let handle = std::thread::spawn(move || {
        let mut num = counter_clone.lock().unwrap();
        *num += 1;
    });
    handles.push(handle);
}

// No data races possible!

Educational Value

For Software Engineers

  • Learn memory safety concepts through practical examples
  • Understand ownership, borrowing, and lifetimes
  • See direct comparisons between C/C++ vulnerabilities and Rust solutions

For Security Professionals

  • Understand how Rust prevents common exploitation techniques
  • Evaluate memory-safe languages for security-critical systems
  • Assess compliance with CISA/FBI guidance

For Technical Managers

  • Understand business value of memory safety
  • Evaluate risk reduction from adopting Rust
  • Make informed decisions about technology migration

Use Cases in Financial Systems

Banking Systems

  • Prevent buffer overflows in transaction processing
  • Eliminate use-after-free in session management
  • Prevent data races in concurrent operations

Payment Processors

  • Safe string handling for card data
  • Memory-safe cryptographic implementations
  • Race-free concurrent payment processing

Forex Trading Platforms

  • Safe handling of market data feeds
  • Memory-safe order processing
  • Thread-safe account management

Security Impact

CVEs Prevented by Memory Safety

Common vulnerabilities that cannot occur in safe Rust:

  • CVE-2014-0160 (Heartbleed) - Buffer overflow
  • CVE-2017-5754 (Meltdown) - Memory safety issue
  • CVE-2018-4878 (Use-after-free in browsers)
  • Countless race conditions in concurrent systems

Microsoft Security Data

Microsoft research shows:

  • 70% of security vulnerabilities are memory safety issues
  • Rust eliminates this entire class of vulnerabilities
  • Significant reduction in security incidents

Testing

# Run all tests
cargo test

# Run tests with output
cargo test -- --nocapture

# Run specific module tests
cargo test buffer_overflow
cargo test use_after_free
cargo test data_race

Documentation

# Generate and open documentation
cargo doc --open

License

MIT License - See LICENSE file

Author

Tony Chuks Awunor

  • M.S. Computer Science (CGPA: 4.52/5.00)
  • EC-Council Certified Ethical Hacker v13 AI (CEH v13 AI)
  • EC-Council Certified SOC Analyst (CSA)
  • Specialization: Memory-safe cryptographic systems and financial security infrastructure
  • Research interests: Rust security implementations, threat detection, and vulnerability assessment
  • Published crates: rust-crypto-utils, rust-secure-logger, rust-threat-detector, rust-transaction-validator, rust-network-scanner, rust-memory-safety-examples

Contributing

Contributions welcome! Please open an issue or pull request with:

  • Additional memory safety examples
  • Real-world vulnerability comparisons
  • Educational improvements

Citation

If you use these examples in educational or research contexts, please cite:

Awunor, T.C. (2024). Rust Memory Safety Examples: Educational Demonstrations
of Memory-Safe Programming. https://github.com/guardsarm/rust-memory-safety-examples

References

Related Projects


Educational. Practical. Memory-safe. Implemented in Rust.

About

Educational examples demonstrating memory-safe programming patterns for critical infrastructure

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages