• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Rust日报2022-09-09 攻击 Firecracker

武飞扬头像
Rust语言中文社区
帮助2

攻击 Firecracker

来自 Grapl 的博客文章。在 Grapl,我们相信为了构建最好的防御系统,我们需要深入了解攻击者的行为。作为该目标的一部分,我们正在投资于进攻性安全研究。随时关注我们的博客,了解有关高风险漏洞、利用和高级威胁策略的新研究。

这篇博客文章介绍了如何攻击 Firecracker 中的漏洞,Firecracker 是一种用 Rust 编程语言编写的开源微型虚拟机 (microVM) 监视器。它是为在 AWS Lambda 中使用而开发的,这是一种无服务器软件即服务 (SaaS) 应用程序托管服务。Firecracker 也用于 AWS 的类似 Fargate 服务,该服务提供了一种运行容器的方法,而无需管理服务器以进行容器编排。由于多租户引入的风险,Firecracker 在设计时具有安全意识。

更多请看原文:https://www.graplsecurity.com/post/attacking-firecracker

由 tokio 运行时引起的奇怪的内存泄漏

这是 Reddit 上的一个讨论,发起者在代码中代码偶尔会在内存中删除并创建巨大的对象,并且发现它会有泄漏内存的现象。作者设法创建了一个具有类似内存问题的简单程序,如下:

  1.  
    use std::sync::Arc;
  2.  
    use std::time::Duration;
  3.  
    use tokio::sync::Mutex;
  4.  
     
  5.  
    pub struct Object {
  6.  
    pub a: Vec<u32>,
  7.  
    pub b: Vec<u32>,
  8.  
    pub c: u32,
  9.  
    pub d: u32,
  10.  
    pub e: u32,
  11.  
    pub f: Option<u128>
  12.  
    }
  13.  
     
  14.  
    #[allow(unused)]
  15.  
    pub struct ObjectHolder {
  16.  
    objects: Vec<Arc<Object>>
  17.  
    }
  18.  
     
  19.  
    impl ObjectHolder {
  20.  
    pub fn new() -> ObjectHolder {
  21.  
    let mut res = vec![];
  22.  
    for _ in 0..10_000_000 {
  23.  
    res.push(Arc::new(Object {
  24.  
    a: vec![12123, 123123, 12123, 12124, 1231512],
  25.  
    b: vec![12423, 234, 2342],
  26.  
    c: 423423,
  27.  
    d: 123123,
  28.  
    e: 12312,
  29.  
    f: Some(392932)
  30.  
    }))
  31.  
    }
  32.  
    return ObjectHolder {
  33.  
    objects: res
  34.  
    }
  35.  
    }
  36.  
    }
  37.  
     
  38.  
    pub struct Main {
  39.  
    holder: Arc<Mutex<ObjectHolder>>
  40.  
    }
  41.  
     
  42.  
    impl Main {
  43.  
    pub fn new() -> Arc<Main> {
  44.  
    return Arc::new(Main {
  45.  
    holder: Arc::new(Mutex::new(ObjectHolder::new()))
  46.  
    })
  47.  
    }
  48.  
     
  49.  
    pub async fn build_objects(&self) {
  50.  
    let mut holder = self.holder.lock().await;
  51.  
    *holder = ObjectHolder::new();
  52.  
    println!("BUILT NEW OBJECTS");
  53.  
    }
  54.  
    }
  55.  
     
  56.  
    #[tokio::main]
  57.  
    async fn main() {
  58.  
     
  59.  
    let main = Main::new();
  60.  
     
  61.  
    let cnt_iter = 100;
  62.  
     
  63.  
    tokio::spawn(async move {
  64.  
    for _ in 0..cnt_iter {
  65.  
    println!("STARTIGN NEW CYCLE");
  66.  
    main.build_objects().await;
  67.  
     
  68.  
    (0..100).for_each(|_| {
  69.  
    tokio::spawn(async move {
  70.  
    return Some(0)
  71.  
    });
  72.  
    });
  73.  
     
  74.  
    println!("WAITING 10 SECONDS");
  75.  
    tokio::time::sleep(Duration::from_secs(10)).await;
  76.  
    }
  77.  
    }).await.unwrap();
  78.  
    }
学新通

参与讨论请看:https://www.reddit.com/r/rust/comments/x9bq8k/bizarre_memory_leak_caused_by_tokio_runtime/

serde-numpy 项目

serde-numpy 是一个用于将 JSON 直接反序列化为 numpy 数组的库,主要使用 rust 实现。

项目地址:https://github.com/wnorcbrown/serde-numpy


From 日报小组 @Jancd

社区学习交流平台订阅:

  • Rust.cc论坛: 支持rss

  • 微信公众号:Rust语言学习交流

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhhifagb
系列文章
更多 icon
同类精品
更多 icon
继续加载