بنیادی منصوبہ · ParanoidBSD

ایک ایسا آپریٹنگ سسٹم جہاں اختیار رکھا جاتا ہے، فرض نہیں کیا جاتا

تقریباً ہر نقب زنی ایک ہی طرح ہوتی ہے: کوئی پروگرام ایسی چیز تک پہنچ جاتا ہے جسے چھونا اس کا کام کبھی نہیں تھا۔ ParanoidBSD ایسا آپریٹنگ سسٹم ہے جو اسے یہ کرنے ہی نہیں دیتا۔ ہر پروگرام کو صرف اتنا دیا جاتا ہے جتنی اس کی ضرورت ہے، اور باقی سب محض ممنوع نہیں — پہنچ ہی سے باہر ہے۔ HardenedBSD پر بنا، جدید C++ میں دوبارہ لکھا گیا، اور اصل کوڈ ساتھ رکھا گیا تاکہ ہر تبدیلی اس کے مقابل جانچی جا سکے۔

زبانC / C++23
بنیادHardenedBSD 15-STABLE
ڈیسک ٹاپKDE Plasma 6
آخری پُشحال ہی میں
ستارے—
ریپازٹری کی ترتیب
pbsd/C++23 ماڈیول — کرنل مرکزہ، یوزرلینڈ کی منتقلیاں، UDA، BIFROST، کمپوزیٹر، تھیم
hbsd/HardenedBSD 15-STABLE کا سورس — اصل، جو تفصیل نامے کے طور پر رکھا گیا ہے
kde/ڈیسک ٹاپ کی لہر کے لیے Plasma 6، KWin اور فریم ورک
tools/فہرست سازی، یقینی بازنویسی کے مراحل، ایجنٹ منتقلی، Clang کے معاون
docs/تفصیل نامے، حفاظتی ماڈل، منتقلی کی حالت، سلسلۂ ماخذ
scripts/WSL ڈرائیور اسکرپٹ، واچ ڈاگ، پیش رفت کا کنسول
سادہ الفاظ میں

یہ کیا ہے، ایک منٹ میں

مسئلہ

آپریٹنگ سسٹم اُس ہر چیز کے نیچے ہوتا ہے جو کوئی ادارہ چلاتا ہے۔ زیادہ تر دہائیوں پرانے کوڈ پر بنے ہیں، اور کسی بھی پروگرام کو کچھ بھی مانگنے دیتے ہیں — اجازت دینی ہے یا نہیں، نظام یہ فیصلہ بعد میں کرتا ہے۔ یہی وجہ ہے کہ کسی بے ضرر چیز کی ایک خرابی، مثلاً اسکرین پر فونٹ بنانے والے کوڈ کی، پاس ورڈ کی چوری پر ختم ہو سکتی ہے۔

حل

ParanoidBSD پہلے ہی یہ بدل دیتا ہے کہ کوئی پروگرام مانگ کیا سکتا ہے۔ درخواست کے بعد اجازت جانچنے کے بجائے، وہ ہر پروگرام کو ایک مختصر فہرست تھما دیتا ہے کہ وہ کن چیزوں کو چھو سکتا ہے، اور کسی اور چیز کا نام لینے کا راستہ ہی نہیں دیتا۔ ایک حصے کی خرابی باقی نظام تک پہنچنے کا راستہ نہیں رہتی۔

یہ کس کے لیے ہے

دفاع اور حکومت کے وہ فراہم کنندہ جن سے اب محفوظ تر زبانوں میں لکھا سافٹ ویئر مانگا جا رہا ہے۔ وہ آلات جو برسوں میدان میں رہتے ہیں اور جنہیں جلدی پیچ نہیں کیا جا سکتا — کارخانوں کے کنٹرولر، طبی مشینیں، بنیادی خدمات کا ہارڈویئر۔ اور وہ اساتذہ و محققین جنہیں ایسا حقیقی آپریٹنگ سسٹم چاہیے جو اتنا چھوٹا ہو کہ سرے سے سرے تک پڑھا جا سکے۔

حفاظت کا آغاز ایپلیکیشن کی سطح سے نہیں ہونا چاہیے۔ اسے نیچے موجود آپریٹنگ سسٹم سے شروع ہونا چاہیے۔ اس صفحے کا باقی حصہ انجینئرنگ ہے: کیا بدلا گیا، اسے کیسے جانچا گیا، اور کیا ابھی باقی ہے۔
مسئلہ

عمومی اختیار وہ خرابی ہے جس کا پیوند نہیں لگ سکتا

ایک روایتی Unix پر کوئی پروسیس اس فائل کو کھولنے کا حق اپنے پاس رکھتا نہیں: /etc/master.passwd۔ وہ بس مانگتا ہے، اور کرنل بعد میں اس بنیاد پر فیصلہ کرتا ہے کہ پروسیس خود کو کون ظاہر کرتا ہے۔ ہر پروسیس نظام کے ہر وسیلے کا نام لے سکتا ہے۔ نام گاہ عالمی اور عمومی ہے؛ جانچ بعد میں آنے والا خیال ہے۔

یہی وجہ ہے کہ فونٹ رینڈرر میں تجزیے کی ایک ہی خرابی پاس ورڈ کی چوری بن سکتی ہے۔ رینڈرر کو پاس ورڈ فائل کی کبھی ضرورت نہیں تھی — مگر ڈھانچے میں کوئی چیز اسے مانگنے سے نہیں روکتی تھی۔

HardenedBSD یہاں پہلے ہی سنجیدہ کام کرتا ہے: ASLR، جو ہر بار پروگرام کو کسی اور جگہ لادتی ہے تاکہ حملہ آور اندازہ نہ لگا سکے کہ کیا کہاں ہے؛ CFI، جو پروگرام کو ایسے کوڈ کی طرف موڑنے سے روکتی ہے جسے چلانے کے لیے وہ بنا ہی نہیں تھا؛ اور ان کے ساتھ PaX سے اخذ کردہ تدابیر، SafeStack اور سخت میموری ایلوکیٹر۔ PBSD یہ سب رکھتا ہے اور نیچے کے سوال کی شکل بدل دیتا ہے — “کیا اس پروسیس کو اجازت ہے؟” سے “کیا اس پروسیس کے پاس اس کا ہینڈل ہے؟”

ایک سسٹم کال کے دو جواب

// Ambient authority — the traditional path
int fd = open("/etc/master.passwd", O_RDONLY);
// kernel walks a global namespace, then
// checks uid/gid/MAC after the fact

// Handle nucleus — the PBSD path
auto f = dir_handle.open("master.passwd", Rights::Read);
// there is no global namespace to walk.
// no handle, no name, no operation.

فرق کی وضاحتی شکل، نہ کہ اُن کالوں کی لفظ بہ لفظ فہرست جو کوئی پروگرام کرنل میں کرتا ہے — یعنی اس کا API۔ مستند ماڈل یہاں ہے docs/.

دو اختیاری ماڈل آمنے سامنے: عمومی اختیار میں پروسیس ساکٹ، exec اور ptrace تک پہنچ جاتا ہے اور پاس ورڈ فائل سے انکار صرف مانگنے کے بعد ہوتا ہے؛ ہینڈل مرکزے میں صرف اسی وسیلے کا نام لیا جا سکتا ہے جس کا ہینڈل اس کے پاس ہو
پورا خاکہ دیکھنے کے لیے اسکرول کریں →
جانچ کہاں ہوتی ہے۔ بائیں طرف درخواست ہمیشہ سفر کرتی ہے اور فیصلہ بعد میں ہوتا ہے۔ دائیں طرف چار میں سے تین کاموں کے پاس مانگنے کے لیے نام ہی نہیں، اس لیے انکار کرنے کو کچھ ہے ہی نہیں۔
تعامل پذیر

ایک سسٹم کال کو مرکزے سے گزاریں

پروسیس کو کچھ ہینڈل دیں، اس کے لیے کوئی کام چنیں، اور دونوں اختیاری ماڈلوں کے بیچ بدل بدل کر دیکھیں۔ فیصلہ اور اس کی وجہ آپ کے براؤزر میں براہِ راست نکالی جاتی ہے — یہ ڈیزائن کا تدریسی ماڈل ہے، کرنل کا ایمولیٹر نہیں۔

اختیارات کا مرکزہ — ریفرنس مانیٹر

پروسیس کوشش کرتا ہے…

ٹریس

پروسیس کے پاس موجود ہینڈل

فیصلہ

کوشش کا انتظار
کوئی کام چنیں تاکہ اسے مانیٹر سے گزارا جا سکے۔
قابلِ رسائی
0
انکار
0

“قابلِ رسائی” گنتا ہے کہ موجودہ ماڈل کے تحت یہ پروسیس فہرست میں دیے گئے کاموں میں سے کتنے سرے سے کر سکتا ہے۔ عمومی اختیار میں رسائی کا فیصلہ شناخت کرتی ہے؛ مرکزے میں وہ ہینڈل جو اس کے پاس واقعی موجود ہیں۔

PBSD کے حفاظتی ڈیزائن کا ایک تدریسی ماڈل، اسی صفحے کے لیے لکھا گیا۔ اصل مرکزہ یہاں ہے: pbsd/؛ تفصیل نامہ یہاں ہے: docs/specs/.
منتقلی

چار مرحلے، اور ایک ماڈل جو کبھی اپنی سند خود نہیں دیتا

کسی BSD کے یوزرلینڈ اور کرنل کو ہاتھ سے C++23 میں منتقل کرنا ایک عشرے کا کام ہے۔ اسے کسی لینگویج ماڈل سے فائلیں دوبارہ لکھوا کر منتقل کرنا بظاہر درست کوڑا تیزی سے پیدا کرنے کا طریقہ ہے۔ PBSD ان میں سے کوئی نہیں کرتا۔

ParanoidBSD کی منتقلی کی پائپ لائن: فہرست سازی، یقینی مراحل، ایجنٹ کا چکر اور ایک تصدیقی پھاٹک، جہاں رد ہونے والی فائلیں واپس چکر میں چلی جاتی ہیں
پورا خاکہ دیکھنے کے لیے اسکرول کریں →
ایک فائل منتقل شدہ فائل کیسے بنتی ہے۔ ٹوٹی ہوئی سرخ راہ ہی اصل بات ہے — جو کام تصدیق میں ناکام ہوتا ہے وہ پیش رفت میں شمار ہونے کے بجائے واپس چکر میں چلا جاتا ہے۔
مرحلہ 1

فہرست سازی

tools/inventory_c_sources.py اور clang_cxx23_port.py ہر C فائل کو مشکل کے حساب سے نمبر دیتے ہیں اور یہ فائل لکھتے ہیں: c_inventory.csv۔ دائرہ کار کے بارے میں کچھ بھی اندازے پر نہیں چھوڑا جاتا۔

مرحلہ 2

یقینی مراحل

run_todo_passes.py درجے 0–4 میں محفوظ مشینی بازنویسیاں لگاتا ہے۔ کوئی ماڈل شامل نہیں۔ جس چیز سے کوئی مرحلہ انکار کرے وہ درج ہو جاتی ہے refusals.jsonl میں، زبردستی نہیں کی جاتی۔

مرحلہ 3

ایجنٹ کا چکر

pbsd.py ادھوری اور اڑی ہوئی فائلیں DeepSeek Flash سے بھرتا ہے، جو زیادہ سے زیادہ استدلالی محنت پر Pro تک بڑھ جاتی ہے — طے شدہ طور پر 48 Flash اور 24 Pro ورکر۔ Kickstarter اسی کے لیے رقم جمع کرتا ہے۔

مرحلہ 4

تصدیقی پھاٹک

کمپائل، ASan، UBSan، تفریقی عمل درآمد اور کمپائلر کے IR کی سطح پر موازنہ۔ وہ فائل جو صرف کمپائل ہوتی ہے غیر تصدیق شدہ ہے۔ ناکامیاں یہاں جاتی ہیں: agent_port_failures.jsonl.

BSD ڈیمن دو بار: بائیں طرف اصل سرخ علامتی کردار، دائیں طرف وہی شکل ایک سیان وائر فریم کے طور پر بنی ہوئی، اور دونوں کے بیچ مساوی کا نشان
پورا منصوبہ ایک تصویر میں۔ وہی ڈیمن، وہی شکل، ایک الگ صورت میں دوبارہ بنایا ہوا — اور مساوی کا نشان وہ حصہ ہے جو فائل بہ فائل، تفریقی تصدیق سے کمانا پڑتا ہے۔ BSD Daemon © Marshall Kirk McKusick۔
“مساوی” کا مطلب کیا ہونا چاہیے

منتقلی برابری کا دعویٰ ہے

یہ کہنا کہ فائل منتقل ہو گئی، یہ کہنا ہے کہ نئی فائل پرانی جیسا برتاؤ کرتی ہے۔ یہ ایک دعویٰ ہے، اور دعووں کو شہادت چاہیے۔ جو C++23 بازنویسی کمپائل ہو جائے وہ ایک قابلِ قبول دکھتا وائر فریم ہے؛ ابھی وہی ڈیمن نہیں ہے۔

اس لیے مساوی کا نشان ہی پھاٹک ہے۔ تفریقی اجرا دونوں کو چلا کر قابلِ مشاہدہ برتاؤ کا موازنہ کرتا ہے۔ IR موازنہ جانچتا ہے کہ کمپائلر کے نزدیک دونوں کا مطلب ایک ہی ہے۔ جب تک ان میں سے ایک نہ گزرے، فائل منتقلی کے لاگ میں کھلی رہتی ہے اور پیش رفت میں شمار نہیں ہوتی — چاہے وہ کتنی ہی مکمل کیوں نہ لگے۔

وہ اصول جو اسے قابلِ دفاع بناتا ہے: ماڈل اپنی سند خود نہیں دیتا۔ وہ تجویز کرتا ہے؛ فیصلہ یقینی اوزار کرتے ہیں۔ ریپازٹری کا ہر ناقابلِ سودا اصول اسی حد کو سلامت رکھنے کے لیے موجود ہے — اور یہی وجہ ہے کہ صرف inference پر زیادہ خرچ کر کے منتقلی کو تیز نہیں کیا جا سکتا۔
ناقابلِ سودا اصول

وہ اصول جن کا ریپازٹری واقعی پابند ہے

جب تک تفریقی یا IR تصدیق نہ گزرے، کوئی فائل مکمل نہیں
محض کمپائل ہو جانے کو غیر تصدیق شدہ مانا جاتا ہے۔ منتقل شدہ فائل کو یا تو تفریقی اجرا میں HardenedBSD کی اصل فائل جیسا ہی قابلِ مشاہدہ برتاؤ دینا ہوگا، یا IR کی سطح پر اس سے مطابقت رکھنی ہوگی۔ جو فائلیں دونوں میں سے کوئی بھی نہ گزریں وہ منتقلی کے لاگ میں کھلی رہتی ہیں اور پیش رفت کے اعداد میں شمار نہیں ہوتیں۔
وفاداری سے منتقل کریں — اصل کی خرابیاں چپ چاپ “درست” نہ کریں
HardenedBSD کا کوڈ درخت ہی طرزِ عمل کا تفصیل نامہ ہے۔ اگر اصل میں کوئی نقص ہے تو منتقلی اسے بھی دہراتی ہے، کیونکہ تفریقی ٹیسٹ درستی اور تنزلی میں فرق نہیں کر سکتا۔ بہتریاں بعد میں کی جاتی ہیں اور الگ سے درج ہوتی ہیں، تاکہ تبدیلی ترجمے کے اندر دبنے کے بجائے نظر آئے اور جانچی جا سکے۔
پہلے یقینی اوزار؛ ماڈل صرف باقی بچا حصہ بھرتے ہیں
مشینی بازنویسیاں ایسے اسکرپٹ لگاتے ہیں جو ہر بار ایک جیسا برتاؤ کرتے ہیں۔ ماڈل صرف باقی ماندہ پر استعمال ہوتے ہیں — ادھورے فہرستی اندراجات اور وہ فائلیں جن سے یقینی مراحل نے انکار کیا۔ اس سے منتقلی کا بڑا حصہ دہرایا جانے کے قابل اور قابلِ جانچ رہتا ہے، اور ماڈل کی پیداوار انہی حصوں تک محدود رہتی ہے جو بہرحال کسی انسان کو ہاتھ سے لکھنے پڑتے۔
کرنل C++ آزاد ہے: -fno-exceptions -fno-rtti
کرنل مرکزہ کسی میزبان C++ رن ٹائم پر انحصار نہیں کر سکتا۔ نہ استثنا، نہ RTTI، اور نہ کرنل میں داخلے پر ہیپ سے میموری لینے والے معیاری لائبریری کے راستے۔ پابندیاں یہاں لکھی ہیں docs/specs/KERNEL_CXX_ABI.md تاکہ کوئی معاون بغیر اندازے کے بتا سکے کہ کرنل کے سیاق میں کیا جائز ہے۔
ہر ماڈیول کو مکمل شمار ہونے سے پہلے سلسلۂ ماخذ کا اندراج چاہیے
docs/PROVENANCE.md بتاتا ہے کہ ہر ماڈیول کہاں سے آیا اور کس لائسنس کے تحت آیا۔ یہی چیز نیچے دیے گئے لائسنس کے بیان کو محض خواہش کے بجائے قابلِ تصدیق بناتی ہے — آپ ماڈیول بہ ماڈیول جانچ سکتے ہیں کہ کون سا کوڈ HardenedBSD سے آیا ہے اور کون سا نیا PBSD کا کام ہے۔
لائسنسنگ

دو لائسنس، ایمان داری سے الگ کیے گئے

نیا PBSD کوڈ — مرکزہ، C++23 ماڈیولز، اوزار — Imortek کی معیاری شرائط پر دستیاب ہے: GNU Affero General Public License (AGPL-3.0+)، جو ذاتی استعمال، خیراتی اداروں، تعلیم اور سالانہ AUD 50,000 سے کم کمانے والے اداروں کے لیے مفت ہے، اور اس سے اوپر درجہ وار تجارتی لائسنس۔

HardenedBSD سے اخذ کیا گیا کوڈ اپنے اصل BSD لائسنس ہی پر رہتا ہے۔ اسے دوبارہ لائسنس نہیں کیا جا سکتا اور Imortek ایسا دعویٰ بھی نہیں کرتا۔ docs/PROVENANCE.md ہی وہ ریکارڈ ہے جو بتاتا ہے کہ کون سا کون سا ہے۔

لائسنس کی مکمل شرائط →
AGPL-3.0+ اور تجارتی

نیا PBSD کام

pbsd/, tools/, scripts/، اختیارات کا مرکزہ، UDA، BIFROST، کمپوزیٹر اور تھیم۔

BSD (بغیر تبدیلی)

HardenedBSD سے اخذ شدہ

hbsd/ اور ہر وہ منتقل شدہ فائل جس کی جڑ اسی میں ہے۔ اصل شرائط، اصل انتساب۔

یہ کس کے لیے ہے

ایک ایسا آپریٹنگ سسٹم جس میں گھسنا زیادہ مشکل ہے

زیادہ تر نقب زنی ایک ہی قسم کی غلطی سے فائدہ اٹھاتی ہے: کوئی پروگرام ایسی میموری تک پہنچ جاتا ہے جسے چھونا اس کا کام کبھی نہیں تھا۔ ParanoidBSD ایک آزمودہ نظام کو ایسی زبان میں دوبارہ بناتا ہے جس میں یہ غلطی کہیں زیادہ مشکل ہے، اور ہر پروگرام کو صرف اتنی ہی رسائی دیتا ہے جتنی اسے واقعی درکار ہے۔

01

دفاعی اور سرکاری فراہم کنندگان

خریدار اب اس پر اصرار کرنے لگے ہیں کہ سافٹ ویئر ایسی زبانوں میں بنے جو حملوں کی پوری قسمیں بند کر دیں۔ صفر سے دوبارہ شروع کرنے میں ایک عشرہ لگتا ہے۔ یہ اس کے بجائے ایک آزمودہ نظام کو پار لے جاتا ہے، اور ہر بدلی ہوئی فائل کا اور اس تبدیلی کی جانچ کیسے ہوئی، اس کا تحریری ریکارڈ رکھتا ہے۔

02

وہ آلات جو برسوں میدان میں لگے رہتے ہیں

فیکٹری کے کنٹرولر، طبی مشینیں، بجلی پانی کا ہارڈ ویئر۔ جب کوئی خامی سامنے آتی ہے تو اکثر آپ محض کوئی اپ ڈیٹ نہیں بھیج سکتے۔ یہ اس بات کو محدود کرتا ہے کہ اندر آ جانے کے بعد گھسنے والا کہاں تک پہنچے، کیونکہ کوئی پروگرام اپنے دیے ہوئے سے آگے نہیں جا سکتا۔

03

جامعات اور حفاظتی محققین

ایک اصل آپریٹنگ سسٹم، اتنا چھوٹا کہ سرے سے آخر تک پڑھا جا سکے، اور موازنے کے لیے اصل ساتھ ہی رکھا ہوا۔ پڑھانے کے لیے، اور کسی واقعی چلنے والی چیز پر خیالات آزمانے کے لیے مفید۔

کیا آپ کو یہاں اپنی صورتِ حال نظر آتی ہے؟ یہ ابھی بیٹا ٹیسٹنگ کے لیے کھلا ہے، اور جن لوگوں کے لیے یہ بنا ہے، انہی کی رائے اسے واقعی بدلتی ہے۔ بیٹا ٹیسٹر بنیں →
Kickstarter جاری · 12 نومبر 2026 کو ختم

منتقلی اس کمپیوٹ پر چلتی ہے جو اس کے پاس نہیں

یقینی مراحل مفت ہیں۔ باقی ماندہ بھرنے والا ایجنٹ کا چکر — اور وہ تصدیقی اجرا جو اس پر پہرہ دیتے ہیں — مفت نہیں۔ مانگ بس یہی ہے۔