рдПрд▓рдПрд╕рдПрдо рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЗ рдкреНрд░рдореБрдЦ рддрдВрддреНрд░ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ

рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдВрдмреЗрдбрд┐рдВрдЧ рдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд (рдерд░реНрдб-рдкрд╛рд░реНрдЯреА) рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐, рдПрдХ рддрд░рдл, рдЗрд╕рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рддрд░рдл, рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмреАрдЪ, рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд▓рд┐рдирдХреНрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбреНрдпреВрд▓ рдлреНрд░реЗрдорд╡рд░реНрдХ (рдЗрд╕рдХреЗ рдмрд╛рдж, рдПрд▓рдПрд╕рдПрдо) рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд▓рд┐рдирдХреНрд╕ рдЖрдзрд╛рд░ рд╡рд┐рд╡реЗрдХрд╛рдзреАрди рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ (рдбреАрдПрд╕реА) рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╣реИред

рдПрд▓рдПрд╕рдПрдо рдХреЗ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдПрд▓рдПрд╕рдПрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА, рдЖрдкрдХреЛ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреЗ рдкреНрд░рдореБрдЦ рддрдВрддреНрд░ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЙрд╕реА рд╕рдордп, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдПрд▓рдПрд╕рдПрдо рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд░реНрддрдорд╛рди рд▓рд┐рдирдХреНрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХреАрдХреГрдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реАрдорд╛рдПрдВ рдЬреБрдбрд╝реА рд╣реБрдИ рд╣реИрдВред

рдПрд▓рдПрд╕рдПрдо рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕рд░рд▓ рд╣реИред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпрд╣ рдУрдПрд╕ рдХреЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реБрдХ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдХрд╕реНрдЯрдо рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рджреМрд░рд╛рди рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдореВрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕рдВрд░рдЪрдирд╛ рд╕реБрд░рдХреНрд╖рд╛_рдСрдкрд░реЗрд╢рди рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╡рд░рдг рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ / linux / security.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 struct security_operations { char name[SECURITY_NAME_MAX + 1]; ... int inode_permission(struct inode * inode, int mask); ... } 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдирд┐рдореНрди рдорд╛рдкрджрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╣реИ: рдПрдХ рдирд╛рдо рдФрд░ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдЯреВ рд╣реИрдВрдбрд▓рд░ рдлрд╝рдВрдХреНрд╢рдВрд╕, рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рд╛рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ - рдЪрд╛рд╣реЗ рд╡рд╣ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓, рд░реЛрд▓-рдЖрдзрд╛рд░рд┐рдд рдпрд╛ рдЕрдиреНрдп рдореЙрдбрд▓ рд╣реЛред рдпрд╣рд╛рдВ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХрд░реНрдиреЗрд▓ рдХреЛрдб рдХреЗ рдЙрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рддрдХ рд╡рд┐рд╖рдпреЛрдВ рдХреА рдкрд╣реБрдВрдЪ рдХреЛ рд╕рд╛рдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред

рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рдореБрдЦ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, LSM рд╣реБрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдХреЗ рдПрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬрдмрдХрд┐ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпрд╣ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЗрдХрд╛рдИ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╡рд░реНрддрдорд╛рди рд╕рдХреНрд░рд┐рдп рд╕реБрд░рдХреНрд╖рд╛_рдкреЙрдк рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ:

 static struct security_o perations * security_ops; static struct security_o perations default_security_ops = { . name = "default", }; 


рд╕рд┐рд╕реНрдЯрдо рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдЗрд╕ рд╕реВрдЪрдХ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рди default_security_ops рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдорд╛рдирдХ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдЗрд╕реА рд╕рдордп, рд╣реИрдВрдбрд▓рд░ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рднрд░рдирд╛ рдиреНрдпреВрдирддрдо рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбрд▓ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмрд╕ рдЗрд╕ рд╕реВрдЪрдХ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реБрдХ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

 int security_inode_permission(struct inode *inode, int mask) { if (unlikely(IS_PRIVATE(inode))) return 0; return security_ops->inode_permission(inode, mask); } 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, inode_permission рд╣реИрдВрдбрд▓рд░ inode_permission рдХреЛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ security_ops рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ inode_permission , рдЬреЛ рдКрдкрд░ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рдЙрджрд╛рд╣рд░рдг inode_permission , рдХрд░реНрдиреЗрд▓ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо (VFS) рдХреЗ рдПрдХ рдкреНрд░рдореБрдЦ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрднрд┐рдЧрдо рдирд┐рдпрдВрддреНрд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рд╡рд┐рд╖рдп) рдХреА рдкрд╣реБрдВрдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ:

 int inode_permission(struct inode *inode, int mask) { int retval; retval = sb_permission(inode->i_sb, inode, mask); if (retval) return retval; return __inode_permission(inode, mask); } int __inode_permission(struct inode *inode, int mask) { int retval; if (unlikely(mask & MAY_WRITE)) { /* * Nobody gets write access to an immutable file. */ if (IS_IMMUTABLE(inode)) return -EACCES; } retval = do_inode_permission(inode, mask); if (retval) return retval; retval = devcgroup_inode_permission(inode, mask); if (retval) return retval; return security_inode_permission(inode, mask); } 


security_inode_permission LSM рд╣реБрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ inode рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдлрд╝рд╛рдЗрд▓ (рдСрдмреНрдЬреЗрдХреНрдЯ) рддрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рд╡рд┐рд╖рдп) рдХреА рдкрд╣реБрдВрдЪ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ рдЕрдВрддрд┐рдо рдкрдВрдХреНрддрд┐ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрдм рдкрд┐рдЫрд▓реЗ рд╕рднреА рдЪреЗрдХ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░реЗ рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВ, рдЬреЛ рдПрд▓рдПрд╕рдПрдо рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбреНрдпреВрд▓ рдмреБрдирд┐рдпрд╛рджреА рд╕рд┐рд╕реНрдЯрдо рдореЙрдбрд▓ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕реЗ рдкреВрд░рдХ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдПрд▓рдПрд╕рдПрдо рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдг рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╡рд┐рднрд┐рдиреНрди рд╕рдордп рдЕрд╡рдзрд┐ рдореЗрдВ рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддреЗ рд╣реБрдП рджрд┐рд▓рдЪрд╕реНрдк рдЖрдВрдХрдбрд╝реЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЙрдЪрд┐рдд рд╣реИред рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХрддреНрд░ рдХреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдПрдХ рдЧреНрд░рд╛рдл рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдХрд░реНрдиреЗрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрд▓рдПрд╕рдПрдо рд╣реБрдХ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:



рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рд╕рдВрд╕реНрдХрд░рдг v2.6.11 рдХреЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ 134 рд╣реБрдХ рдереЗ, рддреЛ рд╕рдВрд╕реНрдХрд░рдг 3.8 рдХреЗ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ 189 рд╣реБрдХ рдереЗ, рдЬреЛ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрд▓рдПрд╕рдПрдо рдПрдХреАрдХрд░рдг рдХреА рдЧрд╣рд░рд╛рдИ рдХреА рдбрд┐рдЧреНрд░реА рдХрд╛ рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИред рджреВрд╕рд░реЗ, рд╣реБрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛, рд╕рдВрд╕реНрдХрд░рдг v2.6.34 рд╕реЗ рдкрд╣рд▓реЗ рдПрд▓рдПрд╕рдПрдо рдХреЗ рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рдж рдХреБрдЫ рд╕реНрдерд┐рд░реАрдХрд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЙрдкрддрдВрддреНрд░ рдХреА рдкрд░рд┐рдкрдХреНрд╡рддрд╛, рдЗрд╕рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рдкреВрд░реНрдгрддрд╛ рдФрд░ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╕реНрдерд┐рд░рддрд╛ рдХрд╛ рд╕реВрдЪрдХ рд╣реИред

LSM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╕рд╛рдзрди рдХреЗ рд░реВрдк рдореЗрдВ, рдПрд▓рдПрд╕рдПрдо рдЗрд╕рдХрд╛ рдПрдХ рдЕрднрд┐рдиреНрди рдЕрдВрдЧ рдирд╣реАрдВ рд╣реИред рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдЗрд╕ рдврд╛рдВрдЪреЗ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ CONFIG_SECURITY рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдЪрд░ рдХреА рд╕реНрдерд┐рддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рд╕рдВрдХрд▓рди рдЪрд░рдг рдкрд░ рд╕реЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдореВрд▓ рдПрд▓рдПрд╕рдПрдо рдХреЗ рдмрд┐рдирд╛ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рднреА, рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╛рдлреА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓рдЧрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреА рдЕрдкрдиреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдПрд▓рдПрд╕рдПрдо рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдХрд░реНрдиреЗрд▓ рдПрд▓рдПрд╕рдПрдо рд╣реБрдХ рдХреЗ рд╕рд╛рде рдХрд╡рд░реЗрдЬ рдХреА рдкреВрд░реНрдгрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдЙрди рдЬрдЧрд╣реЛрдВ рдкрд░ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдХреА рдкреНрд░рдореБрдЦ рд╡рд╕реНрддреБ рдЬреЛ рдПрд▓рдПрд╕рдПрдо рддрдВрддреНрд░ рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ, рд╡рд╣ рд╣реИ рд╕реБрд░рдХреНрд╖рд╛_рдУрдк рдкреЙрдЗрдВрдЯрд░, рдЬреЛ рдХрд┐ рдХрд░реНрдиреЗрд▓ рдореЗрдореЛрд░реА рд╕реЗрд▓ рд╣реИ рдЬреЛ рд╡рд░реНрддрдорд╛рди (рд╕рдХреНрд░рд┐рдп) рдПрд▓рдПрд╕рдПрдо рдореЙрдбрд▓ рдХреЗ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдкрддреЗ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдореЙрдбрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА рдСрдкрд░реЗрд╢рди рдЗрд╕ рд╕реВрдЪрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдпрд╣ рддрд░реНрдХ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЗрд╕ рдореВрд▓реНрдп рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред

рдХрд░реНрдиреЗрд▓ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдПрд▓рдПрд╕рдПрдо-рдореЙрдбрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЛрд▓рддреЗ рд╣реБрдП, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрд▓рдПрд╕рдПрдо рдкрд░ рд▓рд┐рдирдХреНрд╕ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рд▓рдЧрд╛рдП рдЧрдП рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдЪрд░рдгрдмрджреНрдз рдкрд░рд┐рдЪрдп рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реА рд╣реБрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдХрд░реНрдиреЗрд▓ рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рд╡рд░реНрддрдорд╛рди рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН:



рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрд▓рдПрд╕рдПрдо рдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░рд╛рд╕реНрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрд╣рд▓реВ


рдпрд╣ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдХрд░реНрдиреЗрд▓ v2.6.34 рд╢реБрд░реВ v2.6.34 , рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рд╡рд░реНрддрдорд╛рди рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрдИ рдирд┐рдпрдорд┐рдд рдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рдкрд░рд┐рд╕реНрдерд┐рддрд┐ рдХреЛ рджреВрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╡рд░реНрддрдорд╛рди рдореЙрдбрд▓ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдкрддреЗ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдкрд╛рдИ рдЬрд╛рддреА рд╣реИ - security_ops ред рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд░реНрдиреЗрд▓ рдХреЛрдб рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЬрд╣рд╛рдВ рдЗрд╕ рд╕реВрдЪрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ gdb рдбреАрдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ 64-рдмрд┐рдЯ x86 рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдирд┐рд░реНрдпрд╛рдд рдХреА рдЧрдИ gdb рд╣реБрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕реВрдЪреА:

 int security_sb_copy_data(char *orig, char *copy) { return security_ops->sb_copy_data(orig, copy); } EXPORT_SYMBOL(security_sb_copy_data); 

 # gdb vmlinux /proc/kcore (gdb) x/7i security_sb_copy_data 0xffffffff811f61b0: push %rbp 0xffffffff811f61b1: mov %rsp,%rbp 0xffffffff811f61b4: data32 data32 data32 xchg %ax,%ax 0xffffffff811f61b9: mov 0x881690(%rip),%rax # 0xffffffff81a77850 0xffffffff811f61c0: callq *0x98(%rax) 0xffffffff811f61c6: pop %rbp 0xffffffff811f61c7: retq (gdb) x/s* 0xffffffff81a77850 0xffffffff81850fa0: "default" 


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд░реЗрд╖рдг рдирд┐рд░реНрджреЗрд╢ callq *0x98(%rax) sb_copy_data рд╣реИрдВрдбрд▓рд░ sb_copy_data рдХреЛ рдСрдлрд╕реЗрдЯ 0x98 рдкрд░ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ %rax рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╕реВрдЪрдХ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣реИред рдЕрд░реНрдерд╛рддреН, %rax рдореЗрдВ security_ops рднреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕ рд╕реВрдЪрдХ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрдиреБрдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ, рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рдмрд╛рдж рдирд┐рд░реНрджреЗрд╢, рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдХрдорд╛рдВрдб рдХреЛ рд╕реНрдХреИрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП mov 0x881690(%rip),%rax , mov 0x881690(%rip),%rax рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдорд╛рди рд▓реЛрдб рдХрд░рдирд╛ рдФрд░ рдЕрдкрдиреЗ рдСрдкрд░реЗрдВрдб рдХрд╛ рдПрдХ рд╕рд░рд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ред , рдЖрд╡рд╢реНрдпрдХ рд╕реВрдЪрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдиреАрдЪреЗ рд╡рд╣ рдХреЛрдб рд╣реИ рдЬреЛ рдЗрд╕реЗ udis86 disassembler рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ x86 рдХреЗ рд▓рд┐рдП рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:

 static void * get_lsm_entry(void) { /* this one is exported */ return (void *)&security_sb_copy_data; } static struct security_operations ** get_lsm_sop(void) { ud_t ud; void * entry = get_lsm_entry(), * result = NULL; ud_initialize(&ud, BITS_PER_LONG, UD_VENDOR_ANY, entry, 128); while (ud_disassemble(&ud) && ud.mnemonic != UD_Iret) { if (ud.mnemonic == UD_Imov && \ ud.operand[0].type == UD_OP_REG && ud.operand[1].type == UD_OP_MEM) { #ifdef CONFIG_X86_64 result = entry + ud_insn_off(&ud) + ud_insn_len(&ud); #endif result = result + ud.operand[1].lval.sdword; break; } } return result; } 


рдЗрд╕ рдкреНрд░рдХрд╛рд░, security_ops рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдкреЙрдЗрдВрдЯрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдорд╛рди рдХреЛ рдмрджрд▓рдХрд░ рд╕рдХреНрд░рд┐рдп рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдлреЗрдХреЗрд▓реНрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдХреЛрдб рджреЗрддрд╛ inode_permission рдЬреЛ inode_permission рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред

рдирд┐рд╖реНрдХрд░реНрд╖


рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╣рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд░реНрдиреЗрд▓ рдХреЗ рдмрд╛рд╣рд░ рдПрд▓рдПрд╕рдПрдо рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╢реБрд░реВ рдХреА рдЧрдИ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ рдврд╛рдВрдЪрд╛ рд╣рд┐рдд рдХрд╛ рд╣реИ рдХрд░реНрдиреЗрд▓ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рдорд╣рд╛рди рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕рдХреА рдХреНрд╖рдорддрд╛рдПрдВ рдПрд▓рдПрд╕рдПрдо рд╣реБрдХ рдХреЗ рд╕рд╛рде рдХрд░реНрдиреЗрд▓ рдХреЛрдб рдХреЗ рдХрд╡рд░реЗрдЬ рдХреА рдбрд┐рдЧреНрд░реА рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВред рдФрд░ рдпрджреНрдпрдкрд┐ рдЖрдзреБрдирд┐рдХ рдЧреБрдард▓реА рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдпреЗ рд╕реАрдорд╛рдПрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдПрд▓рдПрд╕рдПрдо рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реНрд╡рдпрдВ, рд╕рд░рд▓ рдФрд░ рдХреБрд╢рд▓ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдВрдкреВрд░реНрдг рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░реНрдиреЗрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбрд▓ рдПрдХ рдПрдХрд▓ рдкреЙрдЗрдВрдЯрд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ - security_ops !

рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП


  1. рд▓рд┐рдирдХреНрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбреНрдпреВрд▓
  2. udis86 рдХрд╛ рдкреНрд░рд▓реЗрдЦрди
  3. рдЬреАрдПрд╕рд╕реАрдЖрд░рд╕реА рдФрд░ рдЖрд░рдПрд╕рдмреАрдПрд╕реА рдПрд▓рдПрд╕рдПрдо рдЖрд▓реЛрдЪрдирд╛

Source: https://habr.com/ru/post/In196372/


All Articles