Byla vydána nová verze 9.5 sady aplikací pro SSH komunikaci OpenSSH. Nově ve výchozím stavu ssh-keygen generuje Ed25519 klíče. Do ssh byla přidána možnost obfuskace časováním stisknutí kláves (keystroke timing obfuscation).
Konference OpenAlt 2023 proběhne o víkendu 11. a 12. listopadu v Brně. Přihlásit přednášky lze do neděle 08. října 23:59.
V X.Org v libX11 do 1.8.7 a libXpm do 3.5.17 bylo nalezeno a v upstreamu opraveno 5 bezpečnostních chyb (CVE-2023-43785, CVE-2023-43786, CVE-2023-43787, CVE-2023-43788 a CVE-2023-43789). Dvě nejstarší jsou s námi 35 let. Obsaženy byly již v X11R2 vydaném v únoru 1988.
Byly publikovány informace o bezpečnostní chybě Looney Tunables aneb CVE-2023-4911 v glibc ld.so. Útočník ji může využít k lokální eskalaci práv. Vyzkoušeno na výchozích instalacích linuxových distribucí Fedora 37 a 38, Ubuntu 22.04 a 23.04 a Debian 12 a 13. Chyba byla do glibc zavlečena v dubnu 2021. Detaily v txt.
Na Kickstarteru byla spuštěna crowdfundingová kampaň na podporu telefonu Murena 2 s /e/OS. Telefon má 2 hardwarové přepínače. Prvním lze jednoduše vypnout kamery a mikrofony. Druhým se lze odpojit od sítí.
Společnost Qualcomm publikovala říjnový bezpečnostní bulletin. V úvodu informuje, že bezpečnostní chyby CVE-2023-33106, CVE-2023-33107, CVE-2022-22071 a CVE-2023-33063 jsou cíleně využívány útočníky. O CVE-2022-22071 se píše už v loňském květnovém bulletinu. Detaily o zbylých chybách jsou k dispozici OEM partnerům. Veřejně budou k dispozici až s vydáním prosincového bulletinu.
Byla vydána nová verze 5.18 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 12.5.6. Tor na verzi 0.4.8.6.
Šifrovací nástroj VeraCrypt v menším vydání 1.26.7 nejen opravuje chyby a aktualizuje podporované algoritmy (podrobnosti v poznámkách vydání), ale také přestává podporovat původní svazky TrueCrypt.
V sobotu 7. října proběhne Maker Faire Liberec, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.
Mastodon vydal výroční zprávu za rok 2022 (pdf).
#define EVENT_SIZE ( sizeof (struct inotify_event) ) #define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) ) int main(int argc, char **argv) { int length, i = 0; int fd; int wd; char buffer[BUF_LEN]; fd = inotify_init(); if (fd < 0) { perror("inotify_init"); } wd = inotify_add_watch(fd, "/home/tomesh/Dropbox/C/sync", IN_ALL_EVENTS); if (length < 0) { perror("read"); } while (1) { length = read(fd, buffer, BUF_LEN); struct inotify_event *event = (struct inotify_event *) &buffer[ i ]; if (event->len) { if (event->mask & IN_CREATE) { if (event->mask & IN_ISDIR) { printf("The directory %s was created.\n", event->name); } else { printf("The file %s was created.\n", event->name); } } if (event->mask & IN_DELETE) { if (event->mask & IN_ISDIR) { printf("The directory %s was deleted.\n", event->name); } else { printf("The file %s was deleted.\n", event->name); } } if (event->mask & IN_MODIFY) { if (event->mask & IN_ISDIR) { printf("The directory %s was modified.\n", event->name); } else { printf("The file %s was modified.\n", event->name); } } if (event->mask & IN_MOVED_FROM) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was moved from.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was moved from.\n", event->name, event->cookie); } } if (event->mask & IN_MOVED_TO) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was moved to.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was moved to.\n", event->name, event->cookie); } } if (event->mask & IN_MOVE_SELF) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %ds was itself moved.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was itself moved.\n", event->name, event->cookie); } } if (event->mask & IN_DELETE_SELF) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was itself deleted.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was itself deleted.\n", event->name, event->cookie); } } if (event->mask & IN_OPEN) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was opened.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was opened.\n", event->name, event->cookie); } } if (event->mask & IN_ATTRIB) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d attr was changed.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d attr was changed.\n", event->name, event->cookie); } } if (event->mask & IN_ACCESS) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was accessed.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was accessed.\n", event->name, event->cookie); } } } } (void) inotify_rm_watch(fd, wd[0]); (void) close(fd); exit(0); }
Řešení dotazu:
i += EVENT_SIZE + event->len;
#define EVENT_SIZE ( sizeof (struct inotify_event) ) #define BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) ) int main(int argc, char **argv) { int length, i; int fd; int wd; char buffer[BUF_LEN]; struct inotify_event *event; fd = inotify_init(); if (fd < 0) perror("inotify_init"); wd = inotify_add_watch(fd, "/home/tomesh/Dropbox/C/sync", IN_ALL_EVENTS); while (1) { i = 0; length = read(fd, buffer, BUF_LEN); if (length < 0) perror("read"); if (length == 0) sleep(1); while (i < length) { event = (struct inotify_event *) &buffer[i]; if (event->mask & IN_CREATE) { if (event->mask & IN_ISDIR) { printf("The directory %s was created.\n", event->name); } else { printf("The file %s was created.\n", event->name); } } if (event->mask & IN_DELETE) { if (event->mask & IN_ISDIR) { printf("The directory %s was deleted.\n", event->name); } else { printf("The file %s was deleted.\n", event->name); } } if (event->mask & IN_MODIFY) { if (event->mask & IN_ISDIR) { printf("The directory %s was modified.\n", event->name); } else { printf("The file %s was modified.\n", event->name); } } if (event->mask & IN_MOVED_FROM) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was moved from.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was moved from.\n", event->name, event->cookie); } } if (event->mask & IN_MOVED_TO) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was moved to.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was moved to.\n", event->name, event->cookie); } } if (event->mask & IN_MOVE_SELF) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %ds was itself moved.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was itself moved.\n", event->name, event->cookie); } } if (event->mask & IN_DELETE_SELF) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was itself deleted.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was itself deleted.\n", event->name, event->cookie); } } if (event->mask & IN_ATTRIB) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d attr was changed.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d attr was changed.\n", event->name, event->cookie); } } if (event->mask & IN_ACCESS) { if (event->mask & IN_ISDIR) { printf("The directory %s with cookie %d was accessed.\n", event->name, event->cookie); } else { printf("The file %s with cookie %d was accessed.\n", event->name, event->cookie); } } i += sizeof(struct inotify_event) +event->len; } } (void) inotify_rm_watch(fd, wd); (void) close(fd); exit(0); }
Tiskni
Sdílej: