Open-Source-Software-Entwicklung und Downloads

Browse Subversion Repository

Diff of /trunk/1.8.x/ccs-patch/README.ccs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

trunk/1.7.x/ccs-patch/README.ccs revision 3643 by kumaneko, Mon May 10 13:52:22 2010 UTC trunk/1.8.x/ccs-patch/README.ccs revision 4068 by kumaneko, Mon Oct 18 07:57:52 2010 UTC
# Line 2411  Fix 2010/05/10 Line 2411  Fix 2010/05/10
2411      @ Fix incorrect out of memory warning.      @ Fix incorrect out of memory warning.
2412    
2413        Out of memory warnings were not printed in some cases by error.        Out of memory warnings were not printed in some cases by error.
2414    
2415    Fix 2010/05/27
2416    
2417        @ Add missing rcu_dereference() for ccs_find_execute_handler().
2418    
2419          Since 1.7.0 , ccs_find_execute_handler() was by error using
2420          list_for_each_entry() rather than list_for_each_entry_rcu().
2421          This bug affects only Alpha architecture.
2422    
2423    Fix 2010/06/03
2424    
2425        @ Fix missing sanity check for "file_pattern".
2426    
2427          Since 1.7.0 , ccs_write_pattern_policy() was by error accepting
2428          invalid pathname.
2429    
2430    Fix 2010/06/09
2431    
2432        @ Add missing ccs_put_name() in ccs_parse_envp().
2433    
2434          Since 1.7.0 , ccs_parse_envp() was not calling ccs_put_name() if
2435          environment variable's value ('if exec.envp["name"]="value"' condition)
2436          was invalid.
2437    
2438        @ Add missing NULL check in ccs_condition().
2439    
2440          Since 1.7.0 , if 'if symlink.target=' part was given against non-file
2441          permissions (e.g. allow_env PATH if symlink.target="/"), it triggered
2442          NULL pointer dereference.
2443    
2444    Fix 2010/10/05
2445    
2446        @ Change directives.
2447    
2448          I removed "allow_" prefix from directives. New directives for files are
2449          prefixed with "file ". For example, "allow_read" changed to "file read",
2450          "allow_ioctl" changed to "file ioctl". New directive for "allow_network
2451          TCP" is "network inet stream", "allow_network UDP" is "network inet
2452          dgram", "allow_network RAW" is "network inet raw". New directive for
2453          "allow_env" is "misc env". New directive for "allow_signal" is "ipc
2454          signal". New directive for "allow_capability" is "capability". These new
2455          directives correspond with keywords used by profile's CONFIG lines.
2456    
2457          I removed "deny_rewrite" and "allow_rewrite" directives and introduced
2458          "file append" directive. Thus, permission for open(O_WRONLY | O_APPEND)
2459          changed from "allow_write" + "allow_rewrite" to "file append".
2460    
2461          I removed "SYS_MOUNT", "SYS_UMOUNT", "SYS_CHROOT", "SYS_KILL",
2462          "SYS_LINK", "SYS_SYMLINK", "SYS_RENAME", "SYS_UNLINK", "SYS_CHMOD",
2463          "SYS_CHOWN", "SYS_IOCTL", "SYS_PIVOT_ROOT" keywords from capabilities
2464          because these permissions can be checked by other directives (e.g.
2465          "file mount", "ipc signal").
2466    
2467          I also removed "conceal_mount" keyword from capabilities because this
2468          check requires hooks in filesystem part while almost all hooks for
2469          filesystem part have moved to LSM by Linux 2.6.34.
2470    
2471          New directive for "execute_handler" is "task auto_execute_handler",
2472          "denied_execute_handler" is "task denied_execute_handler".
2473    
2474        @ Distinguish send() and recv() operations.
2475    
2476          Until now, it was impossible for UDP and IP sockets to allow either
2477          only sending or only receiving because permissions were aggregated with
2478          "connect" keyword. I broke "connect" keyword into "send" and "recv"
2479          keywords so that you can keep access control for send() operation enabled
2480          when you have to disable access control for recv() operation due to
2481          application breakage by discarding incoming datagram.
2482    
2483        @ Add Unix domain socket restriction support.
2484    
2485          Until now, it was possible to restrict only inet domain sockets (i.e.
2486          TCP/UDP/RAW). I added restriction for Unix domain sockets (i.e. stream/
2487          dgram/seqpacket). New directive "network unix" is added as well as
2488          "network inet" directive.
2489    
2490        @ Allow specifying multiple permissions in a line.
2491    
2492          Until now, only "allow_read/write" can be specified for combination of
2493          "allow_read" + "allow_write". Now, you can combine other permissions as
2494          long as type of parameters for these permissions is same. For example,
2495          "file read/write/append/execute/unlink/truncate /tmp/file" is correct
2496          but "file read/write/create /tmp/file" is wrong because "file create"
2497          requires create mode whereas "file read" and "file write" do not.
2498    
2499        @ Allow wildcard for execute permission and domainname.
2500    
2501          Until now, to execute programs with temporary names, "aggregator" is
2502          needed. To simplify code, I modified to accept wildcards for execute
2503          permission and domainname. Now, you can directly specify
2504          "file execute /tmp/logrotate.\?\?\?\?\?\?" and use
2505          "/tmp/logrotate.\?\?\?\?\?\?" within domainnames.
2506    
2507        @ Change pathname for non-rename()able filesystems.
2508    
2509          LSM version of TOMOYO wants to use /proc/self/ rather than /proc/$PID/ if
2510          $PID matches current thread's process ID in order to prevent current
2511          thread from accessing other process's information unless needed.
2512          But since procfs can be mounted on various locations (e.g. /proc/ /proc2/
2513          /p/ /tmp/foo/100/p/ ), LSM version of TOMOYO cannot tell that whether the
2514          numeric part in the string returned by __d_path() represents process ID
2515          or not.
2516    
2517          Therefore, to be able to convert from $PID to self no matter where procfs
2518          is mounted, I changed pathname representations for filesystems which do
2519          not support rename() operation (e.g. proc, sysfs, securityfs).
2520    
2521          Now, "/proc/self/mounts" changed to "proc:/self/mounts" and
2522          "/sys/kernel/security/" changed to "sys:/kernel/security/" and
2523          "/dev/pts/0" changed to "devpts:/0".
2524    
2525        @ Add a new keyword "any" for domain transition control.
2526    
2527          To be able to make it easier to apply auto_execute_handler on each
2528          domain, I added "any" keyword to domain transition control keywords. Now,
2529          "initialize_domain /usr/sbin/sshd" changed to
2530          "initialize_domain /usr/sbin/sshd from any" and
2531          "keep_domain <kernel> /usr/sbin/sshd /bin/bash" changed to
2532          "keep_domain any from <kernel> /usr/sbin/sshd /bin/bash".
2533    
2534          "keep_domain /path/to/auto_execute_handler from any" will allow you to
2535          apply auto_execute_handler for any domains without creating domains for
2536          auto_execute_handler.
2537    
2538        @ Change buffering mode for reading policy.
2539    
2540          To be able to read() very very long lines correctly, I changed the way
2541          TOMOYO buffers policy for reading.
2542    
2543        @ Introduce "acl_group" keyword.
2544    
2545          Until now, it was possible to specify only "allow_read" and "allow_env"
2546          keywords in the exception policy.
2547    
2548          Since some operations like "file read/write/append /dev/null" and
2549          "network UDP send/recv @DNS_SERVER 53" are very common and should be
2550          permitted to all domains, I introduced "acl_group" keyword for giving
2551          such permissions.
2552    
2553          For example, specify "acl_group 0 file read/write/append /dev/null" in
2554          the exception policy and specify "use_group 0" from the domains in the
2555          domain policy.
2556    
2557          "ignore_global_allow_read" and "ignore_global_allow_env" directives were
2558          removed from domain policy and "use_group" keyword was added.
2559    
2560        @ Remove "if" and "; set" keyword.
2561    
2562          I removed need for specifying these keyword.
2563          You can simply specify like below.
2564    
2565            file read /etc/shadow task.uid=0
2566    
2567        @ Remove "file_pattern" keyword.
2568    
2569          I removed "file_pattern" keyword because it is impossible to predefine
2570          all possible pathname patterns. Also, learning pathnames using incomplete
2571          patterns makes it difficult to later replace using "path_group" keyword.
2572    
2573        @ Replace verbose= parameter with statistic interface.
2574    
2575          Since it is noisy if a lot of policy violation messages are printed,
2576          I removed printk(). To be able to check whether policy violation occurred
2577          or not, I introduced /proc/ccs/stat interface which counts number of
2578          policy violations occurred. You can firstly check /proc/ccs/stat and then
2579          check /proc/ccs/reject_log .
2580    
2581        @ Remove global preference.
2582    
2583          I removed global preference in order to make code simpler.
2584    
2585        @ Allow controlling generation of access granted logs for per an entry
2586          basis.
2587    
2588          I added per-entry flag which controls generation of grant logs because
2589          Xen and KVM issues ioctl requests so frequently. For example,
2590    
2591            file ioctl /dev/null 0x5401 grant_log=no
2592    
2593          will suppress /proc/ccs/grant_log even if preference says grant_log=yes .
2594    
2595            file ioctl /dev/null 0x5401 grant_log=yes
2596    
2597          will generate /proc/ccs/grant_log even if preference says grant_log=no .
2598    
2599            file ioctl /dev/null 0x5401
2600    
2601          will generate /proc/ccs/grant_log only if preference says grant_log=yes .
2602    
2603          This flag is intended for frequently accessed resources like
2604    
2605            file read /var/www/html/\{\*\}/\*.html grant_log=no
2606    
2607          .
2608    
2609        @ Automatically create domain by execve() even if enforcing mode.
2610    
2611          Until now, new domains are not created if the domain was not defined and
2612          current domain is enforcing mode ("CONFIG::file::execute=enforcing").
2613    
2614          To be able to restrict shell session without using "keep_domain",
2615          I changed to create new domains automatically even if current domain is
2616          enforcing mode.
2617    
2618        @ Replace "task.state" with "auto_domain_transition".
2619    
2620          task.state is difficult to use. Thus, I replaced task.state with
2621          auto_domain_transition which performs domain transition instead of
2622          changing current process's state variables.
2623    
2624          If domain transition failed, current process will be killed by SIGKILL
2625          signal. This should not happen in normal circumstances, for you know the
2626          domain to transit to and thereby you will define the domain beforehand
2627          when you use "auto_domain_transition" keyword.
2628    
2629        @ Replace "allow_transit" with "task manual_domain_transition".
2630    
2631          I changed this directive to specify absolute domainname (e.g.
2632          "<kernel> /usr/sbin/httpd //app=cgi1\040id=10000") rather than virtual
2633          pathname (e.g. "//app=cgi1\040id=10000") because you know the domain to
2634          transit to and thereby you will define the domain beforehand when you use
2635          "task manual_domain_transition" directive.
2636    
2637          This change allows you to jump to arbitrary domain.
2638    
2639        @ Add "task auto_domain_transition".
2640    
2641          This is similar to "task manual_domain_transition", but is automatically
2642          applied whenever conditions are met. For example,
2643    
2644            task auto_domain_transition <kernel> //./non-root task.uid!=0
2645    
2646          will automatically jump to "<kernel> //./non-root" domain if current
2647          process's UID is not 0 whereas
2648    
2649            task manual_domain_transition <kernel> //./non-root task.uid!=0
2650    
2651          will jump to "<kernel> //./non-root" domain if current process's UID is
2652          not 0 and current process wrote "<kernel> //./non-root" + '\n' to
2653          /proc/ccs/.transition interface.
2654    
2655          If domain transition failed, current process will be killed by SIGKILL
2656          signal.
2657    
2658        @ Optimize for object's size.
2659    
2660          I merged similar code in order to reduce object's filesize.
2661    
2662    Version 1.8.0 2010/XX/XX   Feature enhancement release.

Legend:
Removed from v.3643  
changed lines
  Added in v.4068

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26