[SCM] Samba Shared Repository - branch v3-5-stable updated
Karolin Seeger
kseeger at samba.org
Mon Apr 30 06:21:18 MDT 2012
The branch, v3-5-stable has been updated
via b1061ab Fix self granting privileges in security=ads.
via 0b27880 WHASNEW: Release notes for 3.5.15.
from 1cc0306 WHATSNEW: Start release notes for Samba 3.5.15.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-5-stable
- Log -----------------------------------------------------------------
commit b1061ab00f59fdf4ebab622ab7a9c29a3aa51eee
Author: Jeremy Allison <jra at samba.org>
Date: Tue Apr 17 11:49:55 2012 -0700
Fix self granting privileges in security=ads.
CVE-2012-2111
commit 0b278804b1aa020e03c89e9276408dd7097bb4d2
Author: Karolin Seeger <kseeger at samba.org>
Date: Fri Apr 27 21:09:56 2012 +0200
WHASNEW: Release notes for 3.5.15.
Karolin
-----------------------------------------------------------------------
Summary of changes:
WHATSNEW.txt | 16 +++++++++++-----
source3/rpc_server/srv_lsa_nt.c | 20 ++++++++++++++------
2 files changed, 25 insertions(+), 11 deletions(-)
Changeset truncated at 500 lines:
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index 712748f..b588bfd 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,20 +1,26 @@
==============================
Release Notes for Samba 3.5.15
- , 2012
+ April 30, 2012
==============================
-This is the latest stable release of Samba 3.5.
+This is a security release in order to address
+CVE-2012-2111 (Incorrect permission checks when granting/removing
+privileges can compromise file server security).
-Major enhancements in Samba 3.5.15 include:
+o CVE-2012-2111:
+ Samba 3.4.x to 3.6.4 are affected by a
+ vulnerability that allows arbitrary users
+ to modify privileges on a file server.
-o
Changes since 3.5.14:
---------------------
-o Stefan Metzmacher <metze at samba.org>
+o Jeremy Allison <jra at samba.org>
+ * Fix incorrect permission checks when granting/removing
+ privileges (CVE-2012-2111).
######################################################################
diff --git a/source3/rpc_server/srv_lsa_nt.c b/source3/rpc_server/srv_lsa_nt.c
index e903f0e..b9ea2d2 100644
--- a/source3/rpc_server/srv_lsa_nt.c
+++ b/source3/rpc_server/srv_lsa_nt.c
@@ -1691,6 +1691,10 @@ NTSTATUS _lsa_CreateAccount(pipes_struct *p,
struct lsa_info *handle;
struct lsa_info *info;
uint32_t acc_granted;
+ uint32_t owner_access = (LSA_ACCOUNT_ALL_ACCESS &
+ ~(LSA_ACCOUNT_ADJUST_PRIVILEGES|
+ LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS|
+ STD_RIGHT_DELETE_ACCESS));
struct security_descriptor *psd;
size_t sd_size;
@@ -1718,7 +1722,7 @@ NTSTATUS _lsa_CreateAccount(pipes_struct *p,
status = make_lsa_object_sd(p->mem_ctx, &psd, &sd_size,
&lsa_account_mapping,
- r->in.sid, LSA_POLICY_ALL_ACCESS);
+ r->in.sid, owner_access);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -1764,6 +1768,10 @@ NTSTATUS _lsa_OpenAccount(pipes_struct *p,
size_t sd_size;
uint32_t des_access = r->in.access_mask;
uint32_t acc_granted;
+ uint32_t owner_access = (LSA_ACCOUNT_ALL_ACCESS &
+ ~(LSA_ACCOUNT_ADJUST_PRIVILEGES|
+ LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS|
+ STD_RIGHT_DELETE_ACCESS));
NTSTATUS status;
/* find the connection policy handle. */
@@ -1788,7 +1796,7 @@ NTSTATUS _lsa_OpenAccount(pipes_struct *p,
/* get the generic lsa account SD until we store it */
status = make_lsa_object_sd(p->mem_ctx, &psd, &sd_size,
&lsa_account_mapping,
- r->in.sid, LSA_ACCOUNT_ALL_ACCESS);
+ r->in.sid, owner_access);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -2174,10 +2182,10 @@ NTSTATUS _lsa_AddAccountRights(pipes_struct *p,
return NT_STATUS_INVALID_HANDLE;
}
- /* get the generic lsa account SD for this SID until we store it */
+ /* get the generic lsa account SD until we store it */
status = make_lsa_object_sd(p->mem_ctx, &psd, &sd_size,
&lsa_account_mapping,
- r->in.sid, LSA_ACCOUNT_ALL_ACCESS);
+ NULL, 0);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
@@ -2245,10 +2253,10 @@ NTSTATUS _lsa_RemoveAccountRights(pipes_struct *p,
return NT_STATUS_INVALID_HANDLE;
}
- /* get the generic lsa account SD for this SID until we store it */
+ /* get the generic lsa account SD until we store it */
status = make_lsa_object_sd(p->mem_ctx, &psd, &sd_size,
&lsa_account_mapping,
- r->in.sid, LSA_ACCOUNT_ALL_ACCESS);
+ NULL, 0);
if (!NT_STATUS_IS_OK(status)) {
return status;
}
--
Samba Shared Repository
More information about the samba-cvs
mailing list