Sekurecproblemoj en flikoj proponitaj de Huawei-oficisto por protekti la Linuksan kernon

Programistoj de la projekto Grsecurity turniĝis atenton al la ĉeesto de bagatela ekspluatebla vundebleco en la flikaĵo HKSP (Huawei Kernel Self Protection), antaŭ kelkaj tagoj proponis plibonigi la sekurecon de la Linukso-kerno. La situacio memorigas kazo kun Samsung, en kiu provo plibonigi sisteman sekurecon kaŭzis la aperon de nova vundebleco kaj faciligis kompromiti aparatojn.

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 GitHub-paĝo HKSP retroaktive post malkovro vundeblecoj ankaŭ estis aldonita rimarku, ke la projekto estas disvolvita en mia libertempo por esplorceloj.

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 vokis Greg Kroah-Hartman, kiu respondecas pri konservado de la stabila branĉo de la Linukso-kerno, estis de intereso, kaj petis la verkinton rompi la monolitan peceton en partojn por simpligi revizion kaj reklamadon al la ĉefkerno. Kees Cook, kapo la projekto sur promocio aktiva protekta teknologio en la Linukso-kerno, ankaŭ pozitive respondis al la diakiloj kaj, inter la problemoj, atentigis pri la ligado al la arkitekturo x86 kaj la sciiga naturo de multaj reĝimoj, kiuj nur registras informojn pri la problemo, sed ne provas bloki ĝin.

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

Aldoni komenton