28-01-2015, 23:53
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,776
|
|
מתחרה ל shellshock: באג חמור ב glibc - עדכנו את החבילה מהר ככל האפשר
הבאג תוקן כבר לפני זמן מה, מבלי שהיו מודעים לכך שמתקנים באג אבטחה. לפיכך, לא כל ההפצות עדכנו לגירסא האחרונה של glibc (בייחוד לא LTS) ואם זה המצב, ההפצה עשוייה להיות פגיעה אפילו אם אתם מעדכנים חבילות באופן רציף, ועשיתם זאת לפני אתמול.
חשוב להפעיל מחדש את כל השירותים והתוכנות לאחר השדרוג כדי שיטען הקוד החדש (ואתם יכולים גם פשוט לאתחל ולהגיע לאותו אפקט אם זה יותר נוח לכם...)
http://www.openwall.com/lists/oss-security/2015/01/27/9
כדי לבדוק אם המערכת שלכם פגיעה, העתיקו והדביקו את הקוד הבא בטרמינל:
קוד:
cat > GHOST.c << EOF
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#define CANARY "in_the_coal_mine"
struct {
char buffer[1024];
char canary[sizeof(CANARY)];
} temp = { "buffer", CANARY };
int main(void) {
struct hostent resbuf;
struct hostent *result;
int herrno;
int retval;
/*** strlen (name) = size_needed - sizeof (*host_addr) - sizeof (*h_addr_ptrs) - 1; ***/
size_t len = sizeof(temp.buffer) - 16*sizeof(unsigned char) - 2*sizeof(char *) - 1;
char name[sizeof(temp.buffer)];
memset(name, '0', len);
name[len] = '\0';
retval = gethostbyname_r(name, &resbuf, temp.buffer, sizeof(temp.buffer), &result, &herrno);
if (strcmp(temp.canary, CANARY) != 0) {
puts("vulnerable");
exit(EXIT_SUCCESS);
}
if (retval == ERANGE) {
puts("not vulnerable");
exit(EXIT_SUCCESS);
}
puts("should not happen");
exit(EXIT_FAILURE);
}
EOF
gcc GHOST.c -o GHOST ; ./GHOST ; rm GHOST.c GHOST
(שימו לב: אם במקרה יש לכם בספריה שבה אתם מריצים את הנ"ל קובץ ששמו GHOST או GHOST.c, הנ"ל ימחק אותו)
|