オープンソース・ソフトウェアの開発とダウンロード

Subversion リポジトリの参照

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

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

branches/ccs-patch/README.ccs revision 3869 by kumaneko, Thu Jul 29 13:29:11 2010 UTC trunk/1.8.x/ccs-patch/README.ccs revision 4133 by kumaneko, Wed Nov 10 07:24:32 2010 UTC
# Line 1723  Fix 2008/11/07 Line 1723  Fix 2008/11/07
1723        to see process information. The content of /proc/ccs/.execute_handler is        to see process information. The content of /proc/ccs/.execute_handler is
1724        identical to /proc/ccs/.process_status .        identical to /proc/ccs/.process_status .
1725    
1726  Version 1.6.5   2008/11/11   Third anniversary release.  Version 1.6.5 2008/11/11   Third anniversary release.
1727    
1728  Fix 2008/12/01  Fix 2008/12/01
1729    
# Line 2243  Fix 2009/11/09 Line 2243  Fix 2009/11/09
2243        /proc/ccs/profile (which results in not protecting the system at all),        /proc/ccs/profile (which results in not protecting the system at all),
2244        I added a check for PROFILE_VERSION= .        I added a check for PROFILE_VERSION= .
2245    
2246  Version 1.7.1   2009/11/11   Fourth anniversary release.  Version 1.7.1 2009/11/11   Fourth anniversary release.
2247    
2248  Fix 2009/11/13  Fix 2009/11/13
2249    
# Line 2382  Fix 2010/03/26 Line 2382  Fix 2010/03/26
2382        Since 1.7.0 , ccs_lport_reserved() was by error checking wrong port        Since 1.7.0 , ccs_lport_reserved() was by error checking wrong port
2383        number. As a result, "deny_autobind" keyword was not working as expected.        number. As a result, "deny_autobind" keyword was not working as expected.
2384    
2385  Version 1.7.2   2010/04/01   Feature enhancement release.  Version 1.7.2 2010/04/01   Feature enhancement release.
2386    
2387  Fix 2010/04/10  Fix 2010/04/10
2388    
# Line 2441  Fix 2010/06/09 Line 2441  Fix 2010/06/09
2441        permissions (e.g. allow_env PATH if symlink.target="/"), it triggered        permissions (e.g. allow_env PATH if symlink.target="/"), it triggered
2442        NULL pointer dereference.        NULL pointer dereference.
2443    
2444  Fix 2010/07/29  Fix 2010/10/28
2445    
2446      @ Change keyword syntax.      @ Fix umount() pathname calculation.
2447    
2448          "mount --bind /path/to/file1 /path/to/file2" is legal.
2449          Therefore, "umount /path/to/file2" is also legal.
2450          Do not automatically append trailing '/' if pathname to be unmounted
2451          does not end with '/'.
2452    
2453        @ Add preserve KABI compatibility option. (2.6 kernels only)
2454    
2455          TOMOYO needs "struct ccs_domain_info *" and "u32" for each
2456          "struct task_struct". But embedding these variables into
2457          "struct task_struct" breaks KABI for prebuilt kernel modules (which
2458          means that you will need to rebuild prebuilt kernel modules).
2459    
2460          Since KABI is commonly used (compared to 5 years ago), asking users to
2461          rebuild kernel modules which are not included in kernel package is no
2462          longer preferable. Therefore, I added a new option that keeps
2463          "struct task_struct" unmodified in order to keep KABI.
2464    
2465          Note that you have to use ccs-patch-2.6.\*.diff which patches
2466          kernel/fork.c in order to use this option. Otherwise, TOMOYO will leak
2467          memory whenever "struct task_struct" is released.
2468    
2469        @ Change directives.
2470    
2471        I removed "allow_" prefix from directives. New directives for files are        I removed "allow_" prefix from directives. New directives for files are
2472        prefixed with "file ". For example, "allow_read" changed to "file read",        prefixed with "file ". For example, "allow_read" changed to "file read",
2473        "allow_ioctl" changed to "file ioctl". New directive for "allow_network"        "allow_ioctl" changed to "file ioctl". New directive for "allow_network
2474        is "network". New directive for "allow_env" is "misc env". New directive        TCP" is "network inet stream", "allow_network UDP" is "network inet
2475        for "allow_signal" is "ipc signal". New directive for "allow_capability"        dgram", "allow_network RAW" is "network inet raw". New directive for
2476        is "capability". These directives correspond with keywords used by        "allow_env" is "misc env". New directive for "allow_signal" is "ipc
2477        profile's CONFIG lines.        signal". New directive for "allow_capability" is "capability". These new
2478          directives correspond with keywords used by profile's CONFIG lines.
2479    
2480        I removed "deny_rewrite" and "allow_rewrite" directives and introduced        I removed "deny_rewrite" and "allow_rewrite" directives and introduced
2481        "file append" directive. Thus, permission for open(O_WRONLY | O_APPEND)        "file append" directive. Thus, permission for open(O_WRONLY | O_APPEND)
# Line 2467  Fix 2010/07/29 Line 2491  Fix 2010/07/29
2491        check requires hooks in filesystem part while almost all hooks for        check requires hooks in filesystem part while almost all hooks for
2492        filesystem part have moved to LSM by Linux 2.6.34.        filesystem part have moved to LSM by Linux 2.6.34.
2493    
2494      @ Distinguish send() and recv() operations for UDP and IP protocols.        New directive for "execute_handler" is "task auto_execute_handler",
2495          "denied_execute_handler" is "task denied_execute_handler".
2496    
2497        @ Distinguish send() and recv() operations.
2498    
2499        Until now, it was impossible for UDP and IP protocols to allow either        Until now, it was impossible for UDP and IP sockets to allow either
2500        only sending or only receiving because permissions were aggregated with        only sending or only receiving because permissions were aggregated with
2501        "connect" keyword. I broke "connect" keyword into "send" and "recv"        "connect" keyword. I broke "connect" keyword into "send" and "recv"
2502        keywords so that you can keep access control for send() operation enabled        keywords so that you can keep access control for send() operation enabled
2503        when you have to turn access control for recv() operation off due to        when you have to disable access control for recv() operation due to
2504        application breakage by filtering incoming datagram.        application breakage by discarding incoming datagram.
2505    
2506      @ Wait for next connection/datagram if current connection/datagram was      @ Add Unix domain socket restriction support.
       discarded.  
2507    
2508        Regarding "network TCP accept", "network UDP recv", "network RAW recv"        Until now, it was possible to restrict only inet domain sockets (i.e.
2509        keywords, I modified to wait for next connection/datagram if current        TCP/UDP/RAW). I added restriction for Unix domain sockets (i.e. stream/
2510        connection/datagram was discarded. LSM hooks for these keywords are        dgram/seqpacket). New directive "network unix" is added as well as
2511        currently missing because this behavior may break applications.        "network inet" directive.
       If you found applications broken by this behavior, you can set  
       CONFIG::network::inet_tcp_accept and/or CONFIG::network::inet_udp_recv  
       and/or CONFIG::network::inet_raw_recv to mode=disabled in order to  
       disable filtering for incoming connection/datagram.  
2512    
2513      @ Allow specifying multiple permissions in a line.      @ Allow specifying multiple permissions in a line.
2514    
# Line 2525  Fix 2010/07/29 Line 2547  Fix 2010/07/29
2547    
2548      @ Add a new keyword "any" for domain transition control.      @ Add a new keyword "any" for domain transition control.
2549    
2550        To be able to make it easier to apply execute_handler on each domain,        To be able to make it easier to apply auto_execute_handler on each
2551        I added "any" keyword to domain transition control keywords. Now,        domain, I added "any" keyword to domain transition control keywords. Now,
2552        "initialize_domain /usr/sbin/sshd" changed to        "initialize_domain /usr/sbin/sshd" changed to
2553        "initialize_domain /usr/sbin/sshd from any" and        "initialize_domain /usr/sbin/sshd from any" and
2554        "keep_domain <kernel> /usr/sbin/sshd /bin/bash" changed to        "keep_domain <kernel> /usr/sbin/sshd /bin/bash" changed to
2555        "keep_domain any from <kernel> /usr/sbin/sshd /bin/bash".        "keep_domain any from <kernel> /usr/sbin/sshd /bin/bash".
2556    
2557        "keep_domain /path/to/execute_handler from any" will allow you to apply        "keep_domain /path/to/auto_execute_handler from any" will allow you to
2558        execute_handler for any domains without creating domains for        apply auto_execute_handler for any domains without creating domains for
2559        execute_handler.        auto_execute_handler.
2560    
2561      @ Change buffering mode for reading policy.      @ Change buffering mode for reading policy.
2562    
# Line 2555  Fix 2010/07/29 Line 2577  Fix 2010/07/29
2577        the exception policy and specify "use_group 0" from the domains in the        the exception policy and specify "use_group 0" from the domains in the
2578        domain policy.        domain policy.
2579    
2580        "ignore_global_allow_read" and "ignore_global_allow_env" keywords were        "ignore_global_allow_read" and "ignore_global_allow_env" directives were
2581        removed from domain policy and "use_group" keyword was added.        removed from domain policy and "use_group" keyword was added.
2582    
2583        @ Remove "if" and "; set" keyword.
2584    
2585          I removed need for specifying these keyword.
2586          You can simply specify like below.
2587    
2588            file read /etc/shadow task.uid=0
2589    
2590        @ Remove "file_pattern" keyword.
2591    
2592          I removed "file_pattern" keyword because it is impossible to predefine
2593          all possible pathname patterns. Also, learning pathnames using incomplete
2594          patterns makes it difficult to later replace using "path_group" keyword.
2595    
2596        @ Replace verbose= parameter with statistic interface.
2597    
2598          Since it is noisy if a lot of policy violation messages are printed,
2599          I removed printk(). To be able to check whether policy violation occurred
2600          or not, I introduced /proc/ccs/stat interface which counts number of
2601          policy violations occurred. You can firstly check /proc/ccs/stat and then
2602          check /proc/ccs/reject_log .
2603    
2604        @ Remove global preference.
2605    
2606          I removed global preference in order to make code simpler.
2607    
2608      @ Allow controlling generation of access granted logs for per an entry      @ Allow controlling generation of access granted logs for per an entry
2609        basis.        basis.
2610    
2611        I added per-entry flag which controls generation of grant logs because        I added per-entry flag which controls generation of grant logs because
2612        Xen and KVM issues ioctl requests so frequently. For example,        Xen and KVM issues ioctl requests so frequently. For example,
2613    
2614          file ioctl /dev/null 0x5401 ; set audit=no          file ioctl /dev/null 0x5401 grant_log=no
2615    
2616        will suppress /proc/ccs/grant_log even if profile says grant_log=yes .        will suppress /proc/ccs/grant_log even if preference says grant_log=yes .
2617    
2618          file ioctl /dev/null 0x5401 ; set audit=yes          file ioctl /dev/null 0x5401 grant_log=yes
2619    
2620        will generate /proc/ccs/grant_log even if profile says grant_log=no .        will generate /proc/ccs/grant_log even if preference says grant_log=no .
2621    
2622          file ioctl /dev/null 0x5401          file ioctl /dev/null 0x5401
2623    
2624        will generate /proc/ccs/grant_log only if profile says grant_log=yes .        will generate /proc/ccs/grant_log only if preference says grant_log=yes .
2625    
2626        This flag is intended for frequently accessed resources like        This flag is intended for frequently accessed resources like
2627    
2628          file read /var/www/html/\{\*\}/\*.html ; set audit=no          file read /var/www/html/\{\*\}/\*.html grant_log=no
2629    
2630        .        .
2631    
2632        @ Automatically create domain by execve() even if enforcing mode.
2633    
2634          Until now, new domains are not created if the domain was not defined and
2635          current domain is enforcing mode ("CONFIG::file::execute=enforcing").
2636    
2637          To be able to restrict shell session without using "keep_domain",
2638          I changed to create new domains automatically even if current domain is
2639          enforcing mode.
2640    
2641        @ Replace "task.state" with "auto_domain_transition".
2642    
2643          task.state is difficult to use. Thus, I replaced task.state with
2644          auto_domain_transition which performs domain transition instead of
2645          changing current process's state variables.
2646    
2647          If domain transition failed, current process will be killed by SIGKILL
2648          signal. This should not happen in normal circumstances, for you know the
2649          domain to transit to and thereby you will define the domain beforehand
2650          when you use "auto_domain_transition" keyword.
2651    
2652        @ Replace "allow_transit" with "task manual_domain_transition".
2653    
2654          I changed this directive to specify absolute domainname (e.g.
2655          "<kernel> /usr/sbin/httpd //app=cgi1\040id=10000") rather than virtual
2656          pathname (e.g. "//app=cgi1\040id=10000") because you know the domain to
2657          transit to and thereby you will define the domain beforehand when you use
2658          "task manual_domain_transition" directive.
2659    
2660          This change allows you to jump to arbitrary domain.
2661    
2662        @ Add "task auto_domain_transition".
2663    
2664          This is similar to "task manual_domain_transition", but is automatically
2665          applied whenever conditions are met. For example,
2666    
2667            task auto_domain_transition <kernel> //./non-root task.uid!=0
2668    
2669          will automatically jump to "<kernel> //./non-root" domain if current
2670          process's UID is not 0 whereas
2671    
2672            task manual_domain_transition <kernel> //./non-root task.uid!=0
2673    
2674          will jump to "<kernel> //./non-root" domain if current process's UID is
2675          not 0 and current process wrote "<kernel> //./non-root" + '\n' to
2676          /proc/ccs/.transition interface.
2677    
2678          If domain transition failed, current process will be killed by SIGKILL
2679          signal.
2680    
2681      @ Optimize for object's size.      @ Optimize for object's size.
2682    
2683        I merged similar code in order to reduce object's filesize.        I merged similar code in order to reduce object's filesize.
2684    
2685    Version 1.8.0 2010/11/11   Fifth anniversary release.

Legend:
Removed from v.3869  
changed lines
  Added in v.4133

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