
layerleak Docker Hub गुप्त स्कैनर
CONTRIBUTING.md में योगदान दिशानिर्देश देखें।
प्रकाशित साइट web/ से main पर .github/workflows/pages.yml द्वारा बनाई गई है। दस्तावेज़ स्रोत और अनुकरण ब्राउज़र डेमो दोनों उस निर्देशिका के अंतर्गत रहते हैं।
पूर्वापेक्षाएँ:
Go के साथ स्थापित करें:
go install github.com/brumbelow/layerleak@latest
layerleak --help
कैनोनिकल स्थापना लक्ष्य मॉड्यूल रूट है। स्पष्ट रूप से एक रिलीज़ को पिन करने के लिए:
go install github.com/brumbelow/[email protected]
अपने इच्छित प्रकाशित v1.x.y टैग से v1.0.0 बदलें।
सुनिश्चित करें कि आपका GOBIN या GOPATH/bin निर्देशिका PATH पर है।
मॉड्यूल पथ github.com/brumbelow/layerleak है, इसलिए go install @latest सबसे उच्च प्रकाशित v1.x.y टैग पर हल होता है। एक v2.x.y मॉड्यूल रिलीज़ के लिए मॉड्यूल पथ को github.com/brumbelow/layerleak/v2 में बदलना होगा। मॉड्यूल-स्थापित बाइनरी layerleak --version के माध्यम से हल किए गए मॉड्यूल संस्करण की रिपोर्ट करती हैं; स्थानीय चेकआउट बिल्ड उस संस्करण की रिपोर्ट करते हैं जो Go चेकआउट के लिए एम्बेड करता है, जब कोई मॉड्यूल संस्करण उपलब्ध नहीं होता है तो dev पर वापस आ जाता है।
स्रोत से बनाएँ:
git clone https://github.com/brumbelow/layerleak.git
cd layerleak
go build -o layerleak .
./layerleak --help
कंटेनर इमेज के साथ API चलाएँ:
docker pull ghcr.io/brumbelow/layerleak:latest
docker run --rm \
-p 8080:8080 \
-e LAYERLEAK_DATABASE_URL='postgres://<user>:<password>@<host>:5432/layerleak?sslmode=disable' \
ghcr.io/brumbelow/layerleak:latest
कंटेनर इमेज डिफ़ॉल्ट रूप से API चलाता है और LAYERLEAK_API_ADDR=0.0.0.0:8080 सेट करता है।
वैकल्पिक पर्यावरण कॉन्फ़िगरेशन:
cp .env.example .env
परिणाम और डेटाबेस कॉन्फ़िगरेशन:
export LAYERLEAK_LOG_LEVEL=info
export LAYERLEAK_FINDINGS_DIR=findings
export LAYERLEAK_API_ADDR=127.0.0.1:8080
export LAYERLEAK_PERSIST_RAW_SECRETS=0
export LAYERLEAK_TAG_PAGE_SIZE=100
export LAYERLEAK_HTTP_TIMEOUT=30s
export LAYERLEAK_MAX_FILE_BYTES=1048576
export LAYERLEAK_MAX_LAYER_BYTES=536870912
export LAYERLEAK_MAX_LAYER_ENTRIES=50000
export LAYERLEAK_MAX_MANIFEST_BYTES=0
export LAYERLEAK_MAX_CONFIG_BYTES=0
export LAYERLEAK_MAX_TAG_RESPONSE_BYTES=8388608
export LAYERLEAK_MAX_REPOSITORY_TAGS=0
export LAYERLEAK_MAX_REPOSITORY_TARGETS=0
export LAYERLEAK_REGISTRY_REQUEST_ATTEMPTS=2
# Optional registry overrides; usually leave unset.
export LAYERLEAK_REGISTRY_BASE_URL=
export LAYERLEAK_REGISTRY_AUTH_URL=
export LAYERLEAK_DATABASE_URL=postgres://postgres:postgres@localhost:5432/layerleak?sslmode=disable
यही चर और उनके डिफ़ॉल्ट .env.example में रहते हैं, जो डिफ़ॉल्ट मानों का स्रोत है।
| चर | डिफ़ॉल्ट | उद्देश्य |
|---|---|---|
LAYERLEAK_LOG_LEVEL | info | लॉग स्तर: debug, info, warn, या error। |
LAYERLEAK_FINDINGS_DIR | अनसेट | JSON निष्कर्ष फ़ाइलें कहाँ लिखें। यदि अनसेट है, तो डिफ़ॉल्ट रूप से go.mod वाली निकटतम मूल निर्देशिका के अंतर्गत findings/ है, वर्तमान कार्यशील निर्देशिका पर वापस आ जाता है। |
LAYERLEAK_API_ADDR | 127.0.0.1:8080 | API सर्वर के लिए बाइंड पता। कंटेनर इमेज इसे 0.0.0.0:8080 में ओवरराइड करती है। |
LAYERLEAK_PERSIST_RAW_SECRETS | 0 | डिस्क और Postgres पर कच्चे सीक्रेट मान और कच्चे संदर्भ स्निपेट लिखने के लिए 1 पर सेट करें। निष्कर्ष डिफ़ॉल्ट रूप से संपादित रहते हैं। |
LAYERLEAK_HTTP_TIMEOUT | 30s | प्रति-अनुरोध टाइमआउट प्रत्येक रजिस्ट्री कॉल (मैनिफ़ेस्ट, ब्लॉब, टैग पृष्ठ, प्रमाणीकरण टोकन) के लिए। कोई भी Go अवधि स्वीकार करता है (30s, 2m, 1h)। |
LAYERLEAK_MAX_FILE_BYTES | 1048576 (1 MiB) | लेयर के अंदर प्रति फ़ाइल बफ़र किए गए अधिकतम डीकंप्रेस्ड बाइट्स। इससे बड़ी फ़ाइलें आकार से अधिक के रूप में छोड़ दी जाती हैं। शून्य से अधिक होना चाहिए। |
LAYERLEAK_MAX_LAYER_BYTES | 536870912 (512 MiB) | प्रति लेयर अधिकतम डीकंप्रेस्ड लेयर स्ट्रीम बाइट्स। 0 सीमा को अक्षम करता है। |
LAYERLEAK_MAX_LAYER_ENTRIES | 50000 | प्रति लेयर अधिकतम tar प्रविष्टियाँ। 0 सीमा को अक्षम करता है। |
LAYERLEAK_MAX_MANIFEST_BYTES | 0 | अधिकतम मैनिफ़ेस्ट बॉडी बाइट्स। 0 सीमा को अक्षम करता है। |
LAYERLEAK_MAX_CONFIG_BYTES | 0 | अधिकतम इमेज कॉन्फ़िग बॉडी बाइट्स। 0 सीमा को अक्षम करता है। |
LAYERLEAK_MAX_TAG_RESPONSE_BYTES | 8388608 (8 MiB) | प्रति रजिस्ट्री टैग-सूची प्रतिक्रिया पृष्ठ अधिकतम बाइट्स। 0 सीमा को अक्षम करता है। |
LAYERLEAK_TAG_PAGE_SIZE | 100 | रिपॉजिटरी-व्यापी स्कैन के लिए रजिस्ट्री टैग-सूची पृष्ठ आकार। |
LAYERLEAK_MAX_REPOSITORY_TAGS | 0 | प्रति रिपॉजिटरी स्कैन में गणना किए गए अधिकतम टैग। 0 सीमा को अक्षम करता है। |
LAYERLEAK_MAX_REPOSITORY_TARGETS | 0 | प्रति रिपॉजिटरी स्कैन में हल किए गए अधिकतम विशिष्ट लक्ष्य। 0 सीमा को अक्षम करता है। |
LAYERLEAK_REGISTRY_REQUEST_ATTEMPTS | 2 | प्रत्येक रजिस्ट्री अनुरोध के लिए प्रयासों की संख्या (पहले सहित)। |
LAYERLEAK_REGISTRY_BASE_URL | अनसेट | वैकल्पिक ओवरराइड। सामान्यतः layerleak इसे प्रत्येक इमेज संदर्भ से प्राप्त करता है; केवल प्रॉक्सी या वैकल्पिक एंडपॉइंट के माध्यम से स्कैन बलपूर्वक करने के लिए सेट करें। |
LAYERLEAK_REGISTRY_AUTH_URL | अनसेट | वैकल्पिक ओवरराइड। सामान्यतः रजिस्ट्री के WWW-Authenticate चैलेंज से खोजा जाता है। |
LAYERLEAK_DATABASE_URL | अनसेट | यदि सेट है, तो layerleak स्कैन Postgres में लिखता है और यदि दृढ़ता सफल नहीं होती है तो कमांड विफल हो जाता है। |
जब कोई MAX_* सीमा सकारात्मक मान पर सेट की जाती है, तो उसे पार करने पर स्कैन स्पष्ट त्रुटि के साथ विफल हो जाता है, बजाय चुपचाप कार्य को काटने के।
परिणाम व्यवहार:
findings में रहते हैं और गैर-शून्य स्कैन निकास स्थिति चलाते हैं।total_findings में नहीं गिना जाता है।disposition, disposition_reason, और line_number शामिल हैं ताकि ट्राइएज और झूठी-सकारात्मक समीक्षा आसान हो सके।1 के साथ बाहर निकलता है क्योंकि स्कैन अधूरा है।