前几天参加了Security Camp 2022 National Convention,所以我想发布Web Security 课程的应用作业。
什么是安全营?
安全营是信息技术振兴机构(IPA)的项目之一,旨在发现和培养能够成为日本未来先进IT人才的优秀人才。
当今世界,信息安全威胁呈上升趋势。
该项目为对安全领域感兴趣并希望在未来在该领域发挥积极作用的年轻人提供学习先进信息安全技术的机会。我们还提供提高道德、法律合规意识、安全意识、专业意识和自主学习意识的机会。
该项目自2004年启动以来,2021年安全营共培养了989名IT与信息安全人才,前景广阔。被安防行业和各界高度评价为有利于信息化高级人才发展的盛会。
引用:https://www.ipa.go.jp/jinzai/camp/2022/zenkoku2022_about.html预挑战
Q.1(申请动机)
在“网络安全课”的讲座中,请告诉我们您想参加的那个(或不止一个)讲座中的“您想学习什么以及为什么”。特别是关于“你为什么要学习?”部分,我们欢迎您的回答能传达您对您正在考虑申请的问题和您感兴趣的领域的认识。
■ A.1
・创建和学习网络浏览器
作为一个用户和开发者,我想知道的不仅是我日常使用的浏览器的基本原理和机制,还想知道攻击发生时会造成巨大破坏或造成大量破坏的浏览器的方法. 我想通过浏览器开发来学习它们。
我想了解以前的 Web 浏览器的基础知识和机制有三个原因。尤其是前端,框架之类的工具很快就过时了,所以我觉得学习通用机制是非常有意义的。第二点,网页浏览器虽然是方便的工具,但你可以在不了解基础和机制的情况下使用它们,那么当出现错误时,是应用程序的逻辑问题还是浏览器的机制问题?想学习处理这种情况的网络浏览器的基础知识和机制,因为我无法将它们分开。关于第三点,当我开始学习HTML/CSS时,对浏览器的机制产生了兴趣,所以我学习了渲染过程(DOM树创建→CSSOM树创建→DOM树和CSSOM树组合→显示目标大小关于从相对大小转换为绝对大小→显示),但是如果我在研究其他感兴趣的领域,我就没有时间,也无法学习。这就是为什么我想借此机会学习。
关于我之所以想了解网络浏览器相关的造成大量破坏或大量破坏的攻击方法,我对浏览器安全只有基本的了解,对安全的了解比较多。因为我想穿上现在我已经能够实现Web应用程序的功能,我希望能够提供高质量的产品作为下一步。而一个高质量的web应用的要素之一就是没有漏洞,如果发现漏洞,就可以理解机制并进行处理。想要学习
我想参加这个讲座是因为我相信我可以通过Web浏览器开发的经验学到以上的东西。・针对微服务/分布式单体架构的攻击方法
想了解在开发和运营采用微服务/分布式单体架构的产品时经常出现的问题的攻击方法和对策,特别是关于身份验证和授权的问题。
通过实习期间的工作经验,我能够全面了解单体架构中的安全基础知识。另一方面,我目前对微服务很感兴趣,所以我个人正在开发一个使用微服务的web应用程序,我不知道,也很担心如何在每个服务中管理和实现认证和授权,尤其是对于使用权。比如我怕某个访问本来无法访问的服务可以通过另一个服务访问,我不知道这个问题的解决方法,所以我想知道这种问题的解决方法。Q.2(过往经历)
请尽可能具体地描述您在以下方面的经验:
(1) Web应用程序设计/开发经验(*任何琐碎经验都可以)
(2)一般编程经验(*请告诉我们您使用过的语言及其用途。层无所谓)
(3) 使用容器技术的经验
(4) 有搭建和使用CI/CD环境的经验
该问题询问“提交此申请时的经验”。看到这个申请的时候有没有经验也没关系,欢迎大家边填写这个申请边学习。■ A.2
(1)就业类型实习生
- 五重奏公司
- 使用 HTML、CSS/Bootstrap、JavaScript/jQuery 进行 Web 前端开发
- Web后端开发使用PHP/CakePHP2、MySQL(包括DB设计)
- var Inc.
- 使用 Go、GraphQL、MySQL 进行 Web 后端开发
(由于是从0开始开发的,所以包括文件等架构和schema设计)- 使用 Python3/Django、MySQL 进行 Web 后端开发
(由于是从0开发的,包括文件、端点、DB设计等架构)- 使用 Go 进行 Web 后端开发(包括 API 设计)
- 使用 TypeScript/React 进行 Web 前端开发
- JX Press, Inc.
- 使用 TypeScript/Next 进行 Web 前端开发
- 使用 Python3/Django 进行 Web 后端开发
黑客马拉松式的实习
- jig.jp
- 使用 JavaScript/jQuery 进行 Web 前端开发
- 使用 JavaScript / Deno 进行 Web 后端开发(包括 API 设计)
其他
- 大学课堂使用 Ruby / Ruby on Rails、SQLite 开发 Web 应用程序
(包括端点和数据库设计)- 使用 Go、GraphQL、gRPC、MySQL 进行个人开发的 Web 后端开发
(包括文件架构、架构、数据库设计)- 使用 Python3/Django、MySQL、JavaScript/jQuery 进行个人开发的 Web 应用程序开发
(包括端点和数据库设计)- Web后端开发使用Python3/Django、MySQL循环开发
(2)
- Python3
- Web 后端开发 (Django)
- 桌面应用程序开发(tkinter)
- 竞争性编程
- 游戏开发(像素)
- 数据分析(numpy、pandas、matplotlib)
- PHP
- Web 后端开发 (CakePHP)
- JavaScript/TypeScript
- Web前端开发
- 网页后端开发
- C
- 用于技术学院课程
- C#
- 游戏开发
- 去
- 网页后端开发
- 德山工业大学自己的汇编程序/机器语言
- 用于技术学院课程
- Java
- 用于技术学院课程
- 游戏开发
- 红宝石
- 用于大学课程
- 网页后端开发
(3)
- 使用Docker/docker-compose进行就业实习、个人发展、圈子发展的经验
- 使用 Docker 消除了与商业环境的差异
(4)
- 我从未设置过 CI/CD,但是当有根据部署目标环境更改环境变量的请求时,我有更改正在运行的 CI/CD 设置的经验
- 作为实习生,有使用 GitHub Actions 和 GitLab CI/CD 等工具的经验
- 作为实习生,有修改部署目的地读取的env文件的经验
Q.3(关于您的印象和兴趣)
如果有与创建和提供您当前感兴趣的 Web 相关服务或产品相关的技术,请随时解释。只要技术与Web有一点关联,更接近硬件领域还是更接近软件领域都无所谓。
■ A.3
[gRPC]
作为与创建和提供 Web 相关服务产品相关的技术,我目前感兴趣的技术是 gRPC。原因是我觉得它是一种使用JSON格式解决现有HTTP 1.1和REST通信中出现的各种问题的技术。gRPC 是 Google 开发的 RPC 框架,是客户端和服务器之间的通信协议。此外,作为一个主要功能,它主要使用 Protocol Buffers 和 HTTP2,因此您可以享受它们的好处。顺便说一句,gRPC 中的 g 因版本不同而有不同的含义,而不是 Google。此外,gRPC 角色是 Golden Retriever 的 PanCakes。
https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md现有技术的一个问题是很难掌握哪些端点正在相互通信。原因可能是微服务的普及以及需要支持各种客户端设备(Web、iOS、Android 等)。因此,如果使用Protocol Buffers,就可以将通信时的数据内容写入文件中,并以此为基础生成代码,这样就可以将文件中写入的内容与实际环境中运行的通信同步。数据定义文件与通信内容同步,数据定义文件可直接作为文件使用。此外,由于在定义通信内容时指定了类型,因此不会像JSON格式那样丢失类型,也不会通过预测分配类型,因此可以确保可维护性。此外,它非常易于使用,因为它可以通过单个命令从定义数据的文件中自动生成一定数量的代码。
关于使用HTTP2的优势,关于Protocol Buffers,首先可以说的是,由于是基于二进制的通信,相比HTTP1.1等基于文本的通信,可以减少数据量。此外,由于标准允许报头压缩,可以减少第一次连接后的开销,这也可以减少通信过程中的数据量。并且通过减少这两个点的数据量,可以比 HTTP 1.1 更有效地执行双向通信。最后,在服务器端,为一个 TCP 连接创建多个虚拟连接,从而减少服务器的负载。
REST 和 GraqhQL 是访问 gRPC 等其他服务的技术示例,但在实现它们时,由于库的特性,重要的是要了解通信,例如描述通信结束时要执行的处理。是需要做的。另一方面,在 gRPC 的情况下,由于 gRPC 是基于 RPC 的技术,因此可以像函数一样调用其他服务,因此可以在没有通信意识的情况下作为单个函数实现。
Q.4(与Web 1相关的漏洞和攻击技术的验证)
用您自己的话解释什么是跨站点请求伪造 (CSRF),以及它在现代 Web 浏览器和 Web 应用程序框架中的工作原理。如果您的论点基于相关规范的行为或实际实施示例,请注明出处。
■ A.4
概述
作为攻击的概述,它是一种攻击,它通过访问攻击者准备的链接或站点,向受害者登录的目标服务发送不适当的请求。此外,作为一种常见的攻击方法,还有一种方法是通过放置隐藏表单并将表单提交功能设置为在页面加载时执行的onload来访问目标链接。另外,可能会在图片标签的链接中设置第一眼难以理解的攻击链接。当以这种方式配置时,浏览器会加载看起来是图像文件的链接,以便从 html 文件中呈现它们,并且用户在不知不觉中访问了攻击链接。
结构体
web应用通过cookie中存储的JWT和session ID判断谁访问过,只处理endpoint和input值,无法判断是否访问过。因此,进行 CSRF 攻击的攻击者利用这种机制,通过让攻击目标访问攻击链路,使用 JWT 或会话 ID 冒充目标。
出现漏洞的原因有两个。
- 可以在表单操作中指定任何域 URL
- cookie 中存储的会话 ID 会自动发送到目标站点
关于1.,即使从陷阱等站点也可以向目标站点发送请求。此外,关于 2.,即使是通过陷阱的请求也会发送带有 JWT 和会话 ID 的 cookie,因此攻击请求是在经过身份验证的状态下发送的。措施
一个典型的对策是嵌入一个 CSRF 令牌。比如在Django这个Python web框架中,在创建表单的时候需要写一个叫csrf_token的过程,通过判断请求是否合适来判断请求是否合适。https://docs.djangoproject.com/en/4.0/ref/csrf/
其他对策包括要求用户输入密码以确定用户是否打算处理,或者服务是否有固定的页面转换顺序,从不遵循页面转换顺序的页面访问是可疑的。因此,还有一个方法来检查基于referer的页面转换顺序是否正确。另外,虽然不是直接的对策,但是为了在重要的处理发生时能够迅速发现损害,需要实现在执行重要处理时向用户发送邮件的处理。因此,将cookie的过期时间设置为最小必要长度就是一个例子。Q.7(Web服务和产品开发系统的检查)
假设您受托设计和实施作为一个团队开发 Web 应用程序的组织和流程,以及支持它的技术基础架构。那时,尽可能多地列出你认为应该考虑安全性的点,并说明原因。
回答的时候可以参考一些OWASP、NIST等提供的文档(如OWASP SAMM、NIST SSDF等),而不用自己想一想。此外,如果您构建了一些特定的东西,而不是仅仅考虑要注意什么,请在您对这个问题的回答中包含它。
■ A.7
- 使用 GitHub 等服务管理版本时,将公共设置设置为私有
如果存储库是公开的,不参与开发的恶意第三方可以查看代码并找出漏洞存在的位置和类型,并且有可能利用该漏洞进行攻击。此外,如果任务由问题管理,则也可能会在此处发现漏洞,具体取决于错误报告的内容。- 进行漏洞评估和渗透测试
通过执行漏洞诊断,可以全面调查系统漏洞。此外,通过根据实际可能发生的场景进行攻击的渗透测试,可以了解可能发生的更真实的攻击。- 安装防火墙/WAF
通过安装防火墙或 WAF,可以阻止未经授权的入站访问。此外,还可以限制出站通信,以防止在未经授权的访问侵入内部网络的情况下信息泄露到外部。- 不要公开不必要的服务器
例如,如果您正在使用将服务之间的交换结果传递给 BFF 并从那里向前台返回响应的配置进行操作,那么从前台的角度来看,只需要返回结果的 BFF,因此其他服务也设置为公开。这样做会增加恶意攻击者入侵的可能路线数量,这是一种风险。另外,由于前台不需要数据库,设置为public会导致信息泄露。- VPN
访问开发服务器或商业服务器时,存在通信被窃听的风险,因为不知道访问的路径。但是,通过使用合适的VPN,您可以享受隧道、加密和身份验证等功能,并且可以降低窃听等信息泄露的风险。- 安全教育
即使安全工程师和其他人拼命设置以防止事件发生,但没有安全知识的人可能会在不知不觉中采取导致事件的行为,例如指定商业存储库以自己的帐户向公众开放。通过提供定期安全教育来降低事故风险。- 使用密码管理器
由于人类能记住的东西数量有限,在很多情况下,我们会重复使用包含易于记忆的信息(例如生日和姓名)的密码。但是,这种情况下,密码可能被猜到,或者如果密码在某处泄露,可能会影响其他服务的使用,所以自动生成和管理强密码。通过引入密码管理器可以降低上述风险。可以管理密码。- 使用单点登录
即使你使用的服务没有实现多步认证,如果你在SSO端设置了多步认证,你可以对你使用的服务使用多步认证,这样会带来更强的安全性。此外,如果用户丢失了他们的 PC 或发生了其他问题,如果他们没有使用 SSO,他们将不得不暂停他们正在使用的每项服务的帐户。在某些情况下,可能会被忽略,但如果您使用 SSO,您只需暂停一个SSO账户,省时省力,不存在泄露风险,安全性增强。- 两因素身份验证
认证所需的项目大致分为三个要素:知识、拥有和生物特征。双因素身份验证使用其中两个因素,从而提高了安全性。例如,在我使用的 Sony Bank 应用程序中,首先要求您输入 ID 和密码,这是知识元素,然后要求您输入借记卡序列号,这是所有权元素。通过这样做,即使密码泄露,风险也会降低,因为需要借记卡才能登录应用程序。- 数据库和磁盘加密
如果数据库和磁盘没有加密,如果服务器被非法访问并获得管理员权限,可以不登录数据库直接引用数据文件和磁盘,导致信息泄露。加密数据库和磁盘所必需的。- 按用户管理云、管理页面等的权限(最小权限原则)
如果您授予用户工作所需之外的权限,如果帐户被未经授权的登录等劫持,攻击造成的损失将增加。这将有助于防止事件发生时损害的蔓延。- 电脑租赁
如果您在自己的PC上工作,没有安装安全软件或安全软件设置因人而异,因此无法确保安全。通过贷款可以确保一定程度的安全。- 使用 ssh 代替 telnet 进行远程控制
由于 telnet 通信未加密,因此如果使用 telnet,则可能会截获通信。另一方面,ssh对通信进行加密,所以即使被窃听,内容也无法破译,因此可以保证安全。- 根据跟踪记录从受信任的证书颁发机构获取证书
为了保证通信的安全,需要使用保证通信伙伴的高可靠证书。为此,有必要通过查看过去的成就来判断证书颁发机构是否是能够颁发高可靠性证书的受信任的证书颁发机构。- 在使用云服务时花费过多时设置警报
DDoS攻击等攻击对Lambda等服务进行大规模访问,按执行次数收费,而不是AWS EC2等服务按使用次数收费。如果你收到了,将发生 EDoS 攻击,这将导致巨额账单。因此,可以通过在超过一定的使用费时设置飞行警报来最大限度地减少 EDoS 攻击造成的损害。- 介绍服务器监控工具
如果您安装了服务器监控工具并设置为在出现问题时发送警报,例如,即使服务器因 DDoS 攻击而宕机,警报也会让您知道服务器已宕机,您可以快速恢复它。可以。- 实施时记录必要的信息
当事件发生时,日志可以作为一个很好的线索,因此通过将信息的分类和具体描述的内容设置为易于阅读的格式,分析人员将更容易调查事件的原因。- 编写测试
通过编写测试,可以确定应检查的项目是否存在机械问题。另外,通过编写测试,即使要测试的部分稍后被修改,通过执行现有的测试,也可以检查现有的功能是否没有丢失,并且可以抑制错误的发生。- 使用 CI/CD 运行测试以确保一切正常并进行部署
即使测试不通过,如果你配置CI/CD并手动部署,即使有问题的功能也可以释放。有时,通过编写设置,除非所有测试都通过,否则无法部署,可以确保所有在部署之前检查测试,并且可以抑制错误的发生。- 调查您使用的库中的严重漏洞
如果只看功能介绍一个库,就会受到致命漏洞和开发者故意包含的恶意脚本的影响,通过排查是否有问题可以降低风险。- DevSecOps 简介
为了降低在需求定义、设计和实施等各个流程中出现漏洞的风险,通过将适合各个流程的措施纳入流程,可以在不减慢开发速度的情况下实施安全措施。Q.8(新领域研究)
签名商店项目(https://sigstore.dev),简要描述它旨在解决什么问题以及以什么一般方式。如果可能,还请进行以下调查和检查并讨论结果。欢迎详细回答。
(1)它们是由什么样的技术机制和理论支撑的?
(2) 它是否可能在现实世界中实际运行?■ A.8
什么是 Sigstore 项目?因为我们不知道所有软件从哪里来,所以很难检测到开发服务的完整性风险。我们旨在通过实现更安全的管理机制来解决问题。如果服务依赖于 OSS,这将允许未来的集成轻松验证源代码的真实性。
此外,sigstore结合了四个可以单独使用的OSS:Cosign(容器签名、验证和存储)、Fulcio(根证书颁发机构)、Rekor(透明日志)和OpenID Connect(认证方式)。该机制是首先使用 OpenID Connect,它会检查电子邮件地址以证明用户是开发人员。然后,使用 Fulcio,sigstore 向根证书颁发机构 (CA) 请求证书以验证用户是谁。 Fulcio 提供了一种颁发时间戳证书的方法,以指示用户已登录以及他们是谁。此外,sigstore 永远不会获取您的私钥,Cosign 创建的公钥绑定到您的证书,并且签名详细信息存储在 sigstore 的信任根中。然后将用户的证书返回到 sigstore,它会在签署所有内容之前交换密钥并证明用户的身份。签名包括哈希值、公钥、签名内容和时间戳。这全部上传到 Rekor 的透明度日志,因此任何人都可以检查您发布的内容是否已通过所有必要的检查以确保其真实性。
最后,我们相信如果我们能解决一些问题,Sigstore 项目可以在现实世界中运行。首先,进入门槛低。对此,由于在 Sigstore 项目站点中描述了上述过程是自动化的,因此认为已经解决或自动化到足以运行的水平。接下来是名称识别的改进。为了使用这个项目来检查服务的安全性,服务使用的OSS也必须使用这个项目,所以至少要使用一个有名的OSS,改进是必不可少的。认为通过与 GitHub 等 OSS 开发和发布平台合作并进行公示,可以解决这个问题。在最后
我能够获得如果没有参加安全营,我无法接触到的知识和经验,所以如果你有一点兴趣,请参加!另外,如果你参加了安全营再看一遍,有很多地方不够好,但我希望那些正在考虑申请的人在完成作业时会发现它有帮助。
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308623268.html