MST

星途 面试题库

面试题:Bash脚本中的常见安全风险及预防措施

请列举至少三种Bash脚本中常见的安全风险,并说明如何在脚本编写过程中预防这些风险。
20.1万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试

常见安全风险及预防措施

  1. 命令注入风险
    • 风险描述:如果脚本接受用户输入并直接将其作为命令执行,恶意用户可能输入恶意命令,导致脚本执行非预期操作,如删除文件、窃取数据等。例如,脚本中有 command $input,若 input 被恶意赋值为 ; rm -rf /,就会造成严重后果。
    • 预防措施:对用户输入进行严格验证和过滤,只允许特定格式和内容的输入。避免直接将用户输入作为命令的一部分执行,可以使用 eval 等函数时格外小心,或者采用参数化的方式。比如使用 echo "$input" | some_command 替代 command $input
  2. 文件包含风险
    • 风险描述:在脚本中使用 source. 来包含外部文件时,如果外部文件路径可被恶意用户控制,他们可能提供恶意脚本,从而使主脚本执行恶意代码。
    • 预防措施:确保包含的文件路径是固定且受信任的,避免从不可信来源获取文件路径。若必须使用变量指定文件路径,要对变量进行严格校验,确保其指向合法且安全的文件。
  3. 权限不当风险
    • 风险描述:脚本在执行过程中可能以过高的权限运行,例如以 root 权限执行一些不必要的操作,一旦脚本存在漏洞,恶意用户利用漏洞可获取高权限,造成严重安全问题。
    • 预防措施:尽量以最低权限运行脚本,仅在必要时提升权限。例如,若脚本大部分操作不需要 root 权限,先以普通用户权限运行,仅在特定需要高权限的操作时,通过 sudo 等机制临时提升权限,并在操作完成后恢复到普通权限。
  4. 未初始化变量风险
    • 风险描述:使用未初始化的变量可能导致不可预测的行为,恶意用户可能利用这种不确定性来操纵脚本执行流程。例如,脚本中使用 $var,但 $var 未初始化,在某些情况下可能被解释为一个空字符串,而在其他情况下可能产生错误,攻击者可利用这种不一致性。
    • 预防措施:在使用变量前明确初始化变量,或者在脚本开头设置 set -u,这样当脚本尝试使用未初始化的变量时会立即报错,便于发现和修复问题。