安全黑客(2011)

2020-12-27 07:31:29

啊,计算机世界。多亏了字节和字节的奇妙世界,我们可以尝试使用任何应用程序,文件,驱动程序甚至核心操作系统。将它们撕开,进行更改,将它们放在一起,如果不起作用,请重试。最糟糕的是,您必须擦拭硬盘并重新开始。如果您以某种方式设法通过坏软件纯粹破坏了计算机,则认为这是设计问题,是真正的壮举。试想一下:还有什么其他职业或爱好可以让您根据自己的意愿进行尽可能多的实验并犯下很多错误,而如果您做错了什么也不必花一分钱?

不幸的是,情况已经改变。自具有可升级固件的嵌入式设备问世以来,人们一直在尝试对其进行修改和修改。这些设备通常比其较大的较老的兄弟姐妹的弹性要差很多。我们每天使用的许多新的闪亮小工具在内部都很脆弱,轻微的软件故障会使它们失效,成为“砖头”。

这是为从事嵌入式设备的系统固件的开发人员和黑客提供的指南。

迈入安全黑客的第一步是对您的用户,尤其是他们的硬件形成深刻的赞赏。大多数用户一无所知,完全依靠您来指导他们获得安全的结果。尽管每个人发布的骇客都没有明示或暗示的担保,但这只是掩饰。请记住,如果用户使设备无法操作,通常会完全迷失他们,并且与您不同,他们可能没有备份计划。

开始对其中的每个硬件都赞赏的一种好方法是深切关心自己的硬件。如果您是一名预算很低的黑客,那么您可能已经拥有了这一预算,因为您希望尽可能长时间地保持设备正常运转,以避免将辛苦赚来的钱花在新设备上。如果您必须对其进行紧急维修或闪烁,请每次都注意。您可能不得不花费几个小时将闪光灯连接到设备。普通用户可能一周没有机会做到这一点。而且,如果您有资源购买一些用于测试的设备,请记住,大多数用户没有那么奢侈。一旦制定了恢复计划,可能会大胆尝试并进行试验,但是请记住,您犯的每个错误都是一个错误,可能会滑倒并最终影响用户。如果您不遗余力地避免自己的硬件变砖,那么将大大减少出现严重错误并发布到发行版本的机会。

如果您仍然决定不关心您的用户,请在产品文档中明确表明他们完全是自己的用户,并且您不关心用户在运行工具时会发生什么,也没有尝试过确保所有人安全。他们应该知道。

在开始使用对设备进行永久更改的软件之前,您应该对它的操作有足够的了解。对引导过程进行反向工程。了解固件的哪些部分取决于什么。了解哪些组件对于引导至关重要,以及可用的恢复模式(如果有)。如果您是负责在设备上执行大多数逆向工程工作的黑客,那么您可能已经了解很多。如果不是,请阅读文档,尝试理解所有内容,然后与实际的人交谈。解释你的想法。他们可能会为您提供许多有用的安全提示。处理侵入性较小的骇客,这将加深您对系统的了解,然后再进行可能最终陷入困境的高风险骇客。最重要的是,与也在该设备上工作的其他人一起工作。每一位从事固件黑客工作的知识渊博的人,其获得安全保护的机会都会增加。

Warning: Can only detect less than 5000 characters

这并不意味着您必须尝试设想每种可能的情况。用户非常擅长创造性地破坏程序。但是,至少,要确保他们在不花大力气的情况下不会意外破坏其系统。

您应该强烈考虑为您的用户提供备份选项,甚至自动备份关键信息。有时,拥有备份可能意味着可以付出相当大的努力才能修复的设备(例如,硬件更新程序)与永远敬酒的设备(甚至制造商都不希望修理)之间的差异。如果关键信息量很小,那么值得付出努力,并确保每当有危险的操作发生时,它都会自动备份。测试它,以确保保存了正确的信息。并且不要忘记告诉您的用户他们应该将备份文件保存在安全的地方!

即使您的设备通常是“防砖”的,因为它具有允许闪烁的ROM引导程序,备份仍然非常重要。许多设备会在固件旁边存储每个设备的唯一数据,并且丢失这些信息可能会导致混乱的修复过程,涉及大量的手动猜测,或者更糟的是,即使从技术上讲,这台设备也永远无法按预期工作(例如关键校准数据或设备私钥丢失)。该信息通常很小。把它备份!您永远都不知道一个愚蠢的错误何时会最终遍及整个错误。

理想情况下,您已尽全力确保应用程序安全。但是,意料之外的事情会发生并且确实发生,并且有时您将没有资源来执行足够全面的测试。因此,请几个您可以信任的人和愿意冒险的人来进行封闭测试。不要发布公开测试版!人们太急躁了,公开测试版本质上就是发行的代名词。人们会忽略任何附带的警告。您将需要值得信赖的人,最好是具有一定的技术知识和技能,以便在致命的问题发生之前就发现它,并有机会解决该问题。寻找有硬件经验的人,如果事情出了错,他们可以组装某种闪存(JTAG,NOR,等等)。

如果您的应用程序在某些设备上出现错误,但没有造成任何危害,请给自己一个支持:恭喜,您已将测试仪从一块砖头上救了下来。如果没有,那么您就用砖砌了测试仪的设备,请给自己一个后盾:从砖头救了数十,数百或数千个潜在的最终用户。

您还应该确保测试涵盖了所有基础。如果您的设备经历了多次硬件修订,尤其是那些更改完全与设备的固件有关(例如,不同的闪存芯片供应商,甚至是完全不同的固件存储设备),则应在所有这些硬件上进行测试。如果您不知道,请四处看看。有很多人愿意为您提供PCB图片和芯片部件号,以帮助您识别任何重要的变化。如果您没有考虑整个硬件版本,并且黑客无法按预期进行工作,则可以保证您的用户中有很大一部分(可能成千上万)会阻塞他们的设备。

我希望本文能说服您在编写嵌入式设备的固件hack时格外小心。如果您遵循其中的指南,则可以节省金钱,为用户节省金钱,并因强大而可靠的黑客行为而享有声誉。这些是Team Twiizers在开发HackMii Installer时遵循的先前未成文的原则,到目前为止,我们还没有听说过120万次安装中的一块砖。但最终,是否遵循它们完全取决于您。这值得么?你决定。