
Nuget स्कैनर
⚠️ कार्य प्रगति पर — परियोजना सक्रिय रूप से विकसित की जा रही है। मुख्य स्कैनिंग इंजन पुनर्निर्माणाधीन है
NuReaper एक .NET 8 बैकएंड API है जो NuGet पैकेजों की सुरक्षा का स्वचालित रूप से विश्लेषण करता है। आप किसी भी NuGet पैकेज का लिंक प्रदान करते हैं, और सिस्टम पुनरावर्ती रूप से उसके पूरे निर्भरता वृक्ष को डाउनलोड करता है, संकलित कोड को डीकंपाइल करता है, और प्रत्येक मेथड को दुर्भावनापूर्ण पैटर्न के लिए स्कैन करता है — एक विस्तृत खतरा रिपोर्ट लौटाता है।
🔍 गैर-तकनीकी पाठकों के लिए: इसे अपने फ़ोन पर ऐप इंस्टॉल करने जैसा समझें। इसके साथ, दर्जनों छोटी लाइब्रेरीज़ स्वचालित रूप से इंस्टॉल हो जाती हैं। NuReaper उनमें से प्रत्येक का निरीक्षण करता है — वास्तविक संकलित बाइनरी कोड को देखते हुए — और पता लगाता है कि क्या उनमें से कोई संदिग्ध सर्वर से कनेक्ट करने, छिपा हुआ कोड निष्पादित करने, या अपने वास्तविक व्यवहार को अस्पष्ट करने का प्रयास करता है।
NuGet पैकेज URL के साथ एक HTTP अनुरोध भेजें, और NuReaper यह करेगा:
.nupkg फ़ाइल प्राप्त करता है और उसका SHA-256 हैश की गणना करता हैइंजन IL (इंटरमीडिएट लैंग्वेज) निर्देश स्तर पर कोड का विश्लेषण करता है और दुर्भावनापूर्ण सॉफ़्टवेयर की विशेषता वाले 7 पैटर्न को पहचानता है:
| # | पैटर्न | विवरण |
|---|---|---|
| 1 | प्रत्यक्ष API कॉल | संदिग्ध स्ट्रिंग तुरंत नेटवर्क कॉल में उपयोग की जाती है |
| 2 | स्ट्रिंग असाइन की गई | URL एक वेरिएबल को सौंपा जाता है, फिर नेटवर्क कॉल में पास किया जाता है |
| 3 | स्ट्रिंग निर्माण | URL को संयोजन द्वारा बनाया जाता है ("http://" + var + "/path") — अस्पष्टता तकनीक |
| 4 | स्ट्रिंग इंटरपोलेशन | URL को इंटरपोलेशन द्वारा इकट्ठा किया जाता है ($"{part1}{part2}") |
| 5 | केवल-चार इंटरपोलेशन | URL को चार ऐरे से चार-दर-चार बनाया जाता है — उन्नत अस्पष्टता |
| 6 | DefaultInterpolatedStringHandler | स्ट्रिंग्स को स्थिर विश्लेषण से छिपाने के लिए उपयोग किया जाने वाला निम्न-स्तरीय इंटरपोलेशन तंत्र |
| 7 | बेयर API कॉल | स्पष्ट स्ट्रिंग्स के बिना प्रत्यक्ष नेटवर्क कॉल (TcpClient.Connect, Socket.Connect, Process.Start) |
Network: HttpClient, WebClient, DNS, TcpClient, WebSocket
Execution: Process.Start, Assembly.Load, Activator.CreateInstance
Low-level: DllImport, VirtualAlloc, CreateThread, NtCreateThreadEx
System: ManagementObjectSearcher (WMI)
String-based: Concatenation, CharArray, Interpolation, StringBuilder
Suspicious: URL, IP address, .onion address, Base64
स्कोरिंग एल्गोरिदम निम्नलिखित को ध्यान में रखता है:
POST /api/PackageScanदिए गए NuGet पैकेज को उसके पूर्ण निर्भरता वृक्ष के साथ स्कैन करता है।
अनुरोध:
{
"url": "https://www.nuget.org/packages/System.Net.Http/4.3.4"
}
प्रतिक्रिया:
{
"rootPackageName": "System.Net.Http",
"rootPackageVersion": "4.3.4",
"totalPackages": 12,
"totalFindingsFromAllPackages": 5,
"threatLevelAllPackages": 47.5,
"scannedTimeAllPackages": "2026-03-25T12:00:00Z",
"packages": [
{
"packageName": "System.Net.Http",
"version": "4.3.4",
"sha256Hash": "abc123...",
"threatLevel": 35.0,
"totalFindings": 3,
"findings": [
{
"type": "HttpClientCall",
"confidenceScore": 95.0,
"dangerLevel": 60.0,
"evidence": "http://example.com/payload",
"location": "MyClass::SendData",
"hopDepth": 0,
"flowTrace": "[Pattern1] Direct API call using string..."
}
]
}
],
"dependencyGraph": {
"rootPackage": "[email protected]",
"nodes": [...],
"edges": [...],
"cycles": [...]
}
}
क्लीन आर्किटेक्चर पर निर्मित, जिसमें चिंताओं का सख्त पृथक्करण है:
NuReaperBackend/
├── NuReaper.Api/ # API layer — controllers, middleware, startup
├── NuReaper.Application/ # Application layer — commands, interfaces, DTOs, validation
├── NuReaper.Domain/ # Domain core — entities, enums, abstractions
├── NuReaper.Infrastructure/ # Implementations — scanners, parsers, repositories
│ └── Repositories/
│ ├── Scanners/ # IL analysis engine
│ │ ├── Analysis/ # ScanModule, ScanMethod, NetworkApiCallScan
│ │ ├── Detectors/ # 7 pattern detectors (Pattern1–Pattern7)
│ │ ├── Patterns/ # PatternRegistry (regex: URL, IP, .onion, Base64)
│ │ ├── RiskCalculation/# Threat scoring algorithm
│ │ ├── Finders/ # Locating API calls within IL instructions
│ │ ├── VariableAnalysis/# Tracking variable values across IL
│ │ └── StringAnalysis/ # Reconstructing strings from fragments
│ ├── Parsers/ # .nuspec file parsing
│ ├── GraphBuilders/ # Dependency graph construction (BFS + recursion)
│ └── FileHelpers/ # Download, extract, SHA-256
└── Docker/
├── Dockerfile
└── docker-compose.yml
| क्षेत्र | प्रौद्योगिकी / पैटर्न |
|---|---|
| आर्किटेक्चर | क्लीन आर्किटेक्चर |
| अंतर-स्तरीय संचार | CQRS + MediatR |
| IL कोड विश्लेषण | dnlib |
| इनपुट सत्यापन | FluentValidation + MediatR Pipeline Behavior |
| ऑब्जेक्ट मैपिंग | AutoMapper |
| लॉगिंग | Serilog (कंसोल + रोलिंग दैनिक फ़ाइल) |
| API दस्तावेज़ीकरण | Swagger / OpenAPI |
| डेटाबेस | Entity Framework Core + MySQL (Pomelo) |
| HTTP | कनेक्शन पूलिंग के साथ IHttpClientFactory |
| कंटेनरीकरण | Docker + Docker Compose |
| परीक्षण | xUnit + Moq |
Package URL
│
▼
DependencyGraphBuilder ← builds dependency graph from .nuspec files
│ (recursion + BFS, cycle detection)
▼
List of unique packages
│
▼ (parallel, SemaphoreSlim — CPU-1 threads)
NetworkApiCallScan per package
├── DownloadPackageAsync ← fetches .nupkg
├── CalculateSha256 ← integrity verification
├── ExtractNupkgAsync ← unpacks the archive
└── GetAssemblyFiles ← lists .dll files
│
▼ (Parallel.ForEachAsync)
ScanModule (per .dll)
│
▼ (Parallel.ForEach — all types and methods)
ScanMethod (per method)
│
▼ (7 pattern detectors)
Pattern1..7 → FindingSummaryDto
│
▼
CalculateThreatLevel ← score 0–100
│
▼
ScanPackageResultResponse
| पैकेज | उद्देश्य |
|---|---|
dnlib | .NET IL डीकंपाइलेशन और विश्लेषण |
MediatR | CQRS — कमांड/क्वेरी पाइपलाइन |
FluentValidation | अनुरोध सत्यापन |
AutoMapper | क्रॉस-लेयर ऑब्जेक्ट मैपिंग |
Serilog | संरचित लॉगिंग |
Pomelo.EntityFrameworkCore.MySql | MySQL ORM |
Swashbuckle.AspNetCore | Swagger UI |
xUnit + Moq | यूनिट परीक्षण |
यह परियोजना PolyForm Noncommercial License 1.0.0 के अंतर्गत उपलब्ध है, व्यावसायिक उपयोग निषिद्ध है। व्यावसायिक लाइसेंसिंग या पूछताछ के लिए संपर्क करें: [email protected]