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

Subversion リポジトリの参照

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

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

trunk/ccs-patch/README.ccs revision 118 by kumaneko, Wed Mar 7 11:48:55 2007 UTC trunk/1.6.x/ccs-patch/README.ccs revision 899 by kumaneko, Tue Jan 15 08:04:43 2008 UTC
# Line 769  Fix 2007/01/19 Line 769  Fix 2007/01/19
769    
770      @ Allow reuse of memory allocated for domain policy.      @ Allow reuse of memory allocated for domain policy.
771    
772        As with domain policy, unlike other policies, didn't have        Regarding domain policy, unlike other policies, didn't have
773        "is_deleted" flag and new memory were allocated        "is_deleted" flag and new memory were allocated
774        if the deleted entries are given again.        if the deleted entries are given again.
775        But to allow administrators switch domain policy periodically,        But to allow administrators switch domain policy periodically,
# Line 863  Fix 2007/03/07 Line 863  Fix 2007/03/07
863        the compiler showing warning messages about size of data types.        the compiler showing warning messages about size of data types.
864        Since size of data types may mismatch for sscanf(),        Since size of data types may mismatch for sscanf(),
865        I replaced some types with 'unsigned int'.        I replaced some types with 'unsigned int'.
866    
867    Version 1.4   2007/04/01   x86_64 support release.
868    
869    Fix 2007/04/18
870    
871        @ Change argv[0] checking rule.
872    
873          I was comparing the basename of symbolic link's pathname and argv[0].
874          Since execute permission check and domain transition are done
875          based on realpath while argv[0] check is done based on the symlink's
876          pathname and argv[0], this specification will allow attackers behave
877          as /bin/cat in the domain of /bin/ls if "/bin/ls and /bin/cat are
878          links to /sbin/busybox" and "the attacker is permitted to create
879          a symlink named ~/cat that points to /bin/ls" and "the attacker is
880          permitted to run /bin/ls".
881          So, I changed to compare the basename of realpath and argv[0].
882          Also, I moved the location to compare before processing
883          "aggregator" directive so that
884          "aggregator /tmp/logrotate.\?\?\?\?\?\? /tmp/logrotate.tmp"
885          won't cause the mismatch of the basename of realpath and argv[0].
886    
887          If /bin/ls is a symlink to /sbin/busybox, then
888          creating a symlink named ~/cat that points to /bin/ls and
889          executing ~/cat won't work as expected because permission check and
890          domain transition are done using /sbin/busybox (realpath of /bin/ls)
891          and will be rejected since the administrator won't grant
892          "1 /sbin/busybox".
893    
894    Fix 2007/05/07
895    
896        @ Support pathname subtraction.
897    
898          There was no way to exclude specific pathnames when granting
899          permissions using wildcards.
900          There would be a need to exclude specific files and directories.
901          I introduced "\-" as subtraction operator.
902    
903            "A\-B" means "A" other than "B".
904            "A\-B\-C" means "A" other than "B" and "C".
905            "A\-B\-C\-D" means "A" other than "B" and "C" and "D".
906    
907          "A", "B", "C", "D" may contain wildcards.
908    
909          An example usage is "/home/\*/\*\-.ssh/\*", which means
910          "/home/\*/\*/\*" other than "/home/\*/.ssh/\*".
911    
912          "A" should contain wildcards because subtraction from constants
913          (e.g. "/usr\-usr/" or "/usr\-home/") is meaningless.
914    
915          Don't try "A\-B\+C" because "\+" is not addition operator.
916    
917    Fix 2007/05/24
918    
919        @ Fix autobind hook.
920    
921          The location to call SAKURA_MayAutobind() in net/ipv4/udp.c
922          and net/ipv6/udp.c were wrong.
923    
924    Fix 2007/06/03
925    
926        @ Add a space in MakeMountOptions().
927    
928          I forgot to add a space after "atime" and "noatime".
929    
930    Version 1.4.1 2007/06/05   Minor update release.
931    
932    Fix 2007/07/04
933    
934        @ Fix ReadAddressGroupPolicy() bug.
935    
936          ReadAddressGroupPolicy() fails if both "path_group" and "address_group" are used
937          because I forgot to set "head->read_var1 = NULL".
938    
939    Fix 2007/07/10
940    
941        @ Add compat_sys_stime() hook.
942    
943          Some of 64bit kernels support compat_sys_stime()
944          but permission check was missing.
945    
946    Version 1.4.2 2007/07/13   Bug fix release.
947    
948    Fix 2007/08/06
949    
950        @ Remove mount-flags manipulation.
951    
952          Until now, administrator is permitted to turn on/off specific mount options
953          regardless of mount options passed to kernel.
954          I removed this feature because "exact option matching" sounds better than
955          "automatic option enabler/disabler".
956    
957        @ Remove /proc/ccs/info/mapping .
958    
959          I removed /proc/ccs/info/mapping because nobody seems to use this feature.
960    
961        @ Call external policy loader automatically.
962    
963          Until now, users had to add init=/.init parameter to load policy
964          before /sbin/init starts.
965          I inserted call_usermodehelper() to call external policy loader when
966          execve("/sbin/init") is requested and external policy loader exists.
967    
968          This change will remove init=/.init parameter from most environment,
969          although call_usermodehelper() can't handle interactive operations.
970    
971        @ Move external policy loader from /.init to /sbin/ccs-init .
972    
973          Installing programs in / directory is not good for packaging.
974    
975    Fix 2007/08/13
976    
977        @ Update external policy loader.
978    
979          It turned out that /sbin/ccs-init invoked via call_usermodehelper()
980          can handle interactive operations by opening /dev/console .
981          Now, there is no difference between init=/sbin/ccs-init and
982          call_usermodehelper("/sbin/ccs-init"), and users no longer need to
983          add init=/sbin/ccs-init parameter to load policy before /sbin/init starts.
984    
985    Fix 2007/08/14
986    
987        @ Update recvmsg() hooks.
988    
989          Until now, it was impossible to apply network access control for
990          incoming UDP and RAW packets if they are brought to userland using
991          read() or recvmsg() with NULL address because address buffer is NULL.
992          I moved hooks from sock_recvmsg() to skb_recv_datagram() so that
993          network access control for incoming UDP and RAW packets always work.
994    
995    Fix 2007/08/16
996    
997        @ Return appropriate error code for CheckMountPermission().
998    
999          I was returning -EPERM if something is wrong with CheckMountPermission().
1000          But SELinux determines whether selinuxfs is supported by kernel
1001          based on whether error code is -ENODEV or not.
1002          So I stopped returning -EPERM unconditionally.
1003    
1004    Fix 2007/08/17
1005    
1006        @ Remove initializer directive.
1007    
1008          Use "initialize_domain" instrad of "initializer".
1009    
1010    Fix 2007/08/21
1011    
1012        @ Fix "allow_argv0 ... if if ..." bug.
1013    
1014          It was impossible to use a word "if" to the second argument of
1015          allow_argv0 if condition part is used.
1016    
1017    Fix 2007/08/24
1018    
1019        @ Move /proc/ccs/\*/\* to /proc/ccs/\* .
1020    
1021          Some pathnames for /proc/ccs/ interface were changed.
1022    
1023    Fix 2007/09/05
1024    
1025        @ Drop MSG_PEEK'ed message before skb_free_datagram().
1026    
1027          I need to remove head message from unwanted source
1028          from socket's receive queue so that the caller can pick up
1029          next message from wanted source with MSG_PEEK flags.
1030    
1031    Version 1.5.0 2007/09/20   Usability enhancement release.
1032    
1033    Fix 2007/09/27
1034    
1035        @ Avoid eating memory after quota exceeded.
1036    
1037          Although ACL entries in a domain won't be added if the domain's quota
1038          has exceeded, SaveName() in AddFileACL() is called anyway.
1039          This caused unneeded memory consumption.
1040    
1041          Now, quota checking is done before getting domain_acl_lock lock.
1042          This may exceed quota by one or two entries, but that won't matter.
1043    
1044    Fix 2007/10/16
1045    
1046        @ Add environment variable check.
1047    
1048          There are environment variables that may cause dangerous behavior
1049          like LD_\* .
1050          So I introduced 'allow_env' directive that allows specified
1051          environment variable inherited to next domain.
1052          Unlike other permissions, this check is done at execve() time
1053          using next domain's ACL information.
1054    
1055          To manage commonly inherited environments like PATH ,
1056          you can use 'allow_env' directive in exception policy
1057          to globally grant specified environment variable.
1058    
1059    Fix 2007/11/05
1060    
1061        @ Replace semaphore with mutex.
1062    
1063          I replaced semaphore with mutex.
1064    
1065        @ Add missing down() in AddReservedEntry().
1066    
1067          Mutex debugging capability told me that I had forgotten to call down()
1068          since TOMOYO version 1.3.2 .
1069          This function is not called by learning mode,
1070          so the semaphore's counter will not overflow for normal usage.
1071    
1072    Fix 2005/11/27
1073    
1074        @ Fix ReadTable() truncation bug.
1075    
1076          "snprintf(str, size, format, ...) >= size" means truncated.
1077          But I was checking for "snprintf(str, size, format, ...) > size".
1078          As a result, some entries might be dumped without '\n'.
1079    
1080        @ Purge direct "->prev"/"->next" manipulation.
1081    
1082          All list manipulations use "struct list_head" or "struct list1_head".
1083          "struct list1_head" doesn't have "->prev" member to save memory usage.
1084    
1085    Fix 2007/11/29
1086    
1087        @ Add missing semaphore in GetEXE().
1088    
1089          mm->mmap_sem was missing.
1090    
1091    Fix 2007/12/17
1092    
1093        @ Remove unused EXPORT_SYMBOL().
1094    
1095          Mark some functions static.
1096    
1097    Fix 2007/12/18
1098    
1099        @ Fix AddMountACL() rejection bug.
1100    
1101          To my surprise, "mount --bind source dest" accepts
1102          not only "both source and dest are directory"
1103          but also "both source and dest are non-directory".
1104          I was rejecting if dest is not a directory in AddMountACL().
1105    
1106        @ Change log format.
1107    
1108          Profile number and mode is added in audit logs.
1109    
1110    Fix 2008/01/03
1111    
1112        @ Change directive for file's read/write/execute permission.
1113    
1114          Directives for file's read/write/execute permissions were
1115          4/2/1 respectively. But for easier understanding, they are now
1116          replaced by read/write/execute (e.g. "allow_read" instead of "4").
1117          But for easier inputting, 4/2/1 are still accepted instead of
1118          allow_read/allow_write/allow_execute respectively.
1119    
1120        @ Change internal data structure.
1121    
1122          Since I don't have more than 16 types of file permissions,
1123          I combined them using bit-fields.
1124    
1125          Each entry had a field for conditional permission support.
1126          But since this field is unlikely used, I separated the field from
1127          common part.
1128    
1129          These changes will reduce memory used by policy.
1130    
1131    Fix 2008/01/15
1132    
1133        @ Add ptrace() hook.
1134    
1135          To prevent attackers from controlling important processes using
1136          ptrace(), I added a hook for ptrace().
1137          Most programs (except strace(1) and gdb(1)) won't use ptrace(2).
1138    
1139        @ Fix sleep condition check in CheckSocketRecvDatagramPermission().
1140    
1141          It seems that correct method to use is in_atomic()
1142          rather than in_interrupt() because in_atomic() returns nonzero
1143          whenever scheduling is not allowed.

Legend:
Removed from v.118  
changed lines
  Added in v.899

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