History

leaking_addresses: skip all /proc/PID except /proc/1

When the system is idle it is likely that most files under /proc/PID will be identical for various processes. Scanning _all_ the PIDs under /proc is unnecessary and implies that we are thoroughly scanning /proc. This is _not_ the case because there may be ways userspace can trigger creation of /proc files that leak addresses but were not present during a scan. For these two reasons we should exclude all PID directories under /proc except '1/' Exclude all /proc/PID except /proc/1.

Tobin C. Harding committed 8 years ago

Commit 472c9e11 parent 5e4bac31 file · +12 −0Browse files

Showing the changes to scripts (1 of 1 file). Show all

Unified · Split

scripts/leaking_addresses.pl+12−0
@@ -10,6 +10,14 @@ · 9 unmodified lines
10# Use --debug to output path before parsing, this is useful to find files that10# Use --debug to output path before parsing, this is useful to find files that
11# cause the script to choke.11# cause the script to choke.
12 12
13#
14# When the system is idle it is likely that most files under /proc/PID will be
15# identical for various processes. Scanning _all_ the PIDs under /proc is
16# unnecessary and implies that we are thoroughly scanning /proc. This is _not_
17# the case because there may be ways userspace can trigger creation of /proc
18# files that leak addresses but were not present during a scan. For these two
19# reasons we exclude all PID directories under /proc except '1/'
20
13use warnings;21use warnings;
14use strict;22use strict;
15use POSIX;23use POSIX;
@@ -472,6 +480,10 @@ sub walk · 456 unmodified lines
472 my $path = "$pwd/$file";480 my $path = "$pwd/$file";
473 next if (-l $path);481 next if (-l $path);
474 482
483 # skip /proc/PID except /proc/1
484 next if (($path =~ /^\/proc\/[0-9]+$/) &&
485 ($path !~ /^\/proc\/1$/));
486
475 next if (skip($path));487 next if (skip($path));
476 488
477 if (-d $path) {489 if (-d $path) {