mboost-dp1
Shutterstock
- Forside
- ⟨
- Forum
- ⟨
- Nyheder
#2
Formentligt mest det første.
Exchange og OWA er rigtigt mange linier kode. Statistisk set er det forventeligt at der er fejl i så stor en kode base. Når systemerne er tilgængeligt via internet (og det er OWA i sagens natur), så kan sikkerhedsfejl nemt udnyttes. Når systemerne indeholder værdifulde oplysninger så er der nogen som vil investere tid og penge i at finde sikkerhedshuller.
Formentligt mest det første.
Exchange og OWA er rigtigt mange linier kode. Statistisk set er det forventeligt at der er fejl i så stor en kode base. Når systemerne er tilgængeligt via internet (og det er OWA i sagens natur), så kan sikkerhedsfejl nemt udnyttes. Når systemerne indeholder værdifulde oplysninger så er der nogen som vil investere tid og penge i at finde sikkerhedshuller.
arne_v (3) skrev:#2
Formentligt mest det første.
Exchange og OWA er rigtigt mange linier kode. Statistisk set er det forventeligt at der er fejl i så stor en kode base. Når systemerne er tilgængeligt via internet (og det er OWA i sagens natur), så kan sikkerhedsfejl nemt udnyttes. Når systemerne indeholder værdifulde oplysninger så er der nogen som vil investere tid og penge i at finde sikkerhedshuller.
Det giver mening. Det vil vel også være utopi at tro at noget som helst system der er koblet på internettet er 100% sikkert?
#4
I teorien kan sådanne systemer godt laves sikre.
I praksis er det mest ved små systemer - ved store systemer slipper der nogle fejl igennem.
For dem som ikke selv programmerer tænk på det her: du sidder med 10 bøger af 500 sider stykket og du skal finde alle stavefejl i dem - hvad er sandsynligheden for at du faktisk finder alle stavefejl? Selvom man staver godt, så slipper der formentligt nogle fejl igennem.
I teorien kan sådanne systemer godt laves sikre.
I praksis er det mest ved små systemer - ved store systemer slipper der nogle fejl igennem.
For dem som ikke selv programmerer tænk på det her: du sidder med 10 bøger af 500 sider stykket og du skal finde alle stavefejl i dem - hvad er sandsynligheden for at du faktisk finder alle stavefejl? Selvom man staver godt, så slipper der formentligt nogle fejl igennem.
#6, #7 derfor findes der automatisk stavekontrol ;)
Moderne programmeringssprog bør kunne forbedre situationen. Utallige svagheder skyldes simple fodfejl som buffer-overruns i C kode. Sprog som rust kan finde den slags compile time.
Det gælder dog ikke alle fejl. Nogle gange laver man bare en tanketorsk i API design der kan udnyttes. Skal ikke kunne sige om det er tilfældet her.
Moderne programmeringssprog bør kunne forbedre situationen. Utallige svagheder skyldes simple fodfejl som buffer-overruns i C kode. Sprog som rust kan finde den slags compile time.
Det gælder dog ikke alle fejl. Nogle gange laver man bare en tanketorsk i API design der kan udnyttes. Skal ikke kunne sige om det er tilfældet her.
larsp (8) skrev:#6, #7 derfor findes der automatisk stavekontrol ;)
Moderne programmeringssprog bør kunne forbedre situationen. Utallige svagheder skyldes simple fodfejl som buffer-overruns i C kode. Sprog som rust kan finde den slags compile time.
Det gælder dog ikke alle fejl. Nogle gange laver man bare en tanketorsk i API design der kan udnyttes. Skal ikke kunne sige om det er tilfældet her.
Men selv med automatisk stavekontrol, er der stadig _ALT_ for mange fejl. En fejl er jo en fejl, selvom den er lille ... punktum, komma, etc.
Og ja, der er sikkert også fejl i vores sætninger :-)
Du skriver du selv så pænt her ... "forbedre", men ikke fjerne ...
Og ja, det er uden tvivl ting lavet på en mandag :-)
larsp (8) skrev:
#6, #7 derfor findes der automatisk stavekontrol ;)
Og det ækvivalente er automatic static og dynamic code analysis.
Men det finder ikke alt.
larsp (8) skrev:
Moderne programmeringssprog bør kunne forbedre situationen. Utallige svagheder skyldes simple fodfejl som buffer-overruns i C kode. Sprog som rust kan finde den slags compile time.
Korrekt.
Men udfra CVE'erne lyder det dog ikke som om Rust vill have hjulpet her.
CVE-2021-26855: CVSS 9.1: a Server Side Request Forgery (SSRF) vulnerability leading to crafted HTTP requests being sent by unauthenticated attackers. Servers need to be able to accept untrusted connections over port 443 for the bug to be triggered.
CVE-2021-26857: CVSS 7.8: an insecure deserialization vulnerability in the Exchange Unified Messaging Service, allowing arbitrary code deployment under SYSTEM. However, this vulnerability needs to be combined with another or stolen credentials must be used.
CVE-2021-26858: CVSS 7.8: a post-authentication arbitrary file write vulnerability to write to paths.
CVE-2021-27065: CVSS 7.8: a post-authentication arbitrary file write vulnerability to write to paths.
larsp (8) skrev:
Det gælder dog ikke alle fejl. Nogle gange laver man bare en tanketorsk i API design der kan udnyttes. Skal ikke kunne sige om det er tilfældet her.
Problemet er stadigvæk mængden af kode.
Jeg ved ikke om Exchange+OWA er 1 MLOC eller 10 MLOC, men den gamle tommelfinger regel om 1 fejl per 1000 linier kode vil betyde henholdsvis 1000 og 10000 fejl med de kode størrelser.
Mange fejl blev fundet i test. Mange fejl er fundet af kunderne gennem årene. Ikke alle fejl er sikkerhedsrelateret. Men det er ikke vildt overraskende at der er noget tilbage.
#13
Alle har vel hørt om buffer overflow og SQL injection, men måske er der nogen som ikke kender deserialization problematikken.
Ser den her kode sikker ud:
?
Det er den ikke.
:-)
C:\Work\serrisk>csc read.cs
Microsoft (R) Visual C# Compiler version 3.8.0-5.20519.18 (4c195c3a)
Copyright (C) Microsoft Corporation. All rights reserved.
C:\Work\serrisk>read
Maybe I should have deleted some files 1
Maybe I should have deleted some files 3
Alle har vel hørt om buffer overflow og SQL injection, men måske er der nogen som ikke kender deserialization problematikken.
Ser den her kode sikker ud:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace Read
{
public class Program
{
public static void Main(string[] args)
{
BinaryFormatter binser = new BinaryFormatter();
using(Stream f = new FileStream("o.bin", FileMode.Open, FileAccess.Read))
{
object o = binser.Deserialize(f);
}
}
}
}
?
Det er den ikke.
:-)
C:\Work\serrisk>csc read.cs
Microsoft (R) Visual C# Compiler version 3.8.0-5.20519.18 (4c195c3a)
Copyright (C) Microsoft Corporation. All rights reserved.
C:\Work\serrisk>read
Maybe I should have deleted some files 1
Maybe I should have deleted some files 3
using System;
using System.Runtime.Serialization;
namespace SomeLib
{
[Serializable]
public class SomeClass : IDeserializationCallback
{
public string S { get; set; }
static SomeClass()
{
Console.WriteLine("Maybe I should have deleted some files 1");
}
public SomeClass()
{
Console.WriteLine("Maybe I should have deleted some files 2");
}
void IDeserializationCallback.OnDeserialization(Object sender)
{
Console.WriteLine("Maybe I should have deleted some files 3");
}
}
}
#14
Det er ikke nogen hemmelighed.
MS er ret klare i docs.
https://docs.microsoft.com/en-us/dotnet/standard/s...
Men mit gæt er at ikke alle har læst det!!
Det er ikke nogen hemmelighed.
MS er ret klare i docs.
https://docs.microsoft.com/en-us/dotnet/standard/s...
Warning
The BinaryFormatter type is dangerous and is not recommended for data processing. Applications should stop using BinaryFormatter as soon as possible, even if they believe the data they're processing to be trustworthy. BinaryFormatter is insecure and can't be made secure.
...
Warning
The BinaryFormatter.Deserialize method is never safe when used with untrusted input. We strongly recommend that consumers instead consider using one of the alternatives outlined later in this article.
Men mit gæt er at ikke alle har læst det!!
Sandsynligvis en del mere end 10 MLOC.arne_v (12) skrev:Jeg ved ikke om Exchange+OWA er 1 MLOC eller 10 MLOC, men den gamle tommelfinger regel om 1 fejl per 1000 linier kode vil betyde henholdsvis 1000 og 10000 fejl med de kode størrelser.
Det er et 24 år gammel product, hvilket betyder at kodenbasen er tættere på 30 år gammel.
Og Microsoft har ikke tradition for at rydde op i gammel kode.
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.