באמת לא ידענו שזה יהיה המצב?

בכנס RSA האחרון זוג חוקרים, שאחד מהם הוצג כחובב לינוקס מושבע, הציגו סקר חדש. הוצג בו, איזו הפתעה, שלחלונות יש פחות פגיעויות אבטחת מידע מאשר ללינוקס.

לפני כמה ימים התפרסם המחקר עצמו. ירימו ידיהם, בבקשה, האנשים שיופתעו לגלות שהמחקר מומן ע”י מיקרוסופט. אפילו חובב הלינוקס המושבע לא כל כך מושבע.

עכשיו בואו נעשה בדיקה אמיתית של “מה קרה פה”.

האם החוקרים עיוותו את העובדות? לא סביר. למעשה, הם חשפו לחלוטין את שיטת הבדיקה שלהם. כל אחד מוזמן לנסות שלחזר את שיטת איסוף הנתונים ולמצוא את אותן התוצאות.

האם מיקרוסופט התערבה בתוצאות? סביר להניח שלא.
האם לחוקרים ניתנה יד חופשית במחקר? כן, למעט העובדה ששיטת המחקר נקבעה לפני ההתחייבות לתשלום. זה מופיע בצורה מפורשת בראיון איתם בקישור למעלה. זאת, למעשה, הנקודה המרכזית.

המחקר הזה, כמו קודמיו, אינו נעשה לפתע חסר משמעות בגלל שמיקרוסופט מימנה אותו. המחקר הזה חסר משמעות בגלל שמטריקות הבדיקה הן חסרות משמעות. העובדה שמיקרוסופט מימנה אותו קשורה לא לתוצאות שלו, אלא לזה שהוא נעשה בכלל. ללא המימון של מיקרוסופט, אף אחד לא היה בודק את המדדים האילו כדי להשוות בין מערכות הפעלה.

השוואה כמותית של בעיות אבטחה הינה חסרת כל משמעות פרקטית. השוואה משמעותית צריכה לקחת חומרה אבסולוטית, כמה רחב וכמה עמוק הידע על הבעיה, עד כמה קל לבצע את עדכון האבטחה, ואפילו מה המוניטין של מוציא העדכונים לגבי הסיכוי שהמערכת תשבר בגלל העדכון. כל הנ”ל משפיעים על זמן החשיפה, וללא מדידה של כל הנ”ל, אין משמעות לבדיקה.

דוגמאות:
חומרה אבסולוטית – לא מספיק להשוות בין החומרה שהספקים מייחסים לבעיה. צריך גם להשוות על פי מדדים יותר אוביקטיבים. למשל, בעיה שפירושה הדבקה של המערכת ללא כל פעולה של המשתמש, בעיה שפירושה הדבקה של המערכת אחרי פעולה תמימה של המשתמש, האם יש אזהרה, עד כמה היא רלוונטית, ועד כמה היא נפוצה בהקשרים אחרים, שבהם צריך להחליט אחרת מאיך שצריך להחליט פה.

כמה רחב וכמה עמוק הידע – ברור שמרגע שבעיה היא פומבית אז הסיכוי להתקפה עולה. מה שאנשים חייבים להבין הוא שהסיכוי להתקפה טרם היות הבעיה פומבית אינו אפס. כמה זמן היתה הבעיה ידועה למדווח טרם הדיווח, כמה זמן היתה הבעיה ידועה לחברה, כמה אנשים מחוץ לחברה ידעו על הבעיה טרם הפתרון, וכו.

עד כמה קל לבצע את עדכון האבטחה – אם עדכון דורש שמישהו יזכור להכנס למערכת, או שהוא דורש הפעלה מחדש (ובכך השבתה של המערכת לכמה דקות) הסיכוי שיתקינו אותו בזמן סביר יורד.

מוניטין האמינות – על פניו השיקול הכי מוזר. מצד שני, אם כל עדכון אבטחה מצריך הרמת מערכת בדיקה, הרצת העדכון במשך כמה ימים טרם התקנה על המערכת האמיתית, ולהמתין לשמוע איך האינטרנט מגיב לעדכון, הרי שהזמן עד שהעדכון יותקן בפועל עולה, ובהתאם גם זמן הפגיעות הממוצע.

לקיחת חלק מהגורמים באופן מנותק הינה מטעה. בגלל זה, אין טעם להתעמק במחקרים ממומנים. לא על אבטחה, לא על TCO, ולא על אף גורם אחר.

שחר

יש חבילה שלי בתוך Debian

נכון ללפני כמה באג מספר 296284 במערכת הבאגים של דביאן נסגר. פירושו של דבר הוא שעבדכם הנאמן הינו, באופן פורמלי, מתחזק של חבילה בפרוייקט דביאן.

החל ממחזור העדכונים הקרוב (כנראה – מחר בבוקר) כל מי שמריץ מערכת דביאן Sid יוכל להתקין את rsyncrypto פשוט על ידי זה שיכתוב “apt-get install rsyncrypto”.

השלב הבא – להעשות למפתח דביאן מהשורה…

שחר

אפל מאוד רוצים למכור

מאוד.

בגלל זה החברה שמוכרת בשבילהם (apple-center) לא מוכנה להתחייב על זמני אספקה של mac-mini. נכון, שמעתם.

הם רוצים שאתם תתחייבו על התשלום, ואז הם ייקחו מעל חודש, כנראה חודשיים, כדי לקבל את המכשיר בפועל, ואז להניח שהעסקה עדיין רלוונטית מבחינתכם, לא משנה מה שער הדולר, מצב חשבון הבנק שלכם, או כל שיקול אחר.

אני אפילו לא מדבר על זה שדולר מבחינתם זה על פי “שער המחאות הגבוה”.

האמת, לא נראה לי שאני אקנה בתנאים האילו.

שחר

מתנת יום הולדת?

אתמול, לראשונה מאז שהתחלתי לעבוד על PgOleDb, קיבלתי תרומת קוד ממישהו שאיננו אני.

אז נכון, נאלצתי לדחות אותה, אבל זה עדיין מראה שהפרוייקט עבר רמה קריטית מסויימת.

יום הולדת שמח לי

שחר

נ.ב.
הגעתי לגיל שבו מתחילים לתת את הגיל בבסיס הקסה-דצימל (16). לכל השואלים, אני בן 20.

ש.

דבר גדול נפל!

יריב, לאחר כחצי שנה, ממש תיקן את ה-RSS!!

לא יאומן!

ותודה לדוד שהפנה את תשומת ליבי לנושא.

דרך אגב, במקרה או שלא במקרה, הדבר קרה בתזמון מדהים. בדיוק הגעתי לנקודה שבה צריך להחליט אם להשקיע עוד 100 שקל במנוי פרו לעוד שנה. בגלל נושא ה-RSS כבר הייתי משוכנע שאני אצטרך לעבור. אפילו התחלתי לחפש אלטרנטיבות, אבל:
– הבלוגים של תפוז נראים פחות מסודרים, פחות תומכים בדפדפנים אלטרנטיביים.
– לא רציתי לפנות ללינמגזין, בעיקר כי אני רוצה חופש לדבר פה גם על דברים שאינם קשורים למחשבים וללינוקס.
– לא מצאתי שום דבר אחר שפונה לקהל ישראלי, והינו סביר מבחינת הניהול.

קשה, קשה.

אם ה-RSS היה ממשיך, הייתי מברר עם מנהלי לינמגזין, אבל כמו שהדברים עומדים כרגע נראה שנפתרה הבעיה. בשעה טובה ומוצלחת.

שחר

אני חייב לכם תשובה

הפוסט היום יהיה לא ברור למי שלא הכין שעורי בית. מכיוון שמדובר בתחום שאני עצמי נחשפתי אליו רק בשבוע האחרון, אני מרשה לעצמי לשלוח אתכם לקרוא קצת במקורות שאני מפנה אליהם. למי שאין כוח אני אתן תמצית: אם אתם לא אוהבים במיוחד חידות – לא נורא. אם כן, תשקיעו.

לפני כמה ימים שאלתי פה האם זה חדשני? ובכן, יש לי תשובה. התשובה היא “כן ולא”.

רקע: החידה נקראת “Instant insanity”, והרעיון הוא שיש ארבע קוביות שכל אחת מהפאות בהן צבועה באחד מארבעה צבעים. המטרה היא לסדר את הפיאות כך שייווצרו ארבעה צדדים ארוכים, כך שבכל צד לא יופיע צבע יותר מפעם אחת.

הקישור שהבאתי נתן דרך אנליטית להקטין משמעותית את מרחב הבעיה, ובכך למצוא פתרון בצורה מהירה. אני תהיתי האם הדרך מוצאת פתרון תמיד.

בפרט, תהיתי אם הדרך מוצאת פתרון תמיד בגלל שהצלחתי להגיע לסידורי צבעים שהם פתירים מחד, אך הדרך המוצעת לא מצאה להם פתרון מאידך. תהיתי, האם זה חדשני.

ראשית, הסידורים שמצאתי. אני אתן את הסידור הכי פשוט:
קוביה 1 – כל הפאות כחולות
קוביה 2 – כל הפאות ירוקות
קוביה 3 – כל הפאות אדומות
קוביה 4 – כל הפאות צהובות

מצד אחד, אם מפעילים את שיטת הפתרון על הקוביות הנ”ל מקבלים שלוש קשתות שיוצאות ונכנסות לאותה צומת עבור כל אחת מהצמתים. מכיוון שאין אף קשת שמחברת אף שני צמתים, ברור שלא ניתן לייצר מעגל באורך ארבע, ולא כל שכן מעגל באורך ארבע שמכיל קוביות שונות על כל קשת. בתיאוריה היינו אמורים להבין, על כן, שאין פתרון לקוביות.

מצד שני, תתקשו מאוד למצוא סידור של הקוביות המתוארות שאינו פתרון.

אז, האם זה חדשני?
תשובה: כן ולא.
כן – הפתרון כפי שהוא מובא בקישורים שהבאתי, כמו גם הפתרון שתקבלו מהרבה חובבי חידות שתשאלו, לא מצליח למצוא פתרון לבעיה המתוארת. במובן זה, אפשר להגיד שהוצאתי מתהום הנשייה מקרה קצה שקצת נשכח מהלב.

לא – הפתרון האמיתי, זה שהוכח מתמטית, מכסה גם את המקרה שהבאתי. במובן זה ניתן להגיד שאני לא הראשון שעלה על הבעיה. הפתרון המלא מתואר (בקובץ powerpoint, אבל נפתח עם Open Office בקלות) כאן. בקיצור – לא חייבים למצוא מעגל אחד שמכסה את כל הצמתים. מותר למצוא כמה מעגלים שאתם רוצים, ובתנאי שלא משתמשים ביותר מארבע קשתות. במקרה שאני מתאר יש ארבע מעגלים ל”קדימה אחורה” וארבעה ל-“ימין שמאל”, והבעיה מוכרזת כפתורה.

מתוך קצת הירהורי לאחר מעשה, השאלה היא פה אורכי השרשרת. אם נסתכל על חידה כלשהי מסוג זה, ובפרט על הפתרון שלה, הרי שניתן לייצר שרשרת מהצבעים. ניקח את הצבע בקוביה הראשונה מקדימה, ונשאל מהו הצבע מאחורה על אותה הקוביה. עכשיו נחפש את אותו הצבע מקדימה ונשאל איזה צבע יש מאחוריו. נחזור על התהליך עד שנגיע חזרה לצבע הראשון. כל קוביה שסרקנו כך הינה קשת בגרף הפתרונות. כל הדוגמאות הראשונות שציינתי לגבי איך מיישמים את הפתרון האנליטי מניחות, וכאן השגיאה שלהן, שהתהליך הזה יכלול את כל הקוביות, או שהקשתות משלימות מעגל אחרי ארבע קשתות. ברור לחלוטין שבדוגמא הנגדית שנתתי זה לא המצב.

בפתרון המלא אנחנו בעצם בוחרים את אחת הקוביות שלא נכללו במעגל הראשון, וחוזרים על התהליך איתן. וכן הלאה וכן הלאה, עד שכיסינו את כל הקוביות.

שחר

מכתב אמיתי

זהו מכתב ששלחתי לפני כמה דקות. אני חושב שהוא דיי מדבר בעד עצמו.

Ragowan, Danny wrote:

| Hello Shachar ,
| Hope you are well.. it has been a while since we last have communicated ;-))
|
|
Yes, it was.

| Just following up with you to see whether all is in order with regards to
| Compuware software ..
|
Nothing new has transpired. Almost nothing new, that is.

A while back I was stuck while developing an open source project, with an unexplained access violation. I got a demo from you, which totally and utterly failed to spot the problem. I decided that much though I like the idea behind the Compuware tools, it is not worth the money.

Since then I managed to find out the cause of the problem that haunted me back then. It turns out to be a bug in ATL. The details are available at http://gborg.postgresql.org/pipermail/oledb-dev/2004-November/000155.html.

Quite frankly, I expected bounds checker to be able to tell me more about the bug. If it told me “you tried to access memory area X, which was allocated here and freed here”, the entire search would have been so much shorter. I realize that this is not a technically simple task to achieve, but as things stand Bounds Checker failed the usefulness test as far as I’m concerned, and so I don’t think I will be acquiring it. I should point out that open source project “valgrind” does correctly detect such errors and give useful output, and without performing any compile time instrumentation. I would have used it here, except it only has a Linux version. Being open source, however, there is nothing stopping you from applying the valgrind technique for Windows.

Here is an example of a program exhibiting the precise same type of error as happened in ATL, which caused the access violation we were trying to debug using bounds checker.

#include 
#include

int main()
{
const char **a;

a=malloc(sizeof(*a));

*a="Hello";
free(a);
printf("%sn", *a);

return 0;
}



Running with valgrind:

==17356== Memcheck, a memory error detector for x86-linux.
==17356== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al.
==17356== Using valgrind-2.4.0.rc3, a program supervision framework for x86-linux.
==17356== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al.
==17356== For more details, rerun with: -v
==17356==
==17356== Invalid read of size 4
==17356== at 0x804842A: main (valgrindtest.c:12)
==17356== Address 0x1BA58028 is 0 bytes inside a block of size 4 free'd
==17356== at 0x1B904B04: free (vg_replace_malloc.c:152)
==17356== by 0x8048426: main (valgrindtest.c:11)
Hello
==17356==
==17356== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 13 from 1)
==17356== malloc/free: in use at exit: 0 bytes in 0 blocks.
==17356== malloc/free: 1 allocs, 1 frees, 4 bytes allocated.
==17356== For counts of detected errors, rerun with: -v
==17356== No malloc'd blocks no leaks are possible.



| Pls let me know if I can be of any assistance to you concerning our products
| at this time
|
|
Not at this time, no. As you can see, your open source competition is doing a better job at it than you.

| Always at your service!
| Best regards ,
|
|
Shachar


Shachar Shemesh
Lingnu Open Source Consulting ltd.
Have you backed up today’s work? http://www.lingnu.com/backup.html



Compuware הינה, למיטב ידיעתי, החברה המובילה בכלים למטרות עזרה לפיתוח. הם מייצרים את SoftICE המיתולוגי. הכלים שלהם נחשבים מהמובילים לצרכי בדיקות מהסוג הזה. כאשר נתקלתי בבעיה במצויינת במכתב, זה היה אף טבעי לבדוק את הפתרונות שלהם כדרך לפתרון הבעיה.

לפני הכל, אני חייב לציין לטובה את היחס המצויין שקיבלתי מהם. קיבלתי Trial מוגבל בזמן, אבל חוץ מזה פעיל לחלוטין. כאשר נתקלתי בבעיות, צוות התמיכה שלהם השתדל בצורה מאוד מאוד מרשימה יחסית למישהו שהוא (עדיין) לא לקוח משלם. הצינים יגידו שבגלל שאני עוד לא לקוח משלם הם השתדלו, אבל באמת אני מאמין שמדובר פה ביחס מייצג. ללא ספק, יחסית לשירות תמיכה שאני מכיר בתוכנות קנייניות אחרות, קיבלתי פה שירות שהיה ברמה מאוד גבוהה.

אבל כאשר מסתכלים על התוצאה הסופית אין אלא להגיע למסקנה שזה לא מספיק. אני משוכנע שיש דברים ש-Bounds Checker עושה טוב, ואף יותר טוב מ-Valgrind. חלקית אני יודע את זה בגלל שעבדתי איתו בעבר. זו גם היתה הסיבה שפניתי אליהם הפעם.

מסתבר, אבל, שהכלי לא מסוגל להתמודד עם “גישה לזכרון שהוחזר”. התשובה שקיבלתי מהתמיכה שלהם – “זו בעיה לא נתמכת”. אם לא היה ניתן לגלות את הבעיה בכלל, הייתי מבין. עובדה, אבל, ש-Valgrind כן מסוגל לגלות אותה, ואף לתת מידע שימושי לצורך פתרון של הבעיה.

קחו את זה בתור נקודה למחשבה לגבי open source ו-market leaders.

שחר

האם זה חדשני?

יש חידה בשם “Instant Insanity”. מדובר בארבע קוביות, שעל כל פאה מצוייר אחד מארבעה צבעים. המטרה היא לסדר את הקוביות בשורה, כך שבאף אחת מארבע הפאות הארוכות שנוצרו לא יופיע אותו הצבע פעמיים. למי שרוצה לנסות את כוחו, יש הסבר איך לבנות את החידה כאן.

פתרון בדרך הנאיבית של החידה הזו דורש לנסות באיזור ה-40 אלף צירופים. לא נורא למחשב, אבל לא משהו לעבודה ביד. כבר שנים שאני שומע ממוכרים של חידות שיש לחידה הזו פתרון אנליטי.

לפני כחודש הייתי בכנס של חובבי חידות. בין השאר חולק שם דף מצולם מספר שמסביר את הפתרון. אני כמובן לא יכול לתת פה את הדף, אבל אני כן יכול להפנות אתכם לדף אינטרנט שמסביר את דרך הפתרון. אני לא אחזור עליו כאן.

ועכשיו מגיע החלק המבלבל. בעודי מנסה להבין מדוע הדרך הזו עובדת, עלתה במוחי המחשבה שהדרך הזו, בעצם, לא עובדת אלא בתנאים מאוד מסויימים. במילים אחרות, זה לא פתרון אנליטי של הבעיה, אלא אם אתם יודעים מראש שהבעיה נופלת באותו תחום שהפתרון הזה יודע לפתור.

כדי להוכיח לעצמי שזהו אכן המצב, ייצרתי לעצמי סידור צבעים על הקוביות שהינו פתיר מחד, אך לא פתיר באמצעות הפתרון המוצע מאידך. במילים אחרות, מי שבונה על זה שהפתרון הנ”ל יפתור לו את הבעיה עושה לעצמו משענת קנה רצוץ.

ועכשיו הדילמה. ברוב המקומות שראיתי התייחסות לשיטת הפתרון הזו יוצאים הכותבים מתוך ההנחה שהשיטה פותרת כל חידה מאותו הסוג. המקום היחידי שבוא לא ראיתי טענה מפורשת כזו הינו המקום שבו, כנראה, הוצגה השיטה לראשונה – דף הסבר על תוכנה מתמטית בשם מייפל.

הדילמה היא, האם עליתי פה על משהו שאף אחד אחר לא יודע, או שיש פה משהו שכולם בעצם מכירים. אני יכול להגיד לכם דיי בוודאות שמוכרי החידות בארץ לא מכירים את החור הזה. לפחות אותם מוכרים ששאלתי.

אם מישהו מכיר או יודע, אשמח להפניות. כל כתובות האימיילים שמופיעות שאתרים כבר לא פעילות.

שחר

Bear