אילו פרצות אנו מחפשים בחוזים חכמים?
אנו מבצעים בדיקת חדירה רב-שכבתית לפרויקטי קריפטו, החורגת הרבה מעבר לבדיקת אפליקציות אינטרנט סטנדרטית עם Slither. היא מכסה חוזים חכמים, תשתית, חזית (frontend), גשרים (bridges), ממשקי API של צד אחורי, והנדסה חברתית. Ronin Bridge איבד 625 מיליון דולר לא בגלל פרצה בחוזה — אלא בגלל ש-5 מתוך 9 מפתחות ולידטורים נפרצו באמצעות דיוג ממוקד (spear phishing). הניסיון שלנו מראה שבדיקת חדירה אפקטיבית חייבת לכסות את כל וקטורי התקיפה.
בדיקת חדירה לפרויקט קריפטו דורשת הבנה עמוקה גם של Solidity וגם של ארכיטקטורת L2 rollup, מנגנוני קונצנזוס, וכלכלת DeFi. ללא גישה מקיפה, קל לפספס פרצות קריטיות כמו מניפולציית אורקל או ארגון מחדש של עסקאות (transaction reorgs). כלים אוטומטיים מוצאים כ-30% מהבעיות — השאר דורשים ניתוח ידני. לכן אנו משלבים את Slither, Mythril, ו-Aderyn עם שעות רבות של סקירת קוד. כל ממצא מסווג לפי CVSS; עבור ממצאים קריטיים, אנו מספקים PoC תוך שעות מהגילוי. הפורטפוליו שלנו כולל מעל 200 פרויקטים שנבדקו, כולל פרוטוקולי DeFi בעשירייה הראשונה לפי TVL. אנו בודקים לא רק חוזים אלא גם תשתית: צמתי RPC, ממסרי גשרים, ניהול מפתחות ולידטורים, וחזית dApp מפני פגיעה בשרשרת האספקה. כל רכיב יכול להיות נקודת כניסה.
ניתוח סטטי של חוזים
נקודת המוצא של כל בדיקת חוזה היא כלים אוטומטיים:
# Slither — статический анализатор от Trail of Bits
slither . --print human-summary
slither . --detect reentrancy-eth,reentrancy-no-eth,arbitrary-send-eth
slither . --triage-mode
# Mythril — symbolic execution
myth analyze contracts/Vault.sol --solv 0.8.20
# Aderyn — Rust-based анализатор, быстрее Slither для больших кодовых баз
aderyn .כלים אוטומטיים תופסים את הפירות הנמוכים: סדר פעולות שגוי, ערכי החזרה שלא נעשה בהם שימוש, reentrancy ברור. אבל הם ממעטים למצוא פרצות קריטיות. סקירה ידנית מגלה פי 3 יותר בעיות, ולגבי קריטיות — פי 5 יותר.
ניתוח חוזה ידני
תחומי מיקוד לסקירה ידנית:
בקרת גישה: אנו מוודאים מי יכול לקרוא לפונקציות מוסמכות, תקינות של onlyOwner/AccessControl, היעדר דלתות אחוריות דרך קונסטרוקטור או initializer.
// Классическая ошибка: инициализатор можно вызвать повторно
contract VulnerableProxy {
bool private initialized;
function initialize(address _admin) external {
// УЯЗВИМОСТЬ: нет проверки !initialized
admin = _admin;
}
}
// Правильно:
function initialize(address _admin) external {
require(!initialized, "Already initialized");
initialized = true;
admin = _admin;
}מניפולציית אורקל מחירים: אנו בודקים אם נעשה שימוש במחירי ספוט במקום TWAP. מתקפת flash loan על האורקל עלולה להוביל לאובדן מוחלט של כספים.
// Уязвимо: spot price из AMM пула
function getPrice() external view returns (uint256) {
(uint112 reserve0, uint112 reserve1,) = pair.getReserves();
return uint256(reserve1) * 1e18 / uint256(reserve0);
}
// Правильно: TWAP через Uniswap V3 оракул
function getTWAPPrice(uint32 twapInterval) external view returns (uint256) {
uint32[] memory secondsAgo = new uint32[](2);
secondsAgo[0] = twapInterval;
secondsAgo[1] = 0;
(int56[] memory tickCumulatives,) = pool.observe(secondsAgo);
int56 tickDelta = tickCumulatives[1] - tickCumulatives[0];
int24 tick = int24(tickDelta / int56(uint56(twapInterval)));
return OracleLibrary.getQuoteAtTick(tick, 1e18, token0, token1);
}אימות חתימות: אימות נכון של חתימות EIP-712, הגנה מפני מתקפות replay באמצעות nonce ו-chainId.
מתקפות כלכליות
מתקפות flash loan על פרוטוקולי AMM דורשות הבנה עמוקה של מכניקת הבריכה. אנו מדמים אותן ב-Foundry:
// Симуляция flash loan атаки через Foundry
// forge test --match-test testFlashLoanAttack -vvv
function testFlashLoanAttack() public {
uint256 flashAmount = 1000 ether;
vm.deal(address(attacker), flashAmount);
uint256 priceBefore = target.getPrice();
attacker.manipulatePool(flashAmount);
uint256 priceAfter = target.getPrice();
console.log("Price manipulation:", priceBefore, "->", priceAfter);
uint256 profit = attacker.exploit();
attacker.repayFlash(flashAmount);
assertGt(profit, 0, "Attack should be profitable");
} למה בדיקת חדירה לפרויקט קריפטו קשה יותר מבדיקת אינטרנט רגילה?
אנו בודקים לא רק ממשקי API וחזית, אלא גם תשתית צמתי בלוקצ'יין, חוזי גשרים, ומנגנוני קונצנזוס של ולידטורים.
אבטחת חזית (Frontend)
הזרקת wallet drainer: מתקפת ה-dApp הנפוצה ביותר היא פגיעה בחזית דרך שרשרת האספקה. אנו בודקים hashes של Subresource Integrity (SRI), כותרות CSP, ושלמות בקובץ lockfile. כמו כן, אנו מחפשים חטיפת לוח (clipboard) באמצעות XSS.
דיוג באמצעות typosquatting: רישום שמות דומיינים דומים. הביקורת שלנו כוללת בדיקת ניטור של דומיינים כאלה והתראות DNS.
ביקורת תשתית
אבטחת נקודות קצה RPC: אנו בודקים אם RPC חשוף לציבור, האם נדרש אימות, וקיום רשימת היתרים של מתודות.
דוגמה לבדיקת RPC
curl -X POST http://node-ip:8545 \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_accounts","id":1}'אם זה מחזיר חשבונות — פרצה קריטית.
מפתחות פרטיים וסודות: ביקורת של ניהול מפתחות פריסה (HSM, AWS KMS), בדיקת קבצי .env בהיסטוריית git, וסיבוב מפתחות בעת עזיבת עובד.
חשיפת פאנל ניהול: מציאת ממשקי ניהול לא מוגנים (Grafana, Jenkins, Kibana), אימות MFA ורשימת היתרים של IP.
מאפייני גשרים ו-Cross-Chain
חוזי גשרים הם הרכיב בסיכון הגבוה ביותר. בדיקות ספציפיות:
- מתקפת replay: החתימה חייבת לכלול chainId ו-nonce ייחודי.
// Уязвимо: нет chainId в подписи
bytes32 hash = keccak256(abi.encode(recipient, amount, nonce));
// Правильно: EIP-712 с chainId
bytes32 hash = keccak256(abi.encode(
BRIDGE_TYPEHASH,
recipient,
amount,
nonce,
block.chainid
)); - ניהול מפתחות ולידטורים: בדיקה כמה מפתחות צריך לפרוץ. ב-Ronin Bridge, הסף האפקטיבי היה 2/2 למרות 9 ולידטורים. אנו מתמודדים עם תרחישים כאלה.
- הנחות סופיות (finality): הגשר חייב לחכות לסופיות הבלוק (עבור Ethereum: 12+ בלוקים, עבור BSC: יותר).
שלבי הביקורת
| שלב | מה אנו עושים | משך זמן לדוגמה |
|---|---|---|
| אנליטיקה | לימוד הארכיטקטורה, זיהוי רכיבים קריטיים | 1-3 ימים |
| ניתוח אוטומטי | הרצת Slither, Mythril, Aderyn, ניתוח דוחות | 1-2 ימים |
| סקירה ידנית | בדיקת קוד מפורטת, לוגיקה עסקית, כלכלה | 3-15 ימים |
| בדיקות | סימולציות Foundry, fuzzing, מתקפות כלכליות | 2-5 ימים |
| כתיבת דוח | תיאור פרצות, PoC, המלצות | 1-2 ימים |
מה כלול בדוח
מבנה הדוח הסופי:
| רמה | תיאור |
|---|---|
| קריטי | אובדן כספים ישיר, ניצול מיידי |
| גבוה | סיכון משמעותי בתנאים מסוימים |
| בינוני | שגיאות לוגיקה, DoS פוטנציאלי |
| נמוך/אינפורמטיבי | שיטות מומלצות, שיפורים |
עבור כל ממצא: תיאור, Proof of Concept (קוד), השפעה פוטנציאלית, המלצות, וסטטוס לאחר התיקון. בנוסף, אנו מספקים רשימת בדיקות וייעוץ לתיקונים.
לוחות זמנים משוערים
בדיקת חדירה מלאה אורכת בין 2 ל-6 שבועות, תלוי במורכבות הפרויקט. העלות מחושבת באופן אישי — צרו קשר להערכת פרויקט. אנו מבטיחים סודיות וחותמים על NDA.
הזמינו ביקורת לפרויקט הקריפטו שלכם כדי לחשוף פרצות שסורקים אוטומטיים מפספסים. קבלו ייעוץ אבטחה — המהנדסים שלנו עם ניסיון של 10+ שנים יעזרו להגן על הכספים שלכם.







