手机版

百科生活 投稿

csdn泄露数据,csdn泄漏事件(泄露多达190GB文件)

百科 2025-12-29 04:29:08 投稿 阅读:7549次

关于【csdn泄露数据】:csdn泄露数据(个人信息泄露处理方法),今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。

  • 内容导航:
  • 1、csdn泄露数据(个人信息泄露处理方法)
  • 2、英伟达代码签名证书遭窃取?三星也未能幸免,泄露多达190GB文件

1、csdn泄露数据(个人信息泄露处理方法)

对于众多 Android 程序员而言,在需求与应用性能之间,主要精力都会放到新需求的开发。随着项目复杂度的增加,应用性能越来越低,出现各种问题。程序员们奔波于各种“救火现场”,疲于奔命。本文作者 Aritra Roy 分享了自己在 Android 应用程序开发过程中所遇以及思考,针对内存泄漏提炼出一套可以应用于开发中的方法论。也许会让你的开发效率事半功倍。

作者 | Aritra Roy,Android 开发者

译者 | 罗昭成,责编 | 唐小引

封图 | CSDN 付费下载自东方 IC

出品 | CSDN(ID:CSDNnews)

以下为译文:

我们都知道,写一个 Android 的应用很容易,但是要写一个高性能的应用可就不容易了。以我的个人经验来说,在 App 的开发过程中,主要的精力都会放在新功能、新模块、新组件的开发上。

开发过程中,看得见的 UI 比看不见的性能更能吸引我们的目光。所以我强制自己将“优化应用程序(如内存泄漏)”的优先级提高,并养成习惯。

长期以来,不关注性能,带来了很多的技术债。经过一年多的努力调整, 比起一年前,我有很多的心得体会。

对于很多开发者来说,内存泄漏都是一个老大难的问题。关于处理内存泄漏,你有可能会觉得太难,又或是太费时,又或者是觉得完全没有意义。但我要告诉你的是,事实并非如此。当你开始处理这些问题的时候,你会发现,这感觉超级棒。

在本篇文章中,我会以尽可能简单的方式讲解这些问题,即使你是一个初学者,也可以学习到如何构建一个高质量、高性能的应用。

垃圾回收

Java 是一个非常强大的语言。在 Android 中,我们几乎不会像 C / C++ 那样,手动分配和释放内存。因为 Java 会自动清理内存。

让我们来思考一个问题,如果 Java 内建的垃圾回收系统可以在我们不需要的时候自动回收内存,那我们为什么还需要关心内存呢?是因为垃圾回收机制不够完善吗?

当然不是,Java 垃圾回收机制当然是完善的。垃圾回收机制是可以正常工作,但是,如果我们的应用程序出现 Bug, 导致垃圾回收器不能正常检查出不需要的内存块,就会导致问题。

总体来说,是我们自己的代码错误导致垃圾回收不可用。不可否认,垃圾回收机制是 Java 最伟大的设计之一。

关于垃圾回收器

在处理内存问题之前,你需要了解垃圾回收器的工作原理。它的概念非常简单,但在它背后,有着极其复杂的逻辑。但是你也别担心,我们也只关心一些简单的概念。

如图所示,Android 或者 Java 应用程序都有一个起点,从对象的初始化,并且调用方法。我们可以认为,这个点就是图中的 “GC Roots”。有一些对象引用被 GC Roots 直接持有,剩下的则由它们自己创建并持有。

如此,整个引用链构成了内存树。垃圾回收器从 GC roots 开始,直接或间接的链接着其它的对象。当整个遍历结束,还有一些不能被访问到的对象,就是变成了垃圾,这些对象就会被垃圾回收器回收。

内存泄漏

到现在,你已经知道了垃圾回收的概念,也知道了垃圾回收在 Android 中是如何管理内存的。下面,我们将深入研究一下内存泄漏。

简单来说,内存泄漏是指你的对象已经使用结束,但是它却不能被释放掉。每个对象在完成它自己的生命周期过后,都需要从内存中清理出来。但是如果一个对象被另一个对象直接或间接的持有,垃圾回收器不能检查出它已经使用结束。朋友们,这样子就导致了内存泄漏。

值得庆幸的是,我们并不需要太担心所有的内存泄漏,因为并不是所有的内存泄漏都是有害的。有一些内存泄漏是无关痛痒(只泄漏几 KB 的内存),并且,在 Android Framwork 层也会有一些内存泄漏,但是你并不需要去修复,因为它们对 App 的性能影响微乎其微,你可以忽略。

但是有一些会引起 App 崩溃, 或者严重卡顿。这些都是需要你时刻注意的。

为什么要解决内存泄漏?

没有人会想使用一个又慢又占内存的应用。如果使用一段时间就会崩溃,你的用户也会“崩溃”掉,如果长时间出现这样子的问题,你的用户会毫不犹豫的卸载掉你的应用,并且再也不会使用它。

如果你的应用中存在内存泄漏,垃圾回收器不能回收不使用的内存,随着用户使用时间的增长,内存的占用会越来越多。如此下去,当系统不能在给它分配更多内存的时候,就会导致 OutOfMemoryError, 然后应用程序会崩溃掉。

垃圾回收有利有弊,垃圾回收是一庞大的系统,在应用中,尽可能少的让垃圾回收器运行,这样对应用体验会更好。

随着你的应用使用的堆内存逐渐增加,Short GC 就会触发,来保证立即清理无用对象。现在这些快速清理内存的 GC 运行在不同的线程中,这些 GC 不会导致你的应用变慢。

但是如果你的应用中存在严重的内存泄漏,Short GC 没有办法回收内存,并且占用内存持续增加,这将会导致 Larger GC 被触发。它会将整个应用程序挂起,阻塞大概 50~100ms,这会导致应用程序变慢并且有可能不能使用。

修复内存泄漏,减少对 App 的影响,给用户提供更好的体验。

如何发现内存泄漏?

现在,你已经认识到,你需要修复隐藏在你 App 中的内存泄漏。但是,我们如何才能找到它们呢?

Android Studio 为我们提供了一个非常强大的工具:Monitors。

通过它,你能看到网络、CPU、GPU、内存的使用情况。

在调试运行 App 的时候,要密切关注内存监视器。内存泄漏的第一个现象就是,在使用的过程中,内存一直增加,不能减少,即使你把 APP 退到后台也不能释放。内存分配监视器能够清楚的看到不同对象所占用的内存,可以清楚的知道哪个对象占用内存较多,需要处理。

但是,它本身还不够,它需要你指定时间,然后转存出对应的内存堆。这是一个很无趣的工作。

幸运的是,我们现在已经有更好的方式来实现。LeakCanary, 一个和 App 一起运行的库,它会在内存泄漏的时候,转存出内存信息,然后给我们发送一个通知并给我们一个有用的栈信息。

常见的内存泄漏

从我的经验来看,有很多相似且经常出现内存泄漏的问题,你在你每天的开发中,都有可能会遇到它们。一但你清楚了它们发生的时间、地点、原因 ,你就可以很轻松的修复它们。

  • 未取消的 Listener

很多时候,你在 Activity/Fragment 中注册了一个 Listener, 但是忘记取消注册了。如果你的运气不好,它很可能会引起一个严重的内存泄漏问题。一般来说,这些 Listener 的 注册与取消注册是同步出现的,在你使用的时候需要注册,在不使用的时候需要取消注册。

举个例子,当我们的应用程序需要获取定位的时候,需要使用 LocationManager,你会从系统服务中拿到它,并且给其设置一个地理位置更新的回调:

private void registerLocationUpdats{
mManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);mManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,TimeUnit.MINUTES.toMillis(1),
100,
this);
}

在代码中,可以看出来,使用了 Activity 自己来实现了地理位置更新的回调。LocationManager 会持有这个回调的引用。当你退出了这个页面,Android 系统会调用 data-mpa-category="正文" data-mpa-template-id="1440" style='max-width: 100%;font-family: -apple-system-font, BlinkMacSystemFont, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;white-space: normal;background-color: rgb(255, 255, 255);box-sizing: border-box !important;overflow-wrap: break-word !important;'>

【CSDN 编者按】2022年2月26日,英伟达遭到黑客组织Lapsus$攻击,大量员工信息以及近1TB的数据被窃取。Lapsus$要求英伟达公布所有产品上限制显卡挖矿性能的LHR (Lite Hash Rate),否则会将所有数据公开。由于英伟达并未做出任何举措,Lapsus$泄露了大量的员工信息和多达20GB的文件存档。除此之外,泄露的内容中还包括两个被盗的代码签名证书,用于英伟达开发人员签署驱动程序和可执行文件。


整理 | 郭露

出品 | CSDN(ID:CSDNnews)


csdn泄露数据,csdn泄漏事件(泄露多达190GB文件)

英伟达代码签名证书遭泄露


在Lapsus$泄露英伟达的代码签名证书后, 安全研究人员发现这些证书被用于签署恶意软件和使用其他工具。

根据上传到VirusTotal恶意软件扫描服务的样本,被盗证书被用于签署各种黑客工具,例如 Cobalt Strike信标和Mimikatz等等。

例如,其中一名用户使用该证书对Quasar远程访问木马VirusTotal签名,而有的还使用该证书对Windows驱动程序VirusTotal进行签名。

csdn泄露数据,csdn泄漏事件(泄露多达190GB文件)

Quasar RAT由英伟达证书签名(图源自BleepingComputer)

尽管两个被盗的证书均已过期,但Windows仍允许将使用证书签名的驱动程序加载到操作系统中。

因此,如果使用这些被盗的证书,使用者就能使他们的恶意驱动程序看起来像合法的程序并能够由Windows加载。

由于英伟达对此一直没有最初回应,3月4日,黑客发出最后通牒:Windows、Linux和macOS系统的GPU驱动必须在今天内开源,否则将公开全部的1TB机密数据。


csdn泄露数据,csdn泄漏事件(泄露多达190GB文件)

三星也未能幸免?泄露多达190GB文件


不仅如此,据BleepingComputer报道,当天Lapsus$还公布了大量三星的机密数据。其中包括:

  • 三星TrustZone环境中安装的每个受信任小程序 (TA) 的源代码,用于硬件加密、二进制加密、访问控制等;

  • 所有生物特征解锁操作的算法;

  • 所有最新三星设备的引导加载程序源代码;

  • 来自高通的机密源代码;

  • 三星激活服务器的源代码;

  • 用于授权和验证三星账户的技术的完整源代码,包括API和服务。

Lapsus$将窃取数据拆分为三个压缩文件,这些文件增加了近 190GB,并以torrent形式提供,其中包括400多项内容。Lapsus$还表示,将提供更多服务器以提高下载速度。

csdn泄露数据,csdn泄漏事件(泄露多达190GB文件)

图源自BleepingComputer

同时Lapsus$还对文件夹中的每个文档的内容进行了简要说明:

  • 第1部分为有关Security/Defense/Knox/Bootloader/TrustedApps以及其他项目的源代码和相关数据的转储;

  • 第2部分为有关设备安全和加密的源代码及其相关数据的转储;

  • 第3部分包含三星Github的各种存储库:移动防御工程、三星账户后端、三星通行证后端/前端和SES(Bixby、Smartthings、商店)。

若上述消息准确,三星将遭受重大数据泄露,公司可能面临巨大损害。目前我们尚不清楚Lapsus$是否向三星索要赎金,我们也将继续跟进具体情况,敬请期待。

【参考资料】

https://www.bleepingcomputer.com/news/security/hackers-leak-190gb-of-alleged-samsung-data-source-code/

https://www.bleepingcomputer.com/news/security/malware-now-using-nvidias-stolen-code-signing-certificates/

https://www.bleepingcomputer.com/news/security/hackers-to-nvidia-remove-mining-cap-or-we-leak-hardware-data/

—END—

《新程序员001-004》全面上市,对话世界级大师,报道中国IT行业创新创造



本文关键词:csdn信息泄露,信息泄露漏洞挖掘,数据泄露的常见原因,数据泄露解决方案,CSDN密码泄露。这就是关于《csdn泄露数据,csdn泄漏事件(泄露多达190GB文件)》的所有内容,希望对您能有所帮助!

本文链接:https://bk.89qw.com/a-290713

最近发表
网站分类