שחרור של Bubblewrap 0.6, שכבה ליצירת סביבות מבודדות

גרסה של כלים לארגון העבודה של סביבות מבודדות זמינה Bubblewrap 0.6, המשמשת בדרך כלל להגבלת יישומים בודדים של משתמשים חסרי הרשאות. בפועל, Bubblewrap משמש את פרויקט Flatpak כשכבה לבידוד יישומים שהושקו מחבילות. קוד הפרויקט כתוב ב-C ומופץ תחת רישיון LGPLv2+.

לצורך בידוד, נעשה שימוש בטכנולוגיות וירטואליזציה מסורתיות של מיכל לינוקס, המבוססות על שימוש בקבוצות cgroups, מרחבי שמות, Seccomp ו-SELinux. כדי לבצע פעולות מורשות להגדרת קונטיינר, Bubblewrap מופעל עם זכויות שורש (קובץ הפעלה עם דגל suid) ולאחר מכן מאפס את ההרשאות לאחר אתחול המיכל.

הפעלת מרחבי שמות משתמשים במערכת מרחב השמות, המאפשרת לך להשתמש בסט נפרד משלך של מזהים בקונטיינרים, אינה נדרשת לצורך הפעולה, מכיוון שהיא אינה פועלת כברירת מחדל בהפצות רבות (Bubblewrap ממוקם כיישום suid מוגבל של תת-קבוצת יכולות של מרחבי שמות משתמשים - כדי לא לכלול את כל מזהי המשתמשים והתהליכים מהסביבה, מלבד הנוכחית, נעשה שימוש במצבים CLONE_NEWUSER ו-CLONE_NEWPID). להגנה נוספת, תוכניות המופעלות תחת Bubblewrap מופעלות במצב PR_SET_NO_NEW_PRIVS, האוסר על רכישת הרשאות חדשות, למשל, אם קיים דגל setuid.

בידוד ברמת מערכת הקבצים מתבצע על ידי יצירת מרחב שמות טעינה חדש כברירת מחדל, שבו נוצרת מחיצת שורש ריקה באמצעות tmpfs. במידת הצורך, מחיצות FS חיצוניות מחוברות למחיצה זו במצב "mount —bind" (לדוגמה, כאשר מופעלת עם האפשרות "bwrap —ro-bind /usr /usr", מחיצת /usr מועברת מהמערכת הראשית במצב קריאה בלבד). יכולות הרשת מוגבלות לגישה לממשק הלולאה עם בידוד מחסנית רשת באמצעות הדגלים CLONE_NEWNET ו-CLONE_NEWUTS.

ההבדל העיקרי מפרויקט Firejail הדומה, המשתמש גם במודל ההשקה של setuid, הוא שב-Bubblewrap שכבת יצירת המיכלים כוללת רק את היכולות המינימליות הדרושות, ואת כל הפונקציות המתקדמות הנחוצות להפעלת יישומים גרפיים, אינטראקציה עם שולחן העבודה ובקשות סינון. ל-Pulsaudio, הועבר לצד Flatpak ובוצע לאחר איפוס ההרשאות. Firejail, לעומת זאת, משלבת את כל הפונקציות הקשורות בקובץ הפעלה אחד, מה שמקשה על הביקורת ותחזוקת האבטחה ברמה המתאימה.

במהדורה החדשה:

  • Добавлена поддержка сборочной системы Meson. Поддержка сборки при помощи Autotools пока сохранена, но будет удалена в одном из следующих выпусков.
  • Реализована опция «—add-seccomp» для добавления более чем одной программы seccomp. Добавлено предупреждение о том, что при повторном указании опции «—seccomp» будет применён только последний параметр.
  • Ветка master в git-репозитории переименована в main.
  • Добавлена частичная поддержка спецификации REUSE, унифицирующей процесс указания сведений о лицензиях и авторских правах. Во многие файлы с кодом добавлены заголовки SPDX-License-Identifier. Следование рекомендациям REUSE позволяет упростить автоматическое определение какая лицензия применяется к каким из частей кода приложения.
  • Добавлена проверка значения счётчика аргументов командной строки (argc) и реализован экстренный выход в случае если счётчик равен нулю. Изменение позволяет блокировать проблемы с безопасностью, вызванные некорректной обработкой передаваемых аргументов командной строки, такие как CVE-2021-4034 в Polkit.

מקור: OpenNet.ru

הוספת תגובה