jjzjj

分布式系统安全之协调类和可攻击性

铸盾安全 2023-03-28 原文

中断的一般类别

分布式系统中的攻击面涉及资源,通信,接口和/或数据的中断,这些中断要么损害资源可用性,要么破坏将资源连接到的通信层影响整个系统及其服务的机密性、可用性或完整性。中断可能是由于设计不当、操作条件或蓄意攻击造成的。资源泄露或中断构成了基本攻击目标。但是,分布式系统的功能来自分布式资源之间的交互。如第1.2节所述,分布式系统中的资源和服务(包括复制管理)主要通过通信基础结构进行链接。这些跨越了直接消息交换的范围,或通过中间件架构(如发布-订阅或基于事件的触发等)进行。

存在许多不同的术语,以涵盖崩溃、遗漏、时间、价值中断、欺骗、病毒、活板门等操作和故意干扰的范围。

由于分布式系统主要依靠消息传递进行数据传输和协调,因此我们将扰动分组在消息传递级别6。故意使用术语“扰动或中断”,因为异常操作可能是由操作问题(可靠性)或恶意意图(安全性)引起的。这些扰动对系统操作的表现会导致偏离系统的指定行为。作为访问控制、数据分发、接口1.2节中提到的漏洞的补充,通信级扰动可以大致分为:

1.基于时间:这包括消息的遗漏、早期、延迟或无序消息传递。崩溃和拒绝服务也属于这一组,因为它们通常表现为通过阻止对通信通道或资源的访问来中断消息的正确临时传递。

2.基于价值/信息:欺骗攻击、模仿、复制、信息泄露(如隐蔽通道攻击或侧信道攻击)以及内容操纵攻击大致属于这一类。对消息内容的操纵表现为拜占庭行为。仅当一组资源使用交换消息来构建其系统的全局视图时,此攻击才可行。恶意实体可以向不同的资源组发送故意调制的信息(例如,正确和不正确值的混合),从而导致系统状态分区视图。因此,基于不同节点接收的不同值,各个节点无法构成系统状态的“一致”和正确视图。违反一致性的程度(强–所有人对价值和秩序的完全一致–弱、部分、最终)构成了破坏的程度。底层交易服务的性质(例如,区块链中的分布式账本)决定了违反功能的类型。与漏洞组相关,拜占庭攻击可能会滥用访问控制、消息传递和协调服务或数据本身(病毒、破坏移动代码,蠕虫)来危害系统。

应该注意的是,扰动还包括持久性的性质,即扰动的持续时间可以是短暂的、偶发的、间歇性的或永久性的。此外,攻击通常需要多个同时发生的事件,这些事件涉及时间、值、持久性和分散位置的组合,这可能是由于多个攻击实体之间的串通。

攻击和影响

在这个一般背景下,我们现在详细介绍了基于协调模式(资源和服务协调)的分布式系统的两类突出类。这也将形成考虑攻击的安全表现形式的系统分组。

我们使用经典的CIA(机密性、完整性和可用性)术语,尽管这些术语的含义通常因系统和服务类型而异。对于每个类,其功能规范决定了攻击的类型以及由此产生的对服务交付产生不利影响的危害。

如第1.2节所述,分布式系统的威胁面包括对资源、准入控制、通信架构、协调机制和数据的攻击。同样,攻击旨在颠覆资源、服务和底层协调架构功能背后的假设。

在下面的小节中,我们将枚举资源/基础结构和服务/应用程序类协调的一些攻击场景。鉴于基于资源的类型和服务的分布式系统种类繁多,这些示例的目的只是说明一些潜在的场景。还值得强调的是,资源攻击通常不会损害资源本身,但主要影响在资源上执行的服务。

有关分布式系统安全之协调类和可攻击性的更多相关文章

  1. ruby - 如何使用 Ruby aws/s3 Gem 生成安全 URL 以从 s3 下载文件 - 2

    我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A

  2. ruby - 分布式事务和队列,ruby,erlang,scala - 2

    我有一个涉及多台机器、消息队列和事务的问题。因此,例如用户点击网页,点击将消息发送到另一台机器,该机器将付款添加到用户的帐户。每秒可能有数千次点击。事务的所有方面都应该是容错的。我以前从未遇到过这样的事情,但一些阅读表明这是一个众所周知的问题。所以我的问题。我假设安全的方法是使用两阶段提交,但协议(protocol)是阻塞的,所以我不会获得所需的性能,我是否正确?我通常写Ruby,但似乎Redis之类的数据库和Rescue、RabbitMQ等消息队列系统对我的帮助不大——即使我实现某种两阶段提交,如果Redis崩溃,数据也会丢失,因为它本质上只是内存。所有这些让我开始关注erlang和

  3. ruby - 如何安全地删除文件? - 2

    在Ruby中是否有Gem或安全删除文件的方法?我想避免系统上可能不存在的外部程序。“安全删除”指的是覆盖文件内容。 最佳答案 如果您使用的是*nix,一个很好的方法是使用exec/open3/open4调用shred:`shred-fxuz#{filename}`http://www.gnu.org/s/coreutils/manual/html_node/shred-invocation.html检查这个类似的帖子:Writingafileshredderinpythonorruby?

  4. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  5. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  6. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  7. ruby - 用 YAML.load 解析 json 安全吗? - 2

    我正在使用ruby2.1.0我有一个json文件。例如:test.json{"item":[{"apple":1},{"banana":2}]}用YAML.load加载这个文件安全吗?YAML.load(File.read('test.json'))我正在尝试加载一个json或yaml格式的文件。 最佳答案 YAML可以加载JSONYAML.load('{"something":"test","other":4}')=>{"something"=>"test","other"=>4}JSON将无法加载YAML。JSON.load("

  8. ruby - 在没有基准或时间的情况下用 Ruby 测量用户时间或系统时间 - 2

    因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实

  9. ruby-on-rails - 安全地显示使用回形针 gem 上传的图像 - 2

    默认情况下:回形针gem将所有附件存储在公共(public)目录中。出于安全原因,我不想将附件存储在公共(public)目录中,所以我将它们保存在应用程序根目录的uploads目录中:classPost我没有指定url选项,因为我不希望每个图像附件都有一个url。如果指定了url:那么拥有该url的任何人都可以访问该图像。这是不安全的。在user#show页面中:我想实际显示图像。如果我使用所有回形针默认设置,那么我可以这样做,因为图像将在公共(public)目录中并且图像将具有一个url:Someimage:看来,如果我将图像附件保存在公共(public)目录之外并且不指定url(同

  10. ruby - 以毫秒为单位获取当前系统时间 - 2

    在Ruby中,以毫秒为单位获取自纪元(1970)以来的当前系统时间的正确方法是什么?我试过了Time.now.to_i,好像不是我想要的结果。我需要结果显示毫秒并且使用long类型,而不是float或double。 最佳答案 (Time.now.to_f*1000).to_iTime.now.to_f显示包含十进制数字的时间。要获得毫秒数,只需将时间乘以1000。 关于ruby-以毫秒为单位获取当前系统时间,我们在StackOverflow上找到一个类似的问题:

随机推荐