Skip to content
This repository was archived by the owner on May 16, 2025. It is now read-only.

Commit 1e2a985

Browse files
committed
Mac - smear protection on process maps walking and task enumeration
1 parent c618b16 commit 1e2a985

File tree

2 files changed

+22
-7
lines changed

2 files changed

+22
-7
lines changed

volatility/plugins/mac/pstasks.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,18 @@ def allprocs(self):
3737
tasksaddr = self.addr_space.profile.get_symbol("_tasks")
3838
queue_entry = obj.Object("queue_entry", offset = tasksaddr, vm = self.addr_space)
3939

40-
seen = [tasksaddr]
40+
seen = { tasksaddr : 1 }
4141

4242
for task in queue_entry.walk_list(list_head = tasksaddr):
43-
if (task.bsd_info and task.obj_offset not in seen):
44-
proc = task.bsd_info.dereference_as("proc")
45-
yield proc
46-
47-
seen.append(task.obj_offset)
43+
if task.obj_offset not in seen:
44+
seen[task.obj_offset] = 0
45+
46+
if task.bsd_info:
47+
proc = task.bsd_info.dereference_as("proc")
48+
yield proc
49+
else:
50+
if seen[task.obj_offset] > 3:
51+
break
52+
53+
seen[task.obj_offset] = seen[task.obj_offset] + 1
4854

volatility/plugins/overlays/mac/mac.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1099,7 +1099,13 @@ def get_dyld_maps(self):
10991099
def get_proc_maps(self):
11001100
map = self.task.map.hdr.links.next
11011101

1102+
seen = set()
1103+
11021104
for i in xrange(self.task.map.hdr.nentries):
1105+
if map.v() in seen:
1106+
break
1107+
seen.add(map.v())
1108+
11031109
if not map:
11041110
break
11051111
yield map
@@ -1517,9 +1523,12 @@ def get_path(self):
15171523
ret = vnode
15181524
elif vnode:
15191525
path = []
1520-
while vnode:
1526+
seen = set()
1527+
while vnode and vnode.v() not in seen:
1528+
seen.add(vnode.v())
15211529
path.append(str(vnode.v_name.dereference() or ''))
15221530
vnode = vnode.v_parent
1531+
15231532
path.reverse()
15241533
ret = "/".join(path)
15251534
else:

0 commit comments

Comments
 (0)