Linux 审计标准中定义 execve 系统调用参数的正则表达式是否仍在使用?

Linux 审计标准中定义 execve 系统调用参数的正则表达式是否仍在使用?

根据字段字典[1] 有些字段的名称由以下正则表达式定义:

a[[:digit:]+]\[.*\]

我能够找到像a4and这样的字段的例子a5(参见2)但它不适合正则表达式,它似乎需要一对方括号(所以a4应该是a4[]or a4[foo])。我在 Linux Audit 源代码中找不到任何参考。

我的问题是

  1. 这个正则表达式有效并且是最新的吗?或者这是一条不再适用的过时规则?
  2. 您能否建议我在哪里查看 execve 系统调用的这些参数是如何处理的?
  3. 您能否发布一个包含适合正则表达式的字段的记录示例(假设正则表达式有效)?

链接

  1. https://github.com/linux-audit/audit-documentation/blob/master/specs/fields/field-dictionary.csv#L3
  2. https://www.redhat.com/archives/linux-audit/2012-October/msg00090.html

注意:这个问题也在 Linux Audit 邮件列表上被问到,但我还没有收到任何反馈。

答案1

这是我从 Steve Grubb 和 Paul Moore 收到的答案的摘要。最终消息可以在相关线程中查看这里(链接)


  1. 此正则表达式 ( a[[:digit:]+]\[.*\]) 是否有效且是最新的?或者这是一条不再适用的过时规则?

    这个正则表达式并没有过时。当参数太长而无法放入单个字段(如 )时使用它a4。相反,参数被分成多个字段,因此最终我们得到

    a4_len=4 a4[0]=l a4[1]=o a4[2]=n a4[3]=g
    

    代替

    a4=long
    

    事实上,正则表达式可以定义为,a[[:digit:]+]\[[:digit:]+\]但当前的正则表达式已完成其工作,因此无需修复它。

  2. 您能否建议我在哪里查看 execve 系统调用的这些参数是如何处理的?

    kernel/auditsc.c:audit_log_single_execve_arg 了解详细信息(链接)

  3. 您能否发布一个包含适合正则表达式的字段的记录示例(假设正则表达式有效)?

    可以使用以下命令生成一个示例Linux Audittest 套件(链接)或在这里看到来自 linux 审计档案的旧电子邮件(链接)

    引用保罗·摩尔的话:

    内核生成 EXECVE 记录 kernel/auditsc.c:audit_log_execve_info(),您可以在以下位置找到 EXECVE 记录的测试:审计测试套件(exec_execve)。

相关内容