Skip to content

gap analysis#339

Open
paolo9921 wants to merge 15 commits intomainfrom
paolo/new_rules
Open

gap analysis#339
paolo9921 wants to merge 15 commits intomainfrom
paolo/new_rules

Conversation

@paolo9921
Copy link
Copy Markdown
Contributor

@paolo9921 paolo9921 commented Apr 15, 2025

Gap analysis, partial rule enhancement

Identification of uncovered areas in the ruleset, implementation of new rules

I have

  • run cargo fmt;
  • run cargo clippy;
  • run cargo testand all tests pass;
  • linked to the originating issue (if applicable).

@paolo9921 paolo9921 requested a review from krsh April 15, 2025 10:33
@paolo9921 paolo9921 added this to Pulsar Apr 15, 2025
@github-project-automation github-project-automation bot moved this to 🆕 New in Pulsar Apr 15, 2025
@krsh krsh requested a review from banditopazzo April 18, 2025 13:10
@krsh krsh removed this from Pulsar Apr 18, 2025
@vadorovsky vadorovsky self-requested a review April 28, 2025 08:18
Comment on lines +17 to +19
"/usr/bin/apt", "/usr/bin/dpkg", "/usr/bin/yum", "/usr/bin/dnf", "/usr/bin/pacman",
"/usr/bin/rpm", "/usr/bin/zypper", "/usr/bin/emerge", "/usr/bin/nix-env"
])
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • add /usr/bin/apt-get or start with
  • add /usr/bin/dnf-3, /usr/bin/dnf4, /usr/bin/dnf5 or start with

check yocto distribution rpm path

Comment on lines +16 to +19
(payload.filename STARTS_WITH "/usr/bin/systemctl" AND payload.argv CONTAINS "disable" AND (payload.argv CONTAINS "apparmor" OR payload.argv CONTAINS "apparmor.service")) OR
(payload.filename ENDS_WITH "service" AND payload.argv CONTAINS "apparmor" AND payload.argv CONTAINS "stop") OR
(payload.filename ENDS_WITH "chkconfig" AND payload.argv CONTAINS "apparmor" AND payload.argv CONTAINS "off")
)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • typo attenot in description
  • it should cover systemctl stop and systemctl disable
  • it should cover service stop and service disable (check service syntax)

Comment on lines +27 to +28
condition: (payload.filename STARTS_WITH "/usr/bin/ln" AND payload.argv CONTAINS "/etc/apparmor.d/" AND payload.argv CONTAINS "/etc/apparmor.d/disable/")
OR (payload.filename STARTS_WITH "/usr/bin/mv" AND payload.argv CONTAINS "/etc/apparmor.d/" AND payload.argv CONTAINS "/etc/apparmor.d/disable/")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do not rely on args but switch to FileRename use /usr/bin/ln as image name and put conditions on file path because in file rename events are resolved in absolute form

Comment on lines +35 to +40
condition: (
payload.filename STARTS_WITH "/etc/apparmor" OR
payload.filename STARTS_WITH "/etc/apparmor.d/" OR
payload.filename STARTS_WITH "/etc/apparmor.conf"
)
AND (payload.flags CONTAINS "O_WRONLY" OR payload.flags CONTAINS "O_RDWR")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add exception on eventual apparmor binaries that reads that configurations

Comment on lines +47 to +48
condition: payload.filename STARTS_WITH "/usr/sbin/sysctl" AND
(payload.argv CONTAINS "apparmor=0" OR payload.argv CONTAINS "kernel.apparmor.enabled=0" OR payload.argv CONTAINS "security=none")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • it uses sysctl , but you should check if it's possible to do the same thing interacting with /sys filesystem. in that case create a rule below this
  • check if the new rule on the filesystem is enough

Comment on lines +56 to +59
(payload.filename ENDS_WITH "apparmor_parser" AND (payload.argv CONTAINS "-R" OR payload.argv CONTAINS "--remove")) OR
(payload.filename ENDS_WITH "aa-teardown") OR
(payload.filename ENDS_WITH "aa-disable")
)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check if these utilities utilizes file system under the hood and create a rule on that if it's possible

"/usr/bin/apt", "/usr/bin/apt-get","/usr/bin/dpkg", "/usr/bin/yum",
"/usr/bin/pacman", "/usr/bin/rpm", "/usr/bin/zypper", "/usr/bin/emerge", "/usr/bin/nix-env"]
OR header.image STARTS_WITH "/usr/bin/dnf"
)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add /usr/bin/opkg

header.image IN [
"/usr/bin/apt", "/usr/bin/apt-get","/usr/bin/dpkg", "/usr/bin/yum",
"/usr/bin/pacman", "/usr/bin/rpm", "/usr/bin/zypper", "/usr/bin/emerge", "/usr/bin/nix-env"]
OR header.image STARTS_WITH "/usr/bin/dnf"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add /usr/bin/opkg

header.image IN [
"/usr/bin/apt", "/usr/bin/apt-get","/usr/bin/dpkg", "/usr/bin/yum",
"/usr/bin/pacman", "/usr/bin/rpm", "/usr/bin/zypper", "/usr/bin/emerge", "/usr/bin/nix-env"]
OR header.image STARTS_WITH "/usr/bin/dnf"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add /usr/bin/opkg

header.image IN [
"/usr/bin/apt", "/usr/bin/apt-get","/usr/bin/dpkg", "/usr/bin/yum",
"/usr/bin/pacman", "/usr/bin/rpm", "/usr/bin/zypper", "/usr/bin/emerge", "/usr/bin/nix-env"]
OR header.image STARTS_WITH "/usr/bin/dnf"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add /usr/bin/opkg

header.image IN [
"/usr/bin/apt", "/usr/bin/apt-get","/usr/bin/dpkg", "/usr/bin/yum",
"/usr/bin/pacman", "/usr/bin/rpm", "/usr/bin/zypper", "/usr/bin/emerge", "/usr/bin/nix-env"]
OR header.image STARTS_WITH "/usr/bin/dnf"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add /usr/bin/opkg

evade detection after installing a Linux kernel module (LKM).
condition: header.image == "/usr/bin/dmesg" AND payload.argv CONTAINS "-c" No newline at end of file
condition: (payload.filename STARTS_WITH "/usr/bin/dmesg" OR payload.filename STARTS_WITH "/bin/dmesg" OR payload.filename STARTS_WITH "/usr/sbin/dmesg")
AND (payload.argv CONTAINS "-c" OR payload.argv CONTAINS "-C" OR payload.argv CONTAINS "--clear")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

check if possible to use fileopen event and flags O_TRUNC and/or O_WRITE, O_RDWR

Comment on lines -16 to -18
(payload.filename STARTS_WITH "/usr/bin/systemctl" AND payload.argv CONTAINS "disable" AND (payload.argv CONTAINS "apparmor" OR payload.argv CONTAINS "apparmor.service")) OR
(payload.filename ENDS_WITH "service" AND payload.argv CONTAINS "apparmor" AND payload.argv CONTAINS "stop") OR
(payload.filename ENDS_WITH "chkconfig" AND payload.argv CONTAINS "apparmor" AND payload.argv CONTAINS "off")
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rewrite with file deleted if possible, example symlink to service deleted from /etc/systemd conf dir

description: Detects modification of AppArmor profiles or configurations.
condition: (
payload.filename STARTS_WITH "/etc/apparmor" OR
payload.filename STARTS_WITH "/etc/apparmor/" OR
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can remove the slash and remove the others already included

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants