Programistoj de la projekto Grsecurity
La HKSP-flakoj estis publikigitaj de Huawei-dungito, inkluzivas mencion de Huawei en la profilo GitHub kaj uzas la vorton Huawei en la nomo de la projekto (HKSP - Huawei Kernel Self Protection). Samtempe, reprezentantoj de Huawei neis la ligon de la projekto HKSP kun la kompanio kaj deklaris, ke la kodo estis disvolvita laŭ persona iniciato de la dungito, ne estas oficiala Huawei-projekto kaj ne estas uzata en la produktoj de la kompanio. On
HKSP inkluzivas ŝanĝojn kiel ekzemple hazardigo de kompensoj en la kredstrukturo, protekton kontraŭ atakoj sur la uzantidentigilo nomspaco (pid nomspaco), apartigo de la proceza stako de la mmap-areo, detekto de duoblaj vokoj al la kfree-funkcio, blokado de likoj tra la pseŭdomo. -FS /proc (/proc/ {moduloj, ŝlosiloj, ŝlosiluzantoj}, /proc/sys/kernel/* kaj /proc/sys/vm/mmap_min_addr, /proc/kallsyms), plibonigita uzantspaca adreso-hazardigo, plia Ptrace protekto, plibonigita smap kaj smep-protekto , la kapablo malpermesi sendi datumojn per krudaj ingoj, bloki malĝustajn adresojn en UDP-ingoj kaj kontroli la integrecon de kurantaj procezoj. Ĝi ankaŭ inkluzivas la Ksguard-kernan modulon, kiu celas detekti provojn enkonduki tipajn radikilojn.
Flikiloj
Studo de la diakilo de Grsecurity-programistoj rivelis multajn erarojn kaj malfortojn en la kodo, kaj ankaŭ montris la foreston de minaca modelo, kiu permesus al ili adekvate juĝi la kapablojn de la projekto. Por klare pruvi, ke la kodo estis skribita sen uzi sekurajn programajn metodojn, estas donita ekzemplo de bagatela vundebleco en la prizorganto.
dosiero /proc/ksguard/state, kiu estas kreita kun rajtoj 0777, implicante ke ĉiuj havas skriban aliron. La funkcio ksg_state_write, uzata por analizi komandojn skribitajn al /proc/ksguard/state, kreas tmp[32] bufron al kiu datumoj estas skribitaj surbaze de la grandeco de la operando pasita, sen konsideri la grandecon de la celbufro kaj sen kontrolante la parametron kun la korda grandeco. Tiuj. Por anstataŭigi parton de la kernstako, atakanto nur bezonas skribi speciale formatitan linion al /proc/ksguard/state.
static ssize_t ksg_state_write(struct-dosiero *dosiero, const char __uzanto *buf,
size_t len, loff_t *offset)
{
u64 valoro;
char tmp[32];
grandeco_t n = 0;
if (kopiu_de_uzanto (tmp, buf, len))
reveno -1;
valoro = simple_strtoul(tmp, '\0', 10);
...
Eksplua prototipo:
char buf[4096] = {};
int fd = open(“/proc/ksguard/state”, O_WRONLY);
se (fd >= 0) {
skribu(fd, buf, sizeof(buf));
fermi(fd);
}
fonto: opennet.ru